@needle-tools/engine 4.11.5-next.d95d573 → 4.11.5-next.dedc70b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/components.needle.json +1 -1
  2. package/custom-elements.json +436 -0
  3. package/dist/generateMeshBVH.worker-mO20N_b8.js +21 -0
  4. package/dist/{gltf-progressive-GwdQV1Qx.umd.cjs → gltf-progressive-DWcmTMCh.umd.cjs} +1 -1
  5. package/dist/{gltf-progressive-CftVUJy3.min.js → gltf-progressive-DZrY8VT6.min.js} +2 -2
  6. package/dist/{gltf-progressive-BvlZQAkt.js → gltf-progressive-DgYz5BYa.js} +19 -19
  7. package/dist/loader.worker-Dip-PthR.js +23 -0
  8. package/dist/{needle-engine.bundle-D68OTj0O.min.js → needle-engine.bundle-CJlEyOBM.min.js} +130 -135
  9. package/dist/{needle-engine.bundle-DYcVfok9.umd.cjs → needle-engine.bundle-DgiVW9bH.umd.cjs} +138 -143
  10. package/dist/{needle-engine.bundle-By_B1saf.js → needle-engine.bundle-F4gDjlNg.js} +4361 -4238
  11. package/dist/needle-engine.d.ts +18154 -1
  12. package/dist/needle-engine.js +336 -335
  13. package/dist/needle-engine.min.js +1 -1
  14. package/dist/needle-engine.umd.cjs +1 -1
  15. package/dist/{postprocessing-CJC0Npcd.js → postprocessing-BTW9pD_s.js} +1822 -1723
  16. package/dist/{postprocessing-DrM4PWU3.umd.cjs → postprocessing-CMgoN5t5.umd.cjs} +229 -158
  17. package/dist/{postprocessing-l7zsdO_Q.min.js → postprocessing-DYDtB188.min.js} +227 -156
  18. package/dist/rapier-B3oL1ap-.js +5217 -0
  19. package/dist/rapier-DJ-luMxr.min.js +1 -0
  20. package/dist/rapier-DQltNJbN.umd.cjs +1 -0
  21. package/dist/{three-BDW9I486.min.js → three-B7CT31Bt.min.js} +1 -5
  22. package/dist/{three-MHVqtJYj.js → three-DfMvBzXi.js} +0 -5
  23. package/dist/{three-examples-CgwGHSgz.umd.cjs → three-examples-CsW4_6LI.umd.cjs} +2 -7
  24. package/dist/{three-examples-fvEPSC8L.min.js → three-examples-D1P7eEhn.min.js} +2 -7
  25. package/dist/{three-examples-C5Ht-QFN.js → three-examples-D1SK93ek.js} +1 -7
  26. package/dist/{three-mesh-ui-BjWTTk1R.js → three-mesh-ui-C_uSB5dD.js} +1 -1
  27. package/dist/{three-mesh-ui-Bm32sS2a.umd.cjs → three-mesh-ui-DpATDXwU.umd.cjs} +1 -1
  28. package/dist/{three-mesh-ui-CLdkp21K.min.js → three-mesh-ui-LQ44s0AL.min.js} +1 -1
  29. package/dist/{three-iFaDq9U3.umd.cjs → three-qj71I7J3.umd.cjs} +2 -6
  30. package/dist/{vendor-CsyK1CFs.min.js → vendor-BKGa4GE0.min.js} +34 -39
  31. package/dist/{vendor-petGQl0N.js → vendor-D0zoswDa.js} +1626 -1605
  32. package/dist/{vendor-6kAXU6fm.umd.cjs → vendor-UCpFAwt1.umd.cjs} +30 -35
  33. package/lib/engine/api.d.ts +0 -1
  34. package/lib/engine/api.js +0 -1
  35. package/lib/engine/api.js.map +1 -1
  36. package/lib/engine/debug/debug_spector.d.ts +16 -0
  37. package/lib/engine/debug/debug_spector.js +28 -0
  38. package/lib/engine/debug/debug_spector.js.map +1 -0
  39. package/lib/engine/engine_application.d.ts +7 -0
  40. package/lib/engine/engine_application.js +8 -1
  41. package/lib/engine/engine_application.js.map +1 -1
  42. package/lib/engine/engine_context.js +4 -1
  43. package/lib/engine/engine_context.js.map +1 -1
  44. package/lib/engine/engine_physics.js +6 -2
  45. package/lib/engine/engine_physics.js.map +1 -1
  46. package/lib/engine/engine_physics_rapier.d.ts +11 -2
  47. package/lib/engine/engine_physics_rapier.js +9 -0
  48. package/lib/engine/engine_physics_rapier.js.map +1 -1
  49. package/lib/engine/engine_texture.d.ts +1 -1
  50. package/lib/engine/engine_tonemapping.d.ts +1 -1
  51. package/lib/engine/engine_types.d.ts +16 -0
  52. package/lib/engine/engine_typestore.d.ts +1 -0
  53. package/lib/engine/engine_typestore.js +5 -6
  54. package/lib/engine/engine_typestore.js.map +1 -1
  55. package/lib/engine/webcomponents/logo-element.d.ts +11 -0
  56. package/lib/engine/webcomponents/logo-element.js +6 -0
  57. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  58. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +24 -3
  59. package/lib/engine/webcomponents/needle menu/needle-menu.js +18 -3
  60. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  61. package/lib/engine/webcomponents/needle-button.d.ts +5 -0
  62. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  63. package/lib/engine/webcomponents/needle-engine.d.ts +210 -8
  64. package/lib/engine/webcomponents/needle-engine.js +94 -13
  65. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  66. package/lib/engine-components/AlignmentConstraint.d.ts +9 -0
  67. package/lib/engine-components/AlignmentConstraint.js +9 -0
  68. package/lib/engine-components/AlignmentConstraint.js.map +1 -1
  69. package/lib/engine-components/Animator.d.ts +1 -0
  70. package/lib/engine-components/Animator.js.map +1 -1
  71. package/lib/engine-components/AudioListener.d.ts +2 -0
  72. package/lib/engine-components/AudioListener.js +2 -0
  73. package/lib/engine-components/AudioListener.js.map +1 -1
  74. package/lib/engine-components/AudioSource.d.ts +1 -0
  75. package/lib/engine-components/AudioSource.js +1 -0
  76. package/lib/engine-components/AudioSource.js.map +1 -1
  77. package/lib/engine-components/AxesHelper.d.ts +2 -0
  78. package/lib/engine-components/AxesHelper.js +2 -0
  79. package/lib/engine-components/AxesHelper.js.map +1 -1
  80. package/lib/engine-components/Camera.d.ts +1 -0
  81. package/lib/engine-components/Camera.js +1 -0
  82. package/lib/engine-components/Camera.js.map +1 -1
  83. package/lib/engine-components/CharacterController.d.ts +4 -1
  84. package/lib/engine-components/CharacterController.js +4 -1
  85. package/lib/engine-components/CharacterController.js.map +1 -1
  86. package/lib/engine-components/Component.d.ts +5 -0
  87. package/lib/engine-components/Component.js +7 -0
  88. package/lib/engine-components/Component.js.map +1 -1
  89. package/lib/engine-components/DeleteBox.d.ts +2 -0
  90. package/lib/engine-components/DeleteBox.js +2 -0
  91. package/lib/engine-components/DeleteBox.js.map +1 -1
  92. package/lib/engine-components/DeviceFlag.d.ts +4 -0
  93. package/lib/engine-components/DeviceFlag.js +4 -0
  94. package/lib/engine-components/DeviceFlag.js.map +1 -1
  95. package/lib/engine-components/DragControls.d.ts +1 -0
  96. package/lib/engine-components/DragControls.js +1 -0
  97. package/lib/engine-components/DragControls.js.map +1 -1
  98. package/lib/engine-components/DropListener.d.ts +1 -0
  99. package/lib/engine-components/DropListener.js +1 -0
  100. package/lib/engine-components/DropListener.js.map +1 -1
  101. package/lib/engine-components/Duplicatable.d.ts +1 -0
  102. package/lib/engine-components/Duplicatable.js +1 -0
  103. package/lib/engine-components/Duplicatable.js.map +1 -1
  104. package/lib/engine-components/EventTrigger.d.ts +2 -0
  105. package/lib/engine-components/EventTrigger.js +2 -0
  106. package/lib/engine-components/EventTrigger.js.map +1 -1
  107. package/lib/engine-components/GridHelper.d.ts +2 -0
  108. package/lib/engine-components/GridHelper.js +2 -0
  109. package/lib/engine-components/GridHelper.js.map +1 -1
  110. package/lib/engine-components/GroundProjection.d.ts +1 -0
  111. package/lib/engine-components/GroundProjection.js +1 -0
  112. package/lib/engine-components/GroundProjection.js.map +1 -1
  113. package/lib/engine-components/LODGroup.d.ts +2 -0
  114. package/lib/engine-components/LODGroup.js +2 -0
  115. package/lib/engine-components/LODGroup.js.map +1 -1
  116. package/lib/engine-components/Light.d.ts +1 -0
  117. package/lib/engine-components/Light.js +1 -0
  118. package/lib/engine-components/Light.js.map +1 -1
  119. package/lib/engine-components/LookAtConstraint.d.ts +1 -0
  120. package/lib/engine-components/LookAtConstraint.js +1 -0
  121. package/lib/engine-components/LookAtConstraint.js.map +1 -1
  122. package/lib/engine-components/NeedleMenu.d.ts +1 -0
  123. package/lib/engine-components/NeedleMenu.js +1 -0
  124. package/lib/engine-components/NeedleMenu.js.map +1 -1
  125. package/lib/engine-components/NestedGltf.d.ts +1 -0
  126. package/lib/engine-components/NestedGltf.js +1 -0
  127. package/lib/engine-components/NestedGltf.js.map +1 -1
  128. package/lib/engine-components/Networking.d.ts +1 -0
  129. package/lib/engine-components/Networking.js +1 -0
  130. package/lib/engine-components/Networking.js.map +1 -1
  131. package/lib/engine-components/OffsetConstraint.d.ts +7 -0
  132. package/lib/engine-components/OffsetConstraint.js +7 -0
  133. package/lib/engine-components/OffsetConstraint.js.map +1 -1
  134. package/lib/engine-components/OrbitControls.d.ts +1 -0
  135. package/lib/engine-components/OrbitControls.js +1 -0
  136. package/lib/engine-components/OrbitControls.js.map +1 -1
  137. package/lib/engine-components/PlayerColor.d.ts +2 -0
  138. package/lib/engine-components/PlayerColor.js +2 -0
  139. package/lib/engine-components/PlayerColor.js.map +1 -1
  140. package/lib/engine-components/ReflectionProbe.d.ts +1 -0
  141. package/lib/engine-components/ReflectionProbe.js +1 -0
  142. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  143. package/lib/engine-components/RendererInstancing.d.ts +5 -3
  144. package/lib/engine-components/RendererInstancing.js +64 -31
  145. package/lib/engine-components/RendererInstancing.js.map +1 -1
  146. package/lib/engine-components/RigidBody.d.ts +1 -0
  147. package/lib/engine-components/RigidBody.js +1 -0
  148. package/lib/engine-components/RigidBody.js.map +1 -1
  149. package/lib/engine-components/SceneSwitcher.d.ts +1 -0
  150. package/lib/engine-components/SceneSwitcher.js +1 -0
  151. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  152. package/lib/engine-components/ScreenCapture.d.ts +1 -0
  153. package/lib/engine-components/ScreenCapture.js +1 -0
  154. package/lib/engine-components/ScreenCapture.js.map +1 -1
  155. package/lib/engine-components/SeeThrough.d.ts +1 -0
  156. package/lib/engine-components/SeeThrough.js +1 -0
  157. package/lib/engine-components/SeeThrough.js.map +1 -1
  158. package/lib/engine-components/ShadowCatcher.d.ts +2 -0
  159. package/lib/engine-components/ShadowCatcher.js +2 -0
  160. package/lib/engine-components/ShadowCatcher.js.map +1 -1
  161. package/lib/engine-components/Skybox.d.ts +16 -5
  162. package/lib/engine-components/Skybox.js +38 -25
  163. package/lib/engine-components/Skybox.js.map +1 -1
  164. package/lib/engine-components/SmoothFollow.d.ts +1 -0
  165. package/lib/engine-components/SmoothFollow.js +1 -0
  166. package/lib/engine-components/SmoothFollow.js.map +1 -1
  167. package/lib/engine-components/SpatialTrigger.d.ts +1 -0
  168. package/lib/engine-components/SpatialTrigger.js +1 -0
  169. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  170. package/lib/engine-components/SpectatorCamera.d.ts +1 -0
  171. package/lib/engine-components/SpectatorCamera.js +1 -0
  172. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  173. package/lib/engine-components/SpriteRenderer.d.ts +1 -0
  174. package/lib/engine-components/SpriteRenderer.js +1 -0
  175. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  176. package/lib/engine-components/SyncedCamera.d.ts +2 -0
  177. package/lib/engine-components/SyncedCamera.js +2 -0
  178. package/lib/engine-components/SyncedCamera.js.map +1 -1
  179. package/lib/engine-components/SyncedRoom.d.ts +1 -0
  180. package/lib/engine-components/SyncedRoom.js +1 -0
  181. package/lib/engine-components/SyncedRoom.js.map +1 -1
  182. package/lib/engine-components/SyncedTransform.d.ts +2 -0
  183. package/lib/engine-components/SyncedTransform.js +2 -0
  184. package/lib/engine-components/SyncedTransform.js.map +1 -1
  185. package/lib/engine-components/TransformGizmo.d.ts +2 -0
  186. package/lib/engine-components/TransformGizmo.js +2 -0
  187. package/lib/engine-components/TransformGizmo.js.map +1 -1
  188. package/lib/engine-components/VideoPlayer.d.ts +1 -0
  189. package/lib/engine-components/VideoPlayer.js +1 -0
  190. package/lib/engine-components/VideoPlayer.js.map +1 -1
  191. package/lib/engine-components/Voip.d.ts +1 -0
  192. package/lib/engine-components/Voip.js +1 -0
  193. package/lib/engine-components/Voip.js.map +1 -1
  194. package/lib/engine-components/export/usdz/USDZExporter.d.ts +24 -3
  195. package/lib/engine-components/export/usdz/USDZExporter.js +36 -2
  196. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  197. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +18 -0
  198. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +18 -0
  199. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -1
  200. package/lib/engine-components/particlesystem/ParticleSystem.d.ts +1 -0
  201. package/lib/engine-components/particlesystem/ParticleSystem.js +1 -0
  202. package/lib/engine-components/particlesystem/ParticleSystem.js.map +1 -1
  203. package/lib/engine-components/physics/Attractor.d.ts +3 -0
  204. package/lib/engine-components/physics/Attractor.js +3 -0
  205. package/lib/engine-components/physics/Attractor.js.map +1 -1
  206. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +1 -0
  207. package/lib/engine-components/postprocessing/Effects/BloomEffect.js +1 -0
  208. package/lib/engine-components/postprocessing/Effects/BloomEffect.js.map +1 -1
  209. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +4 -0
  210. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +4 -0
  211. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js.map +1 -1
  212. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +3 -0
  213. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +3 -0
  214. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
  215. package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +4 -0
  216. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +4 -0
  217. package/lib/engine-components/postprocessing/Effects/DepthOfField.js.map +1 -1
  218. package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +1 -0
  219. package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +1 -0
  220. package/lib/engine-components/postprocessing/Effects/EffectWrapper.js.map +1 -1
  221. package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +3 -0
  222. package/lib/engine-components/postprocessing/Effects/Pixelation.js +3 -0
  223. package/lib/engine-components/postprocessing/Effects/Pixelation.js.map +1 -1
  224. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +4 -0
  225. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +4 -0
  226. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js.map +1 -1
  227. package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +4 -0
  228. package/lib/engine-components/postprocessing/Effects/Sharpening.js +4 -0
  229. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  230. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +4 -0
  231. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +4 -0
  232. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js.map +1 -1
  233. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +4 -0
  234. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +4 -0
  235. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  236. package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +4 -0
  237. package/lib/engine-components/postprocessing/Effects/Vignette.js +4 -0
  238. package/lib/engine-components/postprocessing/Effects/Vignette.js.map +1 -1
  239. package/lib/engine-components/postprocessing/Volume.d.ts +1 -0
  240. package/lib/engine-components/postprocessing/Volume.js +1 -0
  241. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  242. package/lib/engine-components/splines/Spline.d.ts +1 -0
  243. package/lib/engine-components/splines/Spline.js +1 -0
  244. package/lib/engine-components/splines/Spline.js.map +1 -1
  245. package/lib/engine-components/splines/SplineWalker.d.ts +1 -0
  246. package/lib/engine-components/splines/SplineWalker.js +1 -0
  247. package/lib/engine-components/splines/SplineWalker.js.map +1 -1
  248. package/lib/engine-components/timeline/PlayableDirector.d.ts +1 -0
  249. package/lib/engine-components/timeline/PlayableDirector.js +1 -0
  250. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  251. package/lib/engine-components/timeline/SignalAsset.d.ts +1 -0
  252. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  253. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  254. package/lib/engine-components/ui/Button.d.ts +4 -0
  255. package/lib/engine-components/ui/Button.js +4 -0
  256. package/lib/engine-components/ui/Button.js.map +1 -1
  257. package/lib/engine-components/ui/Canvas.d.ts +5 -0
  258. package/lib/engine-components/ui/Canvas.js +5 -0
  259. package/lib/engine-components/ui/Canvas.js.map +1 -1
  260. package/lib/engine-components/ui/CanvasGroup.d.ts +4 -0
  261. package/lib/engine-components/ui/CanvasGroup.js +4 -0
  262. package/lib/engine-components/ui/CanvasGroup.js.map +1 -1
  263. package/lib/engine-components/ui/EventSystem.d.ts +2 -0
  264. package/lib/engine-components/ui/EventSystem.js +2 -0
  265. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  266. package/lib/engine-components/ui/Image.d.ts +4 -0
  267. package/lib/engine-components/ui/Image.js +4 -0
  268. package/lib/engine-components/ui/Image.js.map +1 -1
  269. package/lib/engine-components/ui/InputField.d.ts +4 -0
  270. package/lib/engine-components/ui/InputField.js +4 -0
  271. package/lib/engine-components/ui/InputField.js.map +1 -1
  272. package/lib/engine-components/ui/Outline.d.ts +7 -0
  273. package/lib/engine-components/ui/Outline.js +7 -0
  274. package/lib/engine-components/ui/Outline.js.map +1 -1
  275. package/lib/engine-components/ui/Text.d.ts +1 -0
  276. package/lib/engine-components/ui/Text.js +1 -0
  277. package/lib/engine-components/ui/Text.js.map +1 -1
  278. package/lib/engine-components/utils/LookAt.d.ts +1 -0
  279. package/lib/engine-components/utils/LookAt.js +1 -0
  280. package/lib/engine-components/utils/LookAt.js.map +1 -1
  281. package/lib/engine-components/web/Clickthrough.d.ts +1 -1
  282. package/lib/engine-components/web/Clickthrough.js +1 -1
  283. package/lib/engine-components/web/CursorFollow.d.ts +2 -0
  284. package/lib/engine-components/web/CursorFollow.js +3 -0
  285. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  286. package/lib/engine-components/web/HoverAnimation.d.ts +1 -0
  287. package/lib/engine-components/web/HoverAnimation.js +1 -0
  288. package/lib/engine-components/web/HoverAnimation.js.map +1 -1
  289. package/lib/engine-components/web/ScrollFollow.d.ts +2 -0
  290. package/lib/engine-components/web/ScrollFollow.js +2 -0
  291. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  292. package/lib/engine-components/web/ViewBox.d.ts +1 -0
  293. package/lib/engine-components/web/ViewBox.js +1 -0
  294. package/lib/engine-components/web/ViewBox.js.map +1 -1
  295. package/lib/engine-components/webxr/Avatar.d.ts +5 -0
  296. package/lib/engine-components/webxr/Avatar.js +5 -0
  297. package/lib/engine-components/webxr/Avatar.js.map +1 -1
  298. package/lib/engine-components/webxr/WebARCameraBackground.d.ts +1 -0
  299. package/lib/engine-components/webxr/WebARCameraBackground.js +1 -0
  300. package/lib/engine-components/webxr/WebARCameraBackground.js.map +1 -1
  301. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +1 -0
  302. package/lib/engine-components/webxr/WebARSessionRoot.js +1 -0
  303. package/lib/engine-components/webxr/WebARSessionRoot.js.map +1 -1
  304. package/lib/engine-components/webxr/WebXR.d.ts +1 -1
  305. package/lib/engine-components/webxr/WebXR.js +1 -1
  306. package/lib/engine-components/webxr/controllers/XRControllerFollow.d.ts +1 -0
  307. package/lib/engine-components/webxr/controllers/XRControllerFollow.js +1 -0
  308. package/lib/engine-components/webxr/controllers/XRControllerFollow.js.map +1 -1
  309. package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +4 -0
  310. package/lib/engine-components/webxr/controllers/XRControllerModel.js +4 -0
  311. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  312. package/lib/engine-components/webxr/controllers/XRControllerMovement.d.ts +1 -0
  313. package/lib/engine-components/webxr/controllers/XRControllerMovement.js +1 -0
  314. package/lib/engine-components/webxr/controllers/XRControllerMovement.js.map +1 -1
  315. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +2 -0
  316. package/lib/engine-components-experimental/networking/PlayerSync.js +2 -0
  317. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  318. package/lib/needle-engine.js +2 -1
  319. package/lib/needle-engine.js.map +1 -1
  320. package/package.json +19 -12
  321. package/plugins/types/needleConfig.d.ts +1 -1
  322. package/plugins/types/next.d.ts +1 -1
  323. package/plugins/types/userconfig.d.ts +4 -1
  324. package/plugins/vite/custom-element-data.js +80 -0
  325. package/plugins/vite/index.js +4 -0
  326. package/src/engine/api.ts +0 -1
  327. package/src/engine/debug/debug_spector.ts +43 -0
  328. package/src/engine/engine_application.ts +16 -1
  329. package/src/engine/engine_context.ts +5 -1
  330. package/src/engine/engine_physics.ts +6 -2
  331. package/src/engine/engine_physics_rapier.ts +11 -2
  332. package/src/engine/engine_texture.ts +1 -1
  333. package/src/engine/engine_tonemapping.ts +1 -1
  334. package/src/engine/engine_types.ts +17 -0
  335. package/src/engine/engine_typestore.ts +5 -6
  336. package/src/engine/webcomponents/logo-element.ts +12 -0
  337. package/src/engine/webcomponents/needle menu/needle-menu.ts +24 -3
  338. package/src/engine/webcomponents/needle-button.ts +6 -0
  339. package/src/engine/webcomponents/needle-engine.ts +321 -22
  340. package/src/engine-components/AlignmentConstraint.ts +9 -0
  341. package/src/engine-components/Animator.ts +1 -0
  342. package/src/engine-components/AudioListener.ts +2 -0
  343. package/src/engine-components/AudioSource.ts +1 -0
  344. package/src/engine-components/AxesHelper.ts +2 -0
  345. package/src/engine-components/Camera.ts +1 -0
  346. package/src/engine-components/CharacterController.ts +4 -1
  347. package/src/engine-components/Component.ts +9 -1
  348. package/src/engine-components/DeleteBox.ts +2 -0
  349. package/src/engine-components/DeviceFlag.ts +4 -0
  350. package/src/engine-components/DragControls.ts +1 -0
  351. package/src/engine-components/DropListener.ts +1 -0
  352. package/src/engine-components/Duplicatable.ts +1 -0
  353. package/src/engine-components/EventTrigger.ts +2 -0
  354. package/src/engine-components/GridHelper.ts +2 -0
  355. package/src/engine-components/GroundProjection.ts +1 -0
  356. package/src/engine-components/LODGroup.ts +2 -0
  357. package/src/engine-components/Light.ts +1 -0
  358. package/src/engine-components/LookAtConstraint.ts +1 -0
  359. package/src/engine-components/NeedleMenu.ts +1 -0
  360. package/src/engine-components/NestedGltf.ts +1 -0
  361. package/src/engine-components/Networking.ts +1 -0
  362. package/src/engine-components/OffsetConstraint.ts +7 -0
  363. package/src/engine-components/OrbitControls.ts +1 -0
  364. package/src/engine-components/PlayerColor.ts +2 -0
  365. package/src/engine-components/ReflectionProbe.ts +1 -0
  366. package/src/engine-components/RendererInstancing.ts +69 -33
  367. package/src/engine-components/RigidBody.ts +1 -0
  368. package/src/engine-components/SceneSwitcher.ts +1 -0
  369. package/src/engine-components/ScreenCapture.ts +1 -0
  370. package/src/engine-components/SeeThrough.ts +1 -0
  371. package/src/engine-components/ShadowCatcher.ts +2 -0
  372. package/src/engine-components/Skybox.ts +48 -36
  373. package/src/engine-components/SmoothFollow.ts +1 -0
  374. package/src/engine-components/SpatialTrigger.ts +1 -0
  375. package/src/engine-components/SpectatorCamera.ts +1 -0
  376. package/src/engine-components/SpriteRenderer.ts +1 -0
  377. package/src/engine-components/SyncedCamera.ts +2 -0
  378. package/src/engine-components/SyncedRoom.ts +1 -0
  379. package/src/engine-components/SyncedTransform.ts +2 -0
  380. package/src/engine-components/TransformGizmo.ts +2 -0
  381. package/src/engine-components/VideoPlayer.ts +1 -0
  382. package/src/engine-components/Voip.ts +1 -0
  383. package/src/engine-components/export/usdz/USDZExporter.ts +52 -5
  384. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +18 -0
  385. package/src/engine-components/particlesystem/ParticleSystem.ts +1 -0
  386. package/src/engine-components/physics/Attractor.ts +3 -0
  387. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +1 -0
  388. package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +4 -0
  389. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +3 -0
  390. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +4 -0
  391. package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +1 -0
  392. package/src/engine-components/postprocessing/Effects/Pixelation.ts +3 -0
  393. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +4 -0
  394. package/src/engine-components/postprocessing/Effects/Sharpening.ts +4 -0
  395. package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +4 -0
  396. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +4 -0
  397. package/src/engine-components/postprocessing/Effects/Vignette.ts +4 -0
  398. package/src/engine-components/postprocessing/Volume.ts +1 -0
  399. package/src/engine-components/splines/Spline.ts +1 -0
  400. package/src/engine-components/splines/SplineWalker.ts +1 -0
  401. package/src/engine-components/timeline/PlayableDirector.ts +1 -0
  402. package/src/engine-components/timeline/SignalAsset.ts +1 -0
  403. package/src/engine-components/ui/Button.ts +4 -0
  404. package/src/engine-components/ui/Canvas.ts +5 -0
  405. package/src/engine-components/ui/CanvasGroup.ts +4 -0
  406. package/src/engine-components/ui/EventSystem.ts +2 -0
  407. package/src/engine-components/ui/Image.ts +4 -0
  408. package/src/engine-components/ui/InputField.ts +4 -0
  409. package/src/engine-components/ui/Outline.ts +7 -0
  410. package/src/engine-components/ui/Text.ts +1 -0
  411. package/src/engine-components/utils/LookAt.ts +1 -0
  412. package/src/engine-components/web/Clickthrough.ts +1 -1
  413. package/src/engine-components/web/CursorFollow.ts +4 -0
  414. package/src/engine-components/web/HoverAnimation.ts +1 -0
  415. package/src/engine-components/web/ScrollFollow.ts +2 -0
  416. package/src/engine-components/web/ViewBox.ts +1 -0
  417. package/src/engine-components/webxr/Avatar.ts +5 -0
  418. package/src/engine-components/webxr/WebARCameraBackground.ts +1 -0
  419. package/src/engine-components/webxr/WebARSessionRoot.ts +1 -0
  420. package/src/engine-components/webxr/WebXR.ts +1 -1
  421. package/src/engine-components/webxr/controllers/XRControllerFollow.ts +1 -0
  422. package/src/engine-components/webxr/controllers/XRControllerModel.ts +4 -0
  423. package/src/engine-components/webxr/controllers/XRControllerMovement.ts +1 -0
  424. package/src/engine-components-experimental/networking/PlayerSync.ts +2 -0
  425. package/src/needle-engine.ts +4 -2
  426. package/dist/generateMeshBVH.worker-B9bjdr6J.js +0 -25
  427. package/dist/loader.worker-CiTwpNPW.js +0 -27
  428. package/dist/rapier-BqdcSmKY.umd.cjs +0 -1
  429. package/dist/rapier-Cg3w3nFI.min.js +0 -1
  430. package/dist/rapier-sU12SWAs.js +0 -5217
  431. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +0 -70
  432. package/lib/engine/webcomponents/needle-engine.attributes.js +0 -2
  433. package/lib/engine/webcomponents/needle-engine.attributes.js.map +0 -1
  434. package/src/engine/webcomponents/needle-engine.attributes.ts +0 -85
@@ -1,4 +1,4 @@
1
- "use strict";const r=require("./three-iFaDq9U3.umd.cjs");class Qo extends r.Mesh{constructor(e,t,s,n=128){if(t<=0||s<=0||n<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const i=new r.SphereGeometry(s,2*n,n);i.scale(1,1,-1);const o=i.getAttribute("position"),a=new r.Vector3;for(let A=0;A<o.count;++A)if(a.fromBufferAttribute(o,A),a.y<0){const l=-t*3/2,h=a.y<l?-t/a.y:1-a.y*a.y/(3*l*l);a.multiplyScalar(h),a.toArray(o.array,3*A)}o.needsUpdate=!0,super(i,new r.MeshBasicMaterial({map:e,depthWrite:!1}))}}class be extends r.Node{constructor(e){super(e.nodeType),this.node=null,this.source=null,this.target=null,this.inclusionType="replace",Object.assign(this,e)}generate(e){return this.node.build(e,this.getNodeType(e))}}const Ue=new r.NodeFrame;Ue.camera=new r.PerspectiveCamera;const us={LineBasicNodeMaterial:r.ShaderLib.basic,MeshBasicNodeMaterial:r.ShaderLib.basic,PointsNodeMaterial:r.ShaderLib.points,MeshStandardNodeMaterial:r.ShaderLib.standard,MeshPhysicalNodeMaterial:r.ShaderLib.physical,MeshPhongNodeMaterial:r.ShaderLib.phong},xo={atan2:"atan"},So={low:"lowp",medium:"mediump",high:"highp"};function ut(c){return`#include <${c}>`}function Ft(c){return`${c}Shader`}class To extends r.NodeBuilder{constructor(e,t,s,n=null){super(e,t,new r.GLSLNodeParser,null,n),this.shader=s,this.slots={vertex:[],fragment:[]},this._parseShaderLib(),this._parseInclude("fragment","lights_physical_fragment","clearcoat_normal_fragment_begin","transmission_fragment"),this._parseObject(),this._sortSlotsToFlow(),this.useComparisonMethod=!0}getMethod(e){return xo[e]||e}addSlot(e,t){this.slots[e].push(t)}_parseShaderLib(){const e=this.material;let t=e.type;if(e.isMeshPhysicalNodeMaterial?t="MeshPhysicalNodeMaterial":e.isMeshStandardNodeMaterial?t="MeshStandardNodeMaterial":e.isMeshPhongNodeMaterial?t="MeshPhongNodeMaterial":e.isMeshBasicNodeMaterial?t="MeshBasicNodeMaterial":e.isPointsNodeMaterial?t="PointsNodeMaterial":e.isLineBasicNodeMaterial&&(t="LineBasicNodeMaterial"),us[t]!==void 0){const s=us[t],n=this.shader;n.vertexShader=s.vertexShader,n.fragmentShader=s.fragmentShader,n.uniforms=r.UniformsUtils.merge([s.uniforms,r.UniformsLib.lights])}}_parseObject(){const{material:e,renderer:t}=this;this.addSlot("fragment",new be({node:r.normalView,nodeType:"vec3",source:"void main() {",target:"vec3 TransformedNormalView = %RESULT%;",inclusionType:"append"})),t.toneMappingNode&&t.toneMappingNode.isNode===!0&&this.addSlot("fragment",new be({node:e.colorNode,nodeType:"vec4",source:ut("tonemapping_fragment"),target:""})),e.colorNode&&e.colorNode.isNode&&this.addSlot("fragment",new be({node:e.colorNode,nodeType:"vec4",source:"vec4 diffuseColor = vec4( diffuse, opacity );",target:"vec4 diffuseColor = %RESULT%; diffuseColor.a *= opacity;"})),e.opacityNode&&e.opacityNode.isNode&&this.addSlot("fragment",new be({node:e.opacityNode,nodeType:"float",source:ut("alphatest_fragment"),target:"diffuseColor.a = %RESULT%;",inclusionType:"append"})),e.normalNode&&e.normalNode.isNode&&this.addSlot("fragment",new be({node:e.normalNode,nodeType:"vec3",source:ut("normal_fragment_begin"),target:"normal = %RESULT%;",inclusionType:"append"})),e.emissiveNode&&e.emissiveNode.isNode&&this.addSlot("fragment",new be({node:e.emissiveNode,nodeType:"vec3",source:ut("emissivemap_fragment"),target:"totalEmissiveRadiance = %RESULT%;",inclusionType:"append"})),e.isMeshStandardNodeMaterial&&(e.metalnessNode&&e.metalnessNode.isNode&&this.addSlot("fragment",new be({node:e.metalnessNode,nodeType:"float",source:ut("metalnessmap_fragment"),target:"metalnessFactor = %RESULT%;",inclusionType:"append"})),e.roughnessNode&&e.roughnessNode.isNode&&this.addSlot("fragment",new be({node:e.roughnessNode,nodeType:"float",source:ut("roughnessmap_fragment"),target:"roughnessFactor = %RESULT%;",inclusionType:"append"})),e.isMeshPhysicalNodeMaterial&&(e.clearcoatNode&&e.clearcoatNode.isNode?(this.addSlot("fragment",new be({node:e.clearcoatNode,nodeType:"float",source:"material.clearcoat = clearcoat;",target:"material.clearcoat = %RESULT%;"})),e.clearcoatRoughnessNode&&e.clearcoatRoughnessNode.isNode&&this.addSlot("fragment",new be({node:e.clearcoatRoughnessNode,nodeType:"float",source:"material.clearcoatRoughness = clearcoatRoughness;",target:"material.clearcoatRoughness = %RESULT%;"})),e.clearcoatNormalNode&&e.clearcoatNormalNode.isNode&&this.addSlot("fragment",new be({node:e.clearcoatNormalNode,nodeType:"vec3",source:"vec3 clearcoatNormal = nonPerturbedNormal;",target:"vec3 clearcoatNormal = %RESULT%;"})),e.defines.USE_CLEARCOAT=""):delete e.defines.USE_CLEARCOAT,e.sheenNode&&e.sheenNode.isNode?(this.addSlot("fragment",new be({node:e.sheenNode,nodeType:"vec3",source:"material.sheenColor = sheenColor;",target:"material.sheenColor = %RESULT%;"})),e.sheenRoughnessNode&&e.sheenRoughnessNode.isNode&&this.addSlot("fragment",new be({node:e.sheenRoughnessNode,nodeType:"float",source:"material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );",target:"material.sheenRoughness = clamp( %RESULT%, 0.07, 1.0 );"})),e.defines.USE_SHEEN=""):delete e.defines.USE_SHEEN,e.iridescenceNode&&e.iridescenceNode.isNode?(this.addSlot("fragment",new be({node:e.iridescenceNode,nodeType:"float",source:"material.iridescence = iridescence;",target:"material.iridescence = %RESULT%;"})),e.iridescenceIORNode&&e.iridescenceIORNode.isNode&&this.addSlot("fragment",new be({node:e.iridescenceIORNode,nodeType:"float",source:"material.iridescenceIOR = iridescenceIOR;",target:"material.iridescenceIOR = %RESULT%;"})),e.iridescenceThicknessNode&&e.iridescenceThicknessNode.isNode&&this.addSlot("fragment",new be({node:e.iridescenceThicknessNode,nodeType:"float",source:"material.iridescenceThickness = iridescenceThicknessMaximum;",target:"material.iridescenceThickness = %RESULT%;"})),e.defines.USE_IRIDESCENCE=""):delete e.defines.USE_IRIDESCENCE,e.iorNode&&e.iorNode.isNode&&this.addSlot("fragment",new be({node:e.iorNode,nodeType:"float",source:"material.ior = ior;",target:"material.ior = %RESULT%;"})),e.specularColorNode&&e.specularColorNode.isNode&&this.addSlot("fragment",new be({node:e.specularColorNode,nodeType:"vec3",source:"vec3 specularColorFactor = specularColor;",target:"vec3 specularColorFactor = %RESULT%;"})),e.specularIntensityNode&&e.specularIntensityNode.isNode&&this.addSlot("fragment",new be({node:e.specularIntensityNode,nodeType:"float",source:"float specularIntensityFactor = specularIntensity;",target:"float specularIntensityFactor = %RESULT%;"})),e.transmissionNode&&e.transmissionNode.isNode?(this.addSlot("fragment",new be({node:e.transmissionNode,nodeType:"float",source:"material.transmission = transmission;",target:"material.transmission = %RESULT%;"})),e.thicknessNode&&e.thicknessNode.isNode&&this.addSlot("fragment",new be({node:e.thicknessNode,nodeType:"float",source:"material.thickness = thickness;",target:"material.thickness = %RESULT%;"})),e.attenuationDistanceNode&&e.attenuationDistanceNode.isNode&&this.addSlot("fragment",new be({node:e.attenuationDistanceNode,nodeType:"float",source:"material.attenuationDistance = attenuationDistance;",target:"material.attenuationDistance = %RESULT%;"})),e.attenuationColorNode&&e.attenuationColorNode.isNode&&this.addSlot("fragment",new be({node:e.attenuationColorNode,nodeType:"vec3",source:"material.attenuationColor = attenuationColor;",target:"material.attenuationColor = %RESULT%;"})),e.transmission=1,e.defines.USE_TRANSMISSION=""):(e.transmission=0,delete e.defines.USE_TRANSMISSION))),e.positionNode&&e.positionNode.isNode&&this.addSlot("vertex",new be({node:e.positionNode,nodeType:"vec3",source:ut("begin_vertex"),target:"transformed = %RESULT%;",inclusionType:"append"})),e.sizeNode&&e.sizeNode.isNode&&this.addSlot("vertex",new be({node:e.sizeNode,nodeType:"float",source:"gl_PointSize = size;",target:"gl_PointSize = %RESULT%;"}))}generateTexture(e,t,s){return e.isTextureCube?`textureCube( ${t}, ${s} )`:`texture2D( ${t}, ${s} )`}generateTextureLevel(e,t,s,n){return`textureLod( ${t}, ${s}, ${n} )`}buildFunctionCode(e){const t=e.layout,s=this.flowShaderNode(e),n=[];for(const o of t.inputs)n.push(this.getType(o.type)+" "+o.name);return`${this.getType(t.type)} ${t.name}( ${n.join(", ")} ) {
1
+ "use strict";const r=require("./three-qj71I7J3.umd.cjs");class Qo extends r.Mesh{constructor(e,t,s,n=128){if(t<=0||s<=0||n<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const i=new r.SphereGeometry(s,2*n,n);i.scale(1,1,-1);const o=i.getAttribute("position"),a=new r.Vector3;for(let A=0;A<o.count;++A)if(a.fromBufferAttribute(o,A),a.y<0){const l=-t*3/2,h=a.y<l?-t/a.y:1-a.y*a.y/(3*l*l);a.multiplyScalar(h),a.toArray(o.array,3*A)}o.needsUpdate=!0,super(i,new r.MeshBasicMaterial({map:e,depthWrite:!1}))}}class be extends r.Node{constructor(e){super(e.nodeType),this.node=null,this.source=null,this.target=null,this.inclusionType="replace",Object.assign(this,e)}generate(e){return this.node.build(e,this.getNodeType(e))}}const Ue=new r.NodeFrame;Ue.camera=new r.PerspectiveCamera;const us={LineBasicNodeMaterial:r.ShaderLib.basic,MeshBasicNodeMaterial:r.ShaderLib.basic,PointsNodeMaterial:r.ShaderLib.points,MeshStandardNodeMaterial:r.ShaderLib.standard,MeshPhysicalNodeMaterial:r.ShaderLib.physical,MeshPhongNodeMaterial:r.ShaderLib.phong},xo={atan2:"atan"},So={low:"lowp",medium:"mediump",high:"highp"};function ut(c){return`#include <${c}>`}function Ft(c){return`${c}Shader`}class To extends r.NodeBuilder{constructor(e,t,s,n=null){super(e,t,new r.GLSLNodeParser,null,n),this.shader=s,this.slots={vertex:[],fragment:[]},this._parseShaderLib(),this._parseInclude("fragment","lights_physical_fragment","clearcoat_normal_fragment_begin","transmission_fragment"),this._parseObject(),this._sortSlotsToFlow(),this.useComparisonMethod=!0}getMethod(e){return xo[e]||e}addSlot(e,t){this.slots[e].push(t)}_parseShaderLib(){const e=this.material;let t=e.type;if(e.isMeshPhysicalNodeMaterial?t="MeshPhysicalNodeMaterial":e.isMeshStandardNodeMaterial?t="MeshStandardNodeMaterial":e.isMeshPhongNodeMaterial?t="MeshPhongNodeMaterial":e.isMeshBasicNodeMaterial?t="MeshBasicNodeMaterial":e.isPointsNodeMaterial?t="PointsNodeMaterial":e.isLineBasicNodeMaterial&&(t="LineBasicNodeMaterial"),us[t]!==void 0){const s=us[t],n=this.shader;n.vertexShader=s.vertexShader,n.fragmentShader=s.fragmentShader,n.uniforms=r.UniformsUtils.merge([s.uniforms,r.UniformsLib.lights])}}_parseObject(){const{material:e,renderer:t}=this;this.addSlot("fragment",new be({node:r.normalView,nodeType:"vec3",source:"void main() {",target:"vec3 TransformedNormalView = %RESULT%;",inclusionType:"append"})),t.toneMappingNode&&t.toneMappingNode.isNode===!0&&this.addSlot("fragment",new be({node:e.colorNode,nodeType:"vec4",source:ut("tonemapping_fragment"),target:""})),e.colorNode&&e.colorNode.isNode&&this.addSlot("fragment",new be({node:e.colorNode,nodeType:"vec4",source:"vec4 diffuseColor = vec4( diffuse, opacity );",target:"vec4 diffuseColor = %RESULT%; diffuseColor.a *= opacity;"})),e.opacityNode&&e.opacityNode.isNode&&this.addSlot("fragment",new be({node:e.opacityNode,nodeType:"float",source:ut("alphatest_fragment"),target:"diffuseColor.a = %RESULT%;",inclusionType:"append"})),e.normalNode&&e.normalNode.isNode&&this.addSlot("fragment",new be({node:e.normalNode,nodeType:"vec3",source:ut("normal_fragment_begin"),target:"normal = %RESULT%;",inclusionType:"append"})),e.emissiveNode&&e.emissiveNode.isNode&&this.addSlot("fragment",new be({node:e.emissiveNode,nodeType:"vec3",source:ut("emissivemap_fragment"),target:"totalEmissiveRadiance = %RESULT%;",inclusionType:"append"})),e.isMeshStandardNodeMaterial&&(e.metalnessNode&&e.metalnessNode.isNode&&this.addSlot("fragment",new be({node:e.metalnessNode,nodeType:"float",source:ut("metalnessmap_fragment"),target:"metalnessFactor = %RESULT%;",inclusionType:"append"})),e.roughnessNode&&e.roughnessNode.isNode&&this.addSlot("fragment",new be({node:e.roughnessNode,nodeType:"float",source:ut("roughnessmap_fragment"),target:"roughnessFactor = %RESULT%;",inclusionType:"append"})),e.isMeshPhysicalNodeMaterial&&(e.clearcoatNode&&e.clearcoatNode.isNode?(this.addSlot("fragment",new be({node:e.clearcoatNode,nodeType:"float",source:"material.clearcoat = clearcoat;",target:"material.clearcoat = %RESULT%;"})),e.clearcoatRoughnessNode&&e.clearcoatRoughnessNode.isNode&&this.addSlot("fragment",new be({node:e.clearcoatRoughnessNode,nodeType:"float",source:"material.clearcoatRoughness = clearcoatRoughness;",target:"material.clearcoatRoughness = %RESULT%;"})),e.clearcoatNormalNode&&e.clearcoatNormalNode.isNode&&this.addSlot("fragment",new be({node:e.clearcoatNormalNode,nodeType:"vec3",source:"vec3 clearcoatNormal = nonPerturbedNormal;",target:"vec3 clearcoatNormal = %RESULT%;"})),e.defines.USE_CLEARCOAT=""):delete e.defines.USE_CLEARCOAT,e.sheenNode&&e.sheenNode.isNode?(this.addSlot("fragment",new be({node:e.sheenNode,nodeType:"vec3",source:"material.sheenColor = sheenColor;",target:"material.sheenColor = %RESULT%;"})),e.sheenRoughnessNode&&e.sheenRoughnessNode.isNode&&this.addSlot("fragment",new be({node:e.sheenRoughnessNode,nodeType:"float",source:"material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );",target:"material.sheenRoughness = clamp( %RESULT%, 0.07, 1.0 );"})),e.defines.USE_SHEEN=""):delete e.defines.USE_SHEEN,e.iridescenceNode&&e.iridescenceNode.isNode?(this.addSlot("fragment",new be({node:e.iridescenceNode,nodeType:"float",source:"material.iridescence = iridescence;",target:"material.iridescence = %RESULT%;"})),e.iridescenceIORNode&&e.iridescenceIORNode.isNode&&this.addSlot("fragment",new be({node:e.iridescenceIORNode,nodeType:"float",source:"material.iridescenceIOR = iridescenceIOR;",target:"material.iridescenceIOR = %RESULT%;"})),e.iridescenceThicknessNode&&e.iridescenceThicknessNode.isNode&&this.addSlot("fragment",new be({node:e.iridescenceThicknessNode,nodeType:"float",source:"material.iridescenceThickness = iridescenceThicknessMaximum;",target:"material.iridescenceThickness = %RESULT%;"})),e.defines.USE_IRIDESCENCE=""):delete e.defines.USE_IRIDESCENCE,e.iorNode&&e.iorNode.isNode&&this.addSlot("fragment",new be({node:e.iorNode,nodeType:"float",source:"material.ior = ior;",target:"material.ior = %RESULT%;"})),e.specularColorNode&&e.specularColorNode.isNode&&this.addSlot("fragment",new be({node:e.specularColorNode,nodeType:"vec3",source:"vec3 specularColorFactor = specularColor;",target:"vec3 specularColorFactor = %RESULT%;"})),e.specularIntensityNode&&e.specularIntensityNode.isNode&&this.addSlot("fragment",new be({node:e.specularIntensityNode,nodeType:"float",source:"float specularIntensityFactor = specularIntensity;",target:"float specularIntensityFactor = %RESULT%;"})),e.transmissionNode&&e.transmissionNode.isNode?(this.addSlot("fragment",new be({node:e.transmissionNode,nodeType:"float",source:"material.transmission = transmission;",target:"material.transmission = %RESULT%;"})),e.thicknessNode&&e.thicknessNode.isNode&&this.addSlot("fragment",new be({node:e.thicknessNode,nodeType:"float",source:"material.thickness = thickness;",target:"material.thickness = %RESULT%;"})),e.attenuationDistanceNode&&e.attenuationDistanceNode.isNode&&this.addSlot("fragment",new be({node:e.attenuationDistanceNode,nodeType:"float",source:"material.attenuationDistance = attenuationDistance;",target:"material.attenuationDistance = %RESULT%;"})),e.attenuationColorNode&&e.attenuationColorNode.isNode&&this.addSlot("fragment",new be({node:e.attenuationColorNode,nodeType:"vec3",source:"material.attenuationColor = attenuationColor;",target:"material.attenuationColor = %RESULT%;"})),e.transmission=1,e.defines.USE_TRANSMISSION=""):(e.transmission=0,delete e.defines.USE_TRANSMISSION))),e.positionNode&&e.positionNode.isNode&&this.addSlot("vertex",new be({node:e.positionNode,nodeType:"vec3",source:ut("begin_vertex"),target:"transformed = %RESULT%;",inclusionType:"append"})),e.sizeNode&&e.sizeNode.isNode&&this.addSlot("vertex",new be({node:e.sizeNode,nodeType:"float",source:"gl_PointSize = size;",target:"gl_PointSize = %RESULT%;"}))}generateTexture(e,t,s){return e.isTextureCube?`textureCube( ${t}, ${s} )`:`texture2D( ${t}, ${s} )`}generateTextureLevel(e,t,s,n){return`textureLod( ${t}, ${s}, ${n} )`}buildFunctionCode(e){const t=e.layout,s=this.flowShaderNode(e),n=[];for(const o of t.inputs)n.push(this.getType(o.type)+" "+o.name);return`${this.getType(t.type)} ${t.name}( ${n.join(", ")} ) {
2
2
 
3
3
  ${s.vars}
4
4
 
@@ -33,12 +33,7 @@ ${this.shader[Ft(t)]}
33
33
  `+this.flowCode[e])}}_addUniforms(){for(const e of r.defaultShaderStages)for(const t of this.uniforms[e])this.shader.uniforms[t.name]=t}_updateUniforms(){Ue.object=this.object,Ue.renderer=this.renderer,Ue.material=this.material,Ue.scene=this.scene;for(const e of this.updateNodes)Ue.updateNode(e)}}const si=new WeakMap;r.Material.prototype.onBuild=function(c,e,t){const s=this;if(s.isNodeMaterial===!0){let n;try{n=new To(c,t,e,s).build(),si.set(s,n)}catch(i){console.error("Material.prototype.onBuild: ",i)}}};r.Material.prototype.onBeforeRender=function(c,e,t,s,n){const i=si.get(this);if(i!==void 0){Ue.material=this,Ue.camera=t,Ue.object=n,Ue.renderer=c,Ue.scene=e,Ue.geometry=s;const o=i.updateNodes;if(o.length>0){c.state.useProgram(null);for(const a of o)Ue.updateNode(a)}}};var Jt=function(){var c=0,e=document.createElement("div");e.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",e.addEventListener("click",function(h){h.preventDefault(),s(++c%e.children.length)},!1);function t(h){return e.appendChild(h.dom),h}function s(h){for(var u=0;u<e.children.length;u++)e.children[u].style.display=u===h?"block":"none";c=h}var n=(performance||Date).now(),i=n,o=0,a=t(new Jt.Panel("FPS","#0ff","#002")),A=t(new Jt.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var l=t(new Jt.Panel("MB","#f08","#201"));return s(0),{REVISION:16,dom:e,addPanel:t,showPanel:s,begin:function(){n=(performance||Date).now()},end:function(){o++;var h=(performance||Date).now();if(A.update(h-n,200),h>=i+1e3&&(a.update(o*1e3/(h-i),100),i=h,o=0,l)){var u=performance.memory;l.update(u.usedJSHeapSize/1048576,u.jsHeapSizeLimit/1048576)}return h},update:function(){n=this.end()},domElement:e,setMode:s}};Jt.Panel=function(c,e,t){var s=1/0,n=0,i=Math.round,o=i(window.devicePixelRatio||1),a=80*o,A=48*o,l=3*o,h=2*o,u=3*o,p=15*o,g=74*o,m=30*o,I=document.createElement("canvas");I.width=a,I.height=A,I.style.cssText="width:80px;height:48px";var b=I.getContext("2d");return b.font="bold "+9*o+"px Helvetica,Arial,sans-serif",b.textBaseline="top",b.fillStyle=t,b.fillRect(0,0,a,A),b.fillStyle=e,b.fillText(c,l,h),b.fillRect(u,p,g,m),b.fillStyle=t,b.globalAlpha=.9,b.fillRect(u,p,g,m),{dom:I,update:function(B,w){s=Math.min(s,B),n=Math.max(n,B),b.fillStyle=t,b.globalAlpha=1,b.fillRect(0,0,a,p),b.fillStyle=e,b.fillText(i(B)+" "+c+" ("+i(s)+"-"+i(n)+")",l,h),b.drawImage(I,u+o,p,g-o,m,u,p,g-o,m),b.fillRect(u+g-o,p,o,m),b.fillStyle=t,b.globalAlpha=.9,b.fillRect(u+g-o,p,o,i((1-B/w)*m))}}};function vo(c,e=1e-4){e=Math.max(e,Number.EPSILON);const t={},s=c.getIndex(),n=c.getAttribute("position"),i=s?s.count:n.count;let o=0;const a=Object.keys(c.attributes),A={},l={},h=[],u=["getX","getY","getZ","getW"],p=["setX","setY","setZ","setW"];for(let w=0,C=a.length;w<C;w++){const y=a[w],x=c.attributes[y];A[y]=new x.constructor(new x.array.constructor(x.count*x.itemSize),x.itemSize,x.normalized);const R=c.morphAttributes[y];R&&(l[y]||(l[y]=[]),R.forEach((D,S)=>{const v=new D.array.constructor(D.count*D.itemSize);l[y][S]=new D.constructor(v,D.itemSize,D.normalized)}))}const g=e*.5,m=Math.log10(1/e),I=Math.pow(10,m),b=g*I;for(let w=0;w<i;w++){const C=s?s.getX(w):w;let y="";for(let x=0,R=a.length;x<R;x++){const D=a[x],S=c.getAttribute(D),v=S.itemSize;for(let U=0;U<v;U++)y+=`${~~(S[u[U]](C)*I+b)},`}if(y in t)h.push(t[y]);else{for(let x=0,R=a.length;x<R;x++){const D=a[x],S=c.getAttribute(D),v=c.morphAttributes[D],U=S.itemSize,G=A[D],H=l[D];for(let X=0;X<U;X++){const N=u[X],Y=p[X];if(G[Y](o,S[N](C)),v)for(let O=0,Z=v.length;O<Z;O++)H[O][Y](o,v[O][N](C))}}t[y]=o,h.push(o),o++}}const B=c.clone();for(const w in c.attributes){const C=A[w];if(B.setAttribute(w,new C.constructor(C.array.slice(0,o*C.itemSize),C.itemSize,C.normalized)),w in l)for(let y=0;y<l[w].length;y++){const x=l[w][y];B.morphAttributes[w][y]=new x.constructor(x.array.slice(0,o*x.itemSize),x.itemSize,x.normalized)}}return B.setIndex(h),B}function ds(c,e){if(e===r.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),c;if(e===r.TriangleFanDrawMode||e===r.TriangleStripDrawMode){let t=c.getIndex();if(t===null){const o=[],a=c.getAttribute("position");if(a!==void 0){for(let A=0;A<a.count;A++)o.push(A);c.setIndex(o),t=c.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),c}const s=t.count-2,n=[];if(e===r.TriangleFanDrawMode)for(let o=1;o<=s;o++)n.push(t.getX(0)),n.push(t.getX(o)),n.push(t.getX(o+1));else for(let o=0;o<s;o++)o%2===0?(n.push(t.getX(o)),n.push(t.getX(o+1)),n.push(t.getX(o+2))):(n.push(t.getX(o+2)),n.push(t.getX(o+1)),n.push(t.getX(o)));n.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=c.clone();return i.setIndex(n),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),c}class Zn extends r.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new Fo(t)}),this.register(function(t){return new Lo(t)}),this.register(function(t){return new qo(t)}),this.register(function(t){return new zo(t)}),this.register(function(t){return new Yo(t)}),this.register(function(t){return new Go(t)}),this.register(function(t){return new No(t)}),this.register(function(t){return new Uo(t)}),this.register(function(t){return new Po(t)}),this.register(function(t){return new _o(t)}),this.register(function(t){return new Oo(t)}),this.register(function(t){return new ko(t)}),this.register(function(t){return new jo(t)}),this.register(function(t){return new Ho(t)}),this.register(function(t){return new Ro(t)}),this.register(function(t){return new Vo(t)}),this.register(function(t){return new Ko(t)})}load(e,t,s,n){const i=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const l=r.LoaderUtils.extractUrlBase(e);o=r.LoaderUtils.resolveURL(l,this.path)}else o=r.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const a=function(l){n?n(l):console.error(l),i.manager.itemError(e),i.manager.itemEnd(e)},A=new r.FileLoader(this.manager);A.setPath(this.path),A.setResponseType("arraybuffer"),A.setRequestHeader(this.requestHeader),A.setWithCredentials(this.withCredentials),A.load(e,function(l){try{i.parse(l,o,function(h){t(h),i.manager.itemEnd(e)},a)}catch(h){a(h)}},s,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,s,n){let i,o;const a={},A={},l=new TextDecoder;if(typeof e=="string")try{i=JSON.parse(e)}catch(u){o=e,n&&n(u);return}else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===ii){try{a[re.KHR_BINARY_GLTF]=new Jo(e)}catch(p){n&&n(p);return}try{i=JSON.parse(a[re.KHR_BINARY_GLTF].content)}catch(p){o=a[re.KHR_BINARY_GLTF].content,n&&n(p);return}}else try{i=JSON.parse(l.decode(e))}catch(p){o=l.decode(e),n&&n(p);return}else i=e;if(i.asset===void 0||i.asset.version[0]<2){n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}this.json=i,this.jsonErrorData=o;const h=new Ar(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const p=this.pluginCallbacks[u](h);p.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),A[p.name]=p,a[p.name]=!0}if(i.extensionsUsed)for(let u=0;u<i.extensionsUsed.length;++u){const p=i.extensionsUsed[u],g=i.extensionsRequired||[];switch(p){case re.KHR_MATERIALS_UNLIT:a[p]=new Do;break;case re.KHR_DRACO_MESH_COMPRESSION:a[p]=new Wo(i,this.dracoLoader);break;case re.KHR_TEXTURE_TRANSFORM:a[p]=new Xo;break;case re.KHR_MESH_QUANTIZATION:a[p]=new Zo;break;default:g.indexOf(p)>=0&&A[p]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+p+'".')}}h.setExtensions(a),h.setPlugins(A),h.parse(s,n)}parseAsync(e,t){const s=this;return new Promise(function(n,i){s.parse(e,t,n,i)})}}function Mo(){let c={};return{get:function(e){return c[e]},add:function(e,t){c[e]=t},remove:function(e){delete c[e]},removeAll:function(){c={}}}}const re={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Ro{constructor(e){this.parser=e,this.name=re.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let s=0,n=t.length;s<n;s++){const i=t[s];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const t=this.parser,s="light:"+e;let n=t.cache.get(s);if(n)return n;const i=t.json,A=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let l;const h=new r.Color(16777215);A.color!==void 0&&h.setRGB(A.color[0],A.color[1],A.color[2],r.LinearSRGBColorSpace);const u=A.range!==void 0?A.range:0;switch(A.type){case"directional":l=new r.DirectionalLight(h),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new r.PointLight(h),l.distance=u;break;case"spot":l=new r.SpotLight(h),l.distance=u,A.spot=A.spot||{},A.spot.innerConeAngle=A.spot.innerConeAngle!==void 0?A.spot.innerConeAngle:0,A.spot.outerConeAngle=A.spot.outerConeAngle!==void 0?A.spot.outerConeAngle:Math.PI/4,l.angle=A.spot.outerConeAngle,l.penumbra=1-A.spot.innerConeAngle/A.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+A.type)}return l.position.set(0,0,0),l.decay=2,ct(l,A),A.intensity!==void 0&&(l.intensity=A.intensity),l.name=t.createUniqueName(A.name||"light_"+e),n=Promise.resolve(l),t.cache.add(s,n),n}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,s=this.parser,i=s.json.nodes[e],a=(i.extensions&&i.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(A){return s._getNodeRef(t.cache,a,A)})}}let Do=class{constructor(){this.name=re.KHR_MATERIALS_UNLIT}getMaterialType(){return r.MeshBasicMaterial}extendParams(e,t,s){const n=[];e.color=new r.Color(1,1,1),e.opacity=1;const i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const o=i.baseColorFactor;e.color.setRGB(o[0],o[1],o[2],r.LinearSRGBColorSpace),e.opacity=o[3]}i.baseColorTexture!==void 0&&n.push(s.assignTexture(e,"map",i.baseColorTexture,r.SRGBColorSpace))}return Promise.all(n)}},_o=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name].emissiveStrength;return i!==void 0&&(t.emissiveIntensity=i),Promise.resolve()}},Fo=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&i.push(s.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&i.push(s.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(i.push(s.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new r.Vector2(a,a)}return Promise.all(i)}},Lo=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_DISPERSION}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return t.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}},ko=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.iridescenceFactor!==void 0&&(t.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&i.push(s.assignTexture(t,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(t.iridescenceIOR=o.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&i.push(s.assignTexture(t,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(i)}},Go=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_SHEEN}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[];t.sheenColor=new r.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;const o=n.extensions[this.name];if(o.sheenColorFactor!==void 0){const a=o.sheenColorFactor;t.sheenColor.setRGB(a[0],a[1],a[2],r.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&i.push(s.assignTexture(t,"sheenColorMap",o.sheenColorTexture,r.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&i.push(s.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(i)}},No=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&i.push(s.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(i)}},Uo=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_VOLUME}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&i.push(s.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;const a=o.attenuationColor||[1,1,1];return t.attenuationColor=new r.Color().setRGB(a[0],a[1],a[2],r.LinearSRGBColorSpace),Promise.all(i)}},Po=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_IOR}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return t.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}},Oo=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_SPECULAR}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&i.push(s.assignTexture(t,"specularIntensityMap",o.specularTexture));const a=o.specularColorFactor||[1,1,1];return t.specularColor=new r.Color().setRGB(a[0],a[1],a[2],r.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&i.push(s.assignTexture(t,"specularColorMap",o.specularColorTexture,r.SRGBColorSpace)),Promise.all(i)}},Ho=class{constructor(e){this.parser=e,this.name=re.EXT_MATERIALS_BUMP}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return t.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&i.push(s.assignTexture(t,"bumpMap",o.bumpTexture)),Promise.all(i)}},jo=class{constructor(e){this.parser=e,this.name=re.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const s=this.parser.json.materials[e];return!s.extensions||!s.extensions[this.name]?null:r.MeshPhysicalMaterial}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.anisotropyStrength!==void 0&&(t.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(t.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&i.push(s.assignTexture(t,"anisotropyMap",o.anisotropyTexture)),Promise.all(i)}};class qo{constructor(e){this.parser=e,this.name=re.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,s=t.json,n=s.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const i=n.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,i.source,o)}}class zo{constructor(e){this.parser=e,this.name=re.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,s=this.parser,n=s.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],a=n.images[o.source];let A=s.textureLoader;if(a.uri){const l=s.options.manager.getHandler(a.uri);l!==null&&(A=l)}return this.detectSupport().then(function(l){if(l)return s.loadTextureImage(e,o.source,A);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class Yo{constructor(e){this.parser=e,this.name=re.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,s=this.parser,n=s.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;const o=i.extensions[t],a=n.images[o.source];let A=s.textureLoader;if(a.uri){const l=s.options.manager.getHandler(a.uri);l!==null&&(A=l)}return this.detectSupport().then(function(l){if(l)return s.loadTextureImage(e,o.source,A);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class Vo{constructor(e){this.name=re.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,s=t.bufferViews[e];if(s.extensions&&s.extensions[this.name]){const n=s.extensions[this.name],i=this.parser.getDependency("buffer",n.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(a){const A=n.byteOffset||0,l=n.byteLength||0,h=n.count,u=n.byteStride,p=new Uint8Array(a,A,l);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(h,u,p,n.mode,n.filter).then(function(g){return g.buffer}):o.ready.then(function(){const g=new ArrayBuffer(h*u);return o.decodeGltfBuffer(new Uint8Array(g),h,u,p,n.mode,n.filter),g})})}else return null}}let Ko=class{constructor(e){this.name=re.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,s=t.nodes[e];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const n=t.meshes[s.mesh];for(const l of n.primitives)if(l.mode!==We.TRIANGLES&&l.mode!==We.TRIANGLE_STRIP&&l.mode!==We.TRIANGLE_FAN&&l.mode!==void 0)return null;const o=s.extensions[this.name].attributes,a=[],A={};for(const l in o)a.push(this.parser.getDependency("accessor",o[l]).then(h=>(A[l]=h,A[l])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(l=>{const h=l.pop(),u=h.isGroup?h.children:[h],p=l[0].count,g=[];for(const m of u){const I=new r.Matrix4,b=new r.Vector3,B=new r.Quaternion,w=new r.Vector3(1,1,1),C=new r.InstancedMesh(m.geometry,m.material,p);for(let y=0;y<p;y++)A.TRANSLATION&&b.fromBufferAttribute(A.TRANSLATION,y),A.ROTATION&&B.fromBufferAttribute(A.ROTATION,y),A.SCALE&&w.fromBufferAttribute(A.SCALE,y),C.setMatrixAt(y,I.compose(b,B,w));for(const y in A)if(y==="_COLOR_0"){const x=A[y];C.instanceColor=new r.InstancedBufferAttribute(x.array,x.itemSize,x.normalized)}else y!=="TRANSLATION"&&y!=="ROTATION"&&y!=="SCALE"&&m.geometry.setAttribute(y,A[y]);r.Object3D.prototype.copy.call(C,m),this.parser.assignFinalMaterial(C),g.push(C)}return h.isGroup?(h.clear(),h.add(...g),h):g[0]}))}};const ii="glTF",Lt=12,ps={JSON:1313821514,BIN:5130562};class Jo{constructor(e){this.name=re.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Lt),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==ii)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-Lt,i=new DataView(e,Lt);let o=0;for(;o<n;){const a=i.getUint32(o,!0);o+=4;const A=i.getUint32(o,!0);if(o+=4,A===ps.JSON){const l=new Uint8Array(e,Lt+o,a);this.content=s.decode(l)}else if(A===ps.BIN){const l=Lt+o;this.body=e.slice(l,l+a)}o+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Wo{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=re.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const s=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},A={},l={};for(const h in o){const u=Hn[h]||h.toLowerCase();a[u]=o[h]}for(const h in e.attributes){const u=Hn[h]||h.toLowerCase();if(o[h]!==void 0){const p=s.accessors[e.attributes[h]],g=Rt[p.componentType];l[u]=g.name,A[u]=p.normalized===!0}}return t.getDependency("bufferView",i).then(function(h){return new Promise(function(u,p){n.decodeDracoFile(h,function(g){for(const m in g.attributes){const I=g.attributes[m],b=A[m];b!==void 0&&(I.normalized=b)}u(g)},a,l,r.LinearSRGBColorSpace,p)})})}}class Xo{constructor(){this.name=re.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class Zo{constructor(){this.name=re.KHR_MESH_QUANTIZATION}}class oi extends r.Interpolant{constructor(e,t,s,n){super(e,t,s,n)}copySampleValue_(e){const t=this.resultBuffer,s=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let o=0;o!==n;o++)t[o]=s[i+o];return t}interpolate_(e,t,s,n){const i=this.resultBuffer,o=this.sampleValues,a=this.valueSize,A=a*2,l=a*3,h=n-t,u=(s-t)/h,p=u*u,g=p*u,m=e*l,I=m-l,b=-2*g+3*p,B=g-p,w=1-b,C=B-p+u;for(let y=0;y!==a;y++){const x=o[I+y+a],R=o[I+y+A]*h,D=o[m+y+a],S=o[m+y]*h;i[y]=w*x+C*R+b*D+B*S}return i}}const $o=new r.Quaternion;class er extends oi{interpolate_(e,t,s,n){const i=super.interpolate_(e,t,s,n);return $o.fromArray(i).normalize().toArray(i),i}}const We={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Rt={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},gs={9728:r.NearestFilter,9729:r.LinearFilter,9984:r.NearestMipmapNearestFilter,9985:r.LinearMipmapNearestFilter,9986:r.NearestMipmapLinearFilter,9987:r.LinearMipmapLinearFilter},fs={33071:r.ClampToEdgeWrapping,33648:r.MirroredRepeatWrapping,10497:r.RepeatWrapping},mn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hn={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},dt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},tr={CUBICSPLINE:void 0,LINEAR:r.InterpolateLinear,STEP:r.InterpolateDiscrete},In={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function nr(c){return c.DefaultMaterial===void 0&&(c.DefaultMaterial=new r.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:r.FrontSide})),c.DefaultMaterial}function bt(c,e,t){for(const s in t.extensions)c[s]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[s]=t.extensions[s])}function ct(c,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(c.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function sr(c,e,t){let s=!1,n=!1,i=!1;for(let l=0,h=e.length;l<h;l++){const u=e[l];if(u.POSITION!==void 0&&(s=!0),u.NORMAL!==void 0&&(n=!0),u.COLOR_0!==void 0&&(i=!0),s&&n&&i)break}if(!s&&!n&&!i)return Promise.resolve(c);const o=[],a=[],A=[];for(let l=0,h=e.length;l<h;l++){const u=e[l];if(s){const p=u.POSITION!==void 0?t.getDependency("accessor",u.POSITION):c.attributes.position;o.push(p)}if(n){const p=u.NORMAL!==void 0?t.getDependency("accessor",u.NORMAL):c.attributes.normal;a.push(p)}if(i){const p=u.COLOR_0!==void 0?t.getDependency("accessor",u.COLOR_0):c.attributes.color;A.push(p)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(A)]).then(function(l){const h=l[0],u=l[1],p=l[2];return s&&(c.morphAttributes.position=h),n&&(c.morphAttributes.normal=u),i&&(c.morphAttributes.color=p),c.morphTargetsRelative=!0,c})}function ir(c,e){if(c.updateMorphTargets(),e.weights!==void 0)for(let t=0,s=e.weights.length;t<s;t++)c.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(c.morphTargetInfluences.length===t.length){c.morphTargetDictionary={};for(let s=0,n=t.length;s<n;s++)c.morphTargetDictionary[t[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function or(c){let e;const t=c.extensions&&c.extensions[re.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+bn(t.attributes):e=c.indices+":"+bn(c.attributes)+":"+c.mode,c.targets!==void 0)for(let s=0,n=c.targets.length;s<n;s++)e+=":"+bn(c.targets[s]);return e}function bn(c){let e="";const t=Object.keys(c).sort();for(let s=0,n=t.length;s<n;s++)e+=t[s]+":"+c[t[s]]+";";return e}function jn(c){switch(c){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function rr(c){return c.search(/\.jpe?g($|\?)/i)>0||c.search(/^data\:image\/jpeg/)===0?"image/jpeg":c.search(/\.webp($|\?)/i)>0||c.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ar=new r.Matrix4;class Ar{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Mo,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,n=-1,i=!1,o=-1;if(typeof navigator<"u"){const a=navigator.userAgent;s=/^((?!chrome|android).)*safari/i.test(a)===!0;const A=a.match(/Version\/(\d+)/);n=s&&A?parseInt(A[1],10):-1,i=a.indexOf("Firefox")>-1,o=i?a.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||s&&n<17||i&&o<98?this.textureLoader=new r.TextureLoader(this.options.manager):this.textureLoader=new r.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const s=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(o){const a={scene:o[0][n.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:n.asset,parser:s,userData:{}};return bt(i,a,n),ct(a,n),Promise.all(s._invokeAll(function(A){return A.afterRoot&&A.afterRoot(a)})).then(function(){for(const A of a.scenes)A.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let n=0,i=t.length;n<i;n++){const o=t[n].joints;for(let a=0,A=o.length;a<A;a++)e[o[a]].isBone=!0}for(let n=0,i=e.length;n<i;n++){const o=e[n];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(s[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,s){if(e.refs[t]<=1)return s;const n=s.clone(),i=(o,a)=>{const A=this.associations.get(o);A!=null&&this.associations.set(a,A);for(const[l,h]of o.children.entries())i(h,a.children[l])};return i(s,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let s=0;s<t.length;s++){const n=e(t[s]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const s=[];for(let n=0;n<t.length;n++){const i=e(t[n]);i&&s.push(i)}return s}getDependency(e,t){const s=e+":"+t;let n=this.cache.get(s);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(i){return i.loadNode&&i.loadNode(t)});break;case"mesh":n=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e);break}this.cache.add(s,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const s=this,n=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(n.map(function(i,o){return s.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],s=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[re.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(i,o){s.load(r.LoaderUtils.resolveURL(t.uri,n.path),i,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(s){const n=t.byteLength||0,i=t.byteOffset||0;return s.slice(i,i+n)})}loadAccessor(e){const t=this,s=this.json,n=this.json.accessors[e];if(n.bufferView===void 0&&n.sparse===void 0){const o=mn[n.type],a=Rt[n.componentType],A=n.normalized===!0,l=new a(n.count*o);return Promise.resolve(new r.BufferAttribute(l,o,A))}const i=[];return n.bufferView!==void 0?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),n.sparse!==void 0&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(o){const a=o[0],A=mn[n.type],l=Rt[n.componentType],h=l.BYTES_PER_ELEMENT,u=h*A,p=n.byteOffset||0,g=n.bufferView!==void 0?s.bufferViews[n.bufferView].byteStride:void 0,m=n.normalized===!0;let I,b;if(g&&g!==u){const B=Math.floor(p/g),w="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+B+":"+n.count;let C=t.cache.get(w);C||(I=new l(a,B*g,n.count*g/h),C=new r.InterleavedBuffer(I,g/h),t.cache.add(w,C)),b=new r.InterleavedBufferAttribute(C,A,p%g/h,m)}else a===null?I=new l(n.count*A):I=new l(a,p,n.count*A),b=new r.BufferAttribute(I,A,m);if(n.sparse!==void 0){const B=mn.SCALAR,w=Rt[n.sparse.indices.componentType],C=n.sparse.indices.byteOffset||0,y=n.sparse.values.byteOffset||0,x=new w(o[1],C,n.sparse.count*B),R=new l(o[2],y,n.sparse.count*A);a!==null&&(b=new r.BufferAttribute(b.array.slice(),b.itemSize,b.normalized)),b.normalized=!1;for(let D=0,S=x.length;D<S;D++){const v=x[D];if(b.setX(v,R[D*A]),A>=2&&b.setY(v,R[D*A+1]),A>=3&&b.setZ(v,R[D*A+2]),A>=4&&b.setW(v,R[D*A+3]),A>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}b.normalized=m}return b})}loadTexture(e){const t=this.json,s=this.options,i=t.textures[e].source,o=t.images[i];let a=this.textureLoader;if(o.uri){const A=s.manager.getHandler(o.uri);A!==null&&(a=A)}return this.loadTextureImage(e,i,a)}loadTextureImage(e,t,s){const n=this,i=this.json,o=i.textures[e],a=i.images[t],A=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[A])return this.textureCache[A];const l=this.loadImageSource(t,s).then(function(h){h.flipY=!1,h.name=o.name||a.name||"",h.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(h.name=a.uri);const p=(i.samplers||{})[o.sampler]||{};return h.magFilter=gs[p.magFilter]||r.LinearFilter,h.minFilter=gs[p.minFilter]||r.LinearMipmapLinearFilter,h.wrapS=fs[p.wrapS]||r.RepeatWrapping,h.wrapT=fs[p.wrapT]||r.RepeatWrapping,h.anisotropy=4,n.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[A]=l,l}loadImageSource(e,t){const s=this,n=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const o=n.images[e],a=self.URL||self.webkitURL;let A=o.uri||"",l=!1;if(o.bufferView!==void 0)A=s.getDependency("bufferView",o.bufferView).then(function(u){l=!0;const p=new Blob([u],{type:o.mimeType});return A=a.createObjectURL(p),A});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(A).then(function(u){return new Promise(function(p,g){let m=p;t.isImageBitmapLoader===!0&&(m=function(I){const b=new r.Texture(I);b.needsUpdate=!0,p(b)}),t.load(r.LoaderUtils.resolveURL(u,i.path),m,void 0,g)})}).then(function(u){return l===!0&&a.revokeObjectURL(A),ct(u,o),u.userData.mimeType=o.mimeType||rr(o.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",A),u});return this.sourceCache[e]=h,h}assignTexture(e,t,s,n){const i=this;return this.getDependency("texture",s.index).then(function(o){if(!o)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(o=o.clone(),o.channel=s.texCoord),i.extensions[re.KHR_TEXTURE_TRANSFORM]){const a=s.extensions!==void 0?s.extensions[re.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const A=i.associations.get(o);o=i.extensions[re.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),i.associations.set(o,A)}}return n!==void 0&&(o.colorSpace=n),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let s=e.material;const n=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+s.uuid;let A=this.cache.get(a);A||(A=new r.PointsMaterial,r.Material.prototype.copy.call(A,s),A.color.copy(s.color),A.map=s.map,A.sizeAttenuation=!1,this.cache.add(a,A)),s=A}else if(e.isLine){const a="LineBasicMaterial:"+s.uuid;let A=this.cache.get(a);A||(A=new r.LineBasicMaterial,r.Material.prototype.copy.call(A,s),A.color.copy(s.color),A.map=s.map,this.cache.add(a,A)),s=A}if(n||i||o){let a="ClonedMaterial:"+s.uuid+":";n&&(a+="derivative-tangents:"),i&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let A=this.cache.get(a);A||(A=s.clone(),i&&(A.vertexColors=!0),o&&(A.flatShading=!0),n&&(A.normalScale&&(A.normalScale.y*=-1),A.clearcoatNormalScale&&(A.clearcoatNormalScale.y*=-1)),this.cache.add(a,A),this.associations.set(A,this.associations.get(s))),s=A}e.material=s}getMaterialType(){return r.MeshStandardMaterial}loadMaterial(e){const t=this,s=this.json,n=this.extensions,i=s.materials[e];let o;const a={},A=i.extensions||{},l=[];if(A[re.KHR_MATERIALS_UNLIT]){const u=n[re.KHR_MATERIALS_UNLIT];o=u.getMaterialType(),l.push(u.extendParams(a,i,t))}else{const u=i.pbrMetallicRoughness||{};if(a.color=new r.Color(1,1,1),a.opacity=1,Array.isArray(u.baseColorFactor)){const p=u.baseColorFactor;a.color.setRGB(p[0],p[1],p[2],r.LinearSRGBColorSpace),a.opacity=p[3]}u.baseColorTexture!==void 0&&l.push(t.assignTexture(a,"map",u.baseColorTexture,r.SRGBColorSpace)),a.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,a.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(a,"metalnessMap",u.metallicRoughnessTexture)),l.push(t.assignTexture(a,"roughnessMap",u.metallicRoughnessTexture))),o=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,a)})))}i.doubleSided===!0&&(a.side=r.DoubleSide);const h=i.alphaMode||In.OPAQUE;if(h===In.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===In.MASK&&(a.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&o!==r.MeshBasicMaterial&&(l.push(t.assignTexture(a,"normalMap",i.normalTexture)),a.normalScale=new r.Vector2(1,1),i.normalTexture.scale!==void 0)){const u=i.normalTexture.scale;a.normalScale.set(u,u)}if(i.occlusionTexture!==void 0&&o!==r.MeshBasicMaterial&&(l.push(t.assignTexture(a,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&o!==r.MeshBasicMaterial){const u=i.emissiveFactor;a.emissive=new r.Color().setRGB(u[0],u[1],u[2],r.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&o!==r.MeshBasicMaterial&&l.push(t.assignTexture(a,"emissiveMap",i.emissiveTexture,r.SRGBColorSpace)),Promise.all(l).then(function(){const u=new o(a);return i.name&&(u.name=i.name),ct(u,i),t.associations.set(u,{materials:e}),i.extensions&&bt(n,u,i),u})}createUniqueName(e){const t=r.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,s=this.extensions,n=this.primitiveCache;function i(a){return s[re.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(A){return ms(A,a,t)})}const o=[];for(let a=0,A=e.length;a<A;a++){const l=e[a],h=or(l),u=n[h];if(u)o.push(u.promise);else{let p;l.extensions&&l.extensions[re.KHR_DRACO_MESH_COMPRESSION]?p=i(l):p=ms(new r.BufferGeometry,l,t),n[h]={primitive:l,promise:p},o.push(p)}}return Promise.all(o)}loadMesh(e){const t=this,s=this.json,n=this.extensions,i=s.meshes[e],o=i.primitives,a=[];for(let A=0,l=o.length;A<l;A++){const h=o[A].material===void 0?nr(this.cache):this.getDependency("material",o[A].material);a.push(h)}return a.push(t.loadGeometries(o)),Promise.all(a).then(function(A){const l=A.slice(0,A.length-1),h=A[A.length-1],u=[];for(let g=0,m=h.length;g<m;g++){const I=h[g],b=o[g];let B;const w=l[g];if(b.mode===We.TRIANGLES||b.mode===We.TRIANGLE_STRIP||b.mode===We.TRIANGLE_FAN||b.mode===void 0)B=i.isSkinnedMesh===!0?new r.SkinnedMesh(I,w):new r.Mesh(I,w),B.isSkinnedMesh===!0&&B.normalizeSkinWeights(),b.mode===We.TRIANGLE_STRIP?B.geometry=ds(B.geometry,r.TriangleStripDrawMode):b.mode===We.TRIANGLE_FAN&&(B.geometry=ds(B.geometry,r.TriangleFanDrawMode));else if(b.mode===We.LINES)B=new r.LineSegments(I,w);else if(b.mode===We.LINE_STRIP)B=new r.Line(I,w);else if(b.mode===We.LINE_LOOP)B=new r.LineLoop(I,w);else if(b.mode===We.POINTS)B=new r.Points(I,w);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+b.mode);Object.keys(B.geometry.morphAttributes).length>0&&ir(B,i),B.name=t.createUniqueName(i.name||"mesh_"+e),ct(B,i),b.extensions&&bt(n,B,b),t.assignFinalMaterial(B),u.push(B)}for(let g=0,m=u.length;g<m;g++)t.associations.set(u[g],{meshes:e,primitives:g});if(u.length===1)return i.extensions&&bt(n,u[0],i),u[0];const p=new r.Group;i.extensions&&bt(n,p,i),t.associations.set(p,{meshes:e});for(let g=0,m=u.length;g<m;g++)p.add(u[g]);return p})}loadCamera(e){let t;const s=this.json.cameras[e],n=s[s.type];if(!n){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?t=new r.PerspectiveCamera(r.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):s.type==="orthographic"&&(t=new r.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),s.name&&(t.name=this.createUniqueName(s.name)),ct(t,s),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],s=[];for(let n=0,i=t.joints.length;n<i;n++)s.push(this._loadNodeShallow(t.joints[n]));return t.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",t.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(n){const i=n.pop(),o=n,a=[],A=[];for(let l=0,h=o.length;l<h;l++){const u=o[l];if(u){a.push(u);const p=new r.Matrix4;i!==null&&p.fromArray(i.array,l*16),A.push(p)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[l])}return new r.Skeleton(a,A)})}loadAnimation(e){const t=this.json,s=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,o=[],a=[],A=[],l=[],h=[];let u=0,p=n.channels.length;for(u=0,p=n.channels.length;u<p;u++){const g=n.channels[u],m=n.samplers[g.sampler],I=g.target,b=I.node,B=n.parameters!==void 0?n.parameters[m.input]:m.input,w=n.parameters!==void 0?n.parameters[m.output]:m.output;I.node!==void 0&&(o.push(this.getDependency("node",b)),a.push(this.getDependency("accessor",B)),A.push(this.getDependency("accessor",w)),l.push(m),h.push(I))}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(A),Promise.all(l),Promise.all(h)]).then(function(g){const m=g[0],I=g[1],b=g[2],B=g[3],w=g[4],C=[];for(u=0,p=m.length;u<p;u++){const y=m[u],x=I[u],R=b[u],D=B[u],S=w[u];if(y===void 0)continue;y.updateMatrix&&y.updateMatrix();const v=s._createAnimationTracks(y,x,R,D,S);if(v)for(let U=0;U<v.length;U++)C.push(v[U])}return new r.AnimationClip(i,void 0,C)})}createNodeMesh(e){const t=this.json,s=this,n=t.nodes[e];return n.mesh===void 0?null:s.getDependency("mesh",n.mesh).then(function(i){const o=s._getNodeRef(s.meshCache,n.mesh,i);return n.weights!==void 0&&o.traverse(function(a){if(a.isMesh)for(let A=0,l=n.weights.length;A<l;A++)a.morphTargetInfluences[A]=n.weights[A]}),o})}loadNode(e){const t=this.json,s=this,n=t.nodes[e],i=s._loadNodeShallow(e),o=[],a=n.children||[];for(let l=0,h=a.length;l<h;l++)o.push(s.getDependency("node",a[l]));const A=n.skin===void 0?Promise.resolve(null):s.getDependency("skin",n.skin);return Promise.all([i,Promise.all(o),A]).then(function(l){const h=l[0],u=l[1],p=l[2];p!==null&&h.traverse(function(g){g.isSkinnedMesh&&g.bind(p,ar)});for(let g=0,m=u.length;g<m;g++)h.add(u[g]);return h})}_loadNodeShallow(e){const t=this.json,s=this.extensions,n=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const i=t.nodes[e],o=i.name?n.createUniqueName(i.name):"",a=[],A=n._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(e)});return A&&a.push(A),i.camera!==void 0&&a.push(n.getDependency("camera",i.camera).then(function(l){return n._getNodeRef(n.cameraCache,i.camera,l)})),n._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(e)}).forEach(function(l){a.push(l)}),this.nodeCache[e]=Promise.all(a).then(function(l){let h;if(i.isBone===!0?h=new r.Bone:l.length>1?h=new r.Group:l.length===1?h=l[0]:h=new r.Object3D,h!==l[0])for(let u=0,p=l.length;u<p;u++)h.add(l[u]);if(i.name&&(h.userData.name=i.name,h.name=o),ct(h,i),i.extensions&&bt(s,h,i),i.matrix!==void 0){const u=new r.Matrix4;u.fromArray(i.matrix),h.applyMatrix4(u)}else i.translation!==void 0&&h.position.fromArray(i.translation),i.rotation!==void 0&&h.quaternion.fromArray(i.rotation),i.scale!==void 0&&h.scale.fromArray(i.scale);return n.associations.has(h)||n.associations.set(h,{}),n.associations.get(h).nodes=e,h}),this.nodeCache[e]}loadScene(e){const t=this.extensions,s=this.json.scenes[e],n=this,i=new r.Group;s.name&&(i.name=n.createUniqueName(s.name)),ct(i,s),s.extensions&&bt(t,i,s);const o=s.nodes||[],a=[];for(let A=0,l=o.length;A<l;A++)a.push(n.getDependency("node",o[A]));return Promise.all(a).then(function(A){for(let h=0,u=A.length;h<u;h++)i.add(A[h]);const l=h=>{const u=new Map;for(const[p,g]of n.associations)(p instanceof r.Material||p instanceof r.Texture)&&u.set(p,g);return h.traverse(p=>{const g=n.associations.get(p);g!=null&&u.set(p,g)}),u};return n.associations=l(i),i})}_createAnimationTracks(e,t,s,n,i){const o=[],a=e.name?e.name:e.uuid,A=[];dt[i.path]===dt.weights?e.traverse(function(p){p.morphTargetInfluences&&A.push(p.name?p.name:p.uuid)}):A.push(a);let l;switch(dt[i.path]){case dt.weights:l=r.NumberKeyframeTrack;break;case dt.rotation:l=r.QuaternionKeyframeTrack;break;case dt.position:case dt.scale:l=r.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:l=r.NumberKeyframeTrack;break;case 2:case 3:default:l=r.VectorKeyframeTrack;break}break}const h=n.interpolation!==void 0?tr[n.interpolation]:r.InterpolateLinear,u=this._getArrayFromAccessor(s);for(let p=0,g=A.length;p<g;p++){const m=new l(A[p]+"."+dt[i.path],t.array,u,h);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(m),o.push(m)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const s=jn(t.constructor),n=new Float32Array(t.length);for(let i=0,o=t.length;i<o;i++)n[i]=t[i]*s;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(s){const n=this instanceof r.QuaternionKeyframeTrack?er:oi;return new n(this.times,this.values,this.getValueSize()/3,s)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function cr(c,e,t){const s=e.attributes,n=new r.Box3;if(s.POSITION!==void 0){const a=t.json.accessors[s.POSITION],A=a.min,l=a.max;if(A!==void 0&&l!==void 0){if(n.set(new r.Vector3(A[0],A[1],A[2]),new r.Vector3(l[0],l[1],l[2])),a.normalized){const h=jn(Rt[a.componentType]);n.min.multiplyScalar(h),n.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const i=e.targets;if(i!==void 0){const a=new r.Vector3,A=new r.Vector3;for(let l=0,h=i.length;l<h;l++){const u=i[l];if(u.POSITION!==void 0){const p=t.json.accessors[u.POSITION],g=p.min,m=p.max;if(g!==void 0&&m!==void 0){if(A.setX(Math.max(Math.abs(g[0]),Math.abs(m[0]))),A.setY(Math.max(Math.abs(g[1]),Math.abs(m[1]))),A.setZ(Math.max(Math.abs(g[2]),Math.abs(m[2]))),p.normalized){const I=jn(Rt[p.componentType]);A.multiplyScalar(I)}a.max(A)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}n.expandByVector(a)}c.boundingBox=n;const o=new r.Sphere;n.getCenter(o.center),o.radius=n.min.distanceTo(n.max)/2,c.boundingSphere=o}function ms(c,e,t){const s=e.attributes,n=[];function i(o,a){return t.getDependency("accessor",o).then(function(A){c.setAttribute(a,A)})}for(const o in s){const a=Hn[o]||o.toLowerCase();a in c.attributes||n.push(i(s[o],a))}if(e.indices!==void 0&&!c.index){const o=t.getDependency("accessor",e.indices).then(function(a){c.setIndex(a)});n.push(o)}return r.ColorManagement.workingColorSpace!==r.LinearSRGBColorSpace&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${r.ColorManagement.workingColorSpace}" not supported.`),ct(c,e),cr(c,e,t),Promise.all(n).then(function(){return e.targets!==void 0?sr(c,e.targets,t):c})}var lr=(function(){var c="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),s=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n=WebAssembly.validate(t)?e:c,i,o=WebAssembly.instantiate(a(n),{}).then(function(B){i=B.instance,i.exports.__wasm_call_ctors()});function a(B){for(var w=new Uint8Array(B.length),C=0;C<B.length;++C){var y=B.charCodeAt(C);w[C]=y>96?y-97:y>64?y-39:y+4}for(var x=0,C=0;C<B.length;++C)w[x++]=w[C]<60?s[w[C]]:(w[C]-60)*64+w[++C];return w.buffer.slice(0,x)}function A(B,w,C,y,x,R){var D=i.exports.sbrk,S=C+3&-4,v=D(S*y),U=D(x.length),G=new Uint8Array(i.exports.memory.buffer);G.set(x,U);var H=B(v,C,y,U,x.length);if(H==0&&R&&R(v,S,y),w.set(G.subarray(v,v+C*y)),D(v-D(0)),H!=0)throw new Error("Malformed buffer data: "+H)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},h={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},u=[],p=0;function g(B){var w={object:new Worker(B),pending:0,requests:{}};return w.object.onmessage=function(C){var y=C.data;w.pending-=y.count,w.requests[y.id][y.action](y.value),delete w.requests[y.id]},w}function m(B){for(var w="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a(n))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+A.toString()+b.toString(),C=new Blob([w],{type:"text/javascript"}),y=URL.createObjectURL(C),x=0;x<B;++x)u[x]=g(y);URL.revokeObjectURL(y)}function I(B,w,C,y,x){for(var R=u[0],D=1;D<u.length;++D)u[D].pending<R.pending&&(R=u[D]);return new Promise(function(S,v){var U=new Uint8Array(C),G=p++;R.pending+=B,R.requests[G]={resolve:S,reject:v},R.object.postMessage({id:G,count:B,size:w,source:U,mode:y,filter:x},[U.buffer])})}function b(B){o.then(function(){var w=B.data;try{var C=new Uint8Array(w.count*w.size);A(i.exports[w.mode],C,w.count,w.size,w.source,i.exports[w.filter]),self.postMessage({id:w.id,count:w.count,action:"resolve",value:C},[C.buffer])}catch(y){self.postMessage({id:w.id,count:w.count,action:"reject",value:y})}})}return{ready:o,supported:!0,useWorkers:function(B){m(B)},decodeVertexBuffer:function(B,w,C,y,x){A(i.exports.meshopt_decodeVertexBuffer,B,w,C,y,i.exports[l[x]])},decodeIndexBuffer:function(B,w,C,y){A(i.exports.meshopt_decodeIndexBuffer,B,w,C,y)},decodeIndexSequence:function(B,w,C,y){A(i.exports.meshopt_decodeIndexSequence,B,w,C,y)},decodeGltfBuffer:function(B,w,C,y,x,R){A(i.exports[h[x]],B,w,C,y,i.exports[l[R]])},decodeGltfBufferAsync:function(B,w,C,y,x){return u.length>0?I(B,w,C,h[y],l[x]):o.then(function(){var R=new Uint8Array(B*w);return A(i.exports[h[y]],R,B,w,C,i.exports[l[x]]),R})}}})();const En=new WeakMap;class hr extends r.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,s,n){const i=new r.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,o=>{this.parse(o,t,n)},s,n)}parse(e,t,s=()=>{}){this.decodeDracoFile(e,t,null,null,r.SRGBColorSpace,s).catch(s)}decodeDracoFile(e,t,s,n,i=r.LinearSRGBColorSpace,o=()=>{}){const a={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:i};return this.decodeGeometry(e,a).then(t).catch(o)}decodeGeometry(e,t){const s=JSON.stringify(t);if(En.has(e)){const A=En.get(e);if(A.key===s)return A.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n;const i=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(i,o).then(A=>(n=A,new Promise((l,h)=>{n._callbacks[i]={resolve:l,reject:h},n.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(A=>this._createGeometry(A.geometry));return a.catch(()=>!0).then(()=>{n&&i&&this._releaseTask(n,i)}),En.set(e,{key:s,promise:a}),a}_createGeometry(e){const t=new r.BufferGeometry;e.index&&t.setIndex(new r.BufferAttribute(e.index.array,1));for(let s=0;s<e.attributes.length;s++){const n=e.attributes[s],i=n.name,o=n.array,a=n.itemSize,A=new r.BufferAttribute(o,a);i==="color"&&(this._assignVertexColorSpace(A,n.vertexColorSpace),A.normalized=!(o instanceof Float32Array)),t.setAttribute(i,A)}return t}_assignVertexColorSpace(e,t){if(t!==r.SRGBColorSpace)return;const s=new r.Color;for(let n=0,i=e.count;n<i;n++)s.fromBufferAttribute(e,n),r.ColorManagement.toWorkingColorSpace(s,r.SRGBColorSpace),e.setXYZ(n,s.r,s.g,s.b)}_loadLibrary(e,t){const s=new r.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(t),s.setWithCredentials(this.withCredentials),new Promise((n,i)=>{s.load(e,n,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(s=>{const n=s[0];e||(this.decoderConfig.wasmBinary=s[1]);const i=ur.toString(),o=["/* draco decoder */",n,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
34
34
  `);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(i){const o=i.data;switch(o.type){case"decode":n._callbacks[o.id].resolve(o);break;case"error":n._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,i){return n._taskLoad>i._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[e]=t,s._taskLoad+=t,s})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function ur(){let c,e;onmessage=function(o){const a=o.data;switch(a.type){case"init":c=a.decoderConfig,e=new Promise(function(h){c.onModuleLoaded=function(u){h({draco:u})},DracoDecoderModule(c)});break;case"decode":const A=a.buffer,l=a.taskConfig;e.then(h=>{const u=h.draco,p=new u.Decoder;try{const g=t(u,p,new Int8Array(A),l),m=g.attributes.map(I=>I.array.buffer);g.index&&m.push(g.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:g},m)}catch(g){console.error(g),self.postMessage({type:"error",id:a.id,error:g.message})}finally{u.destroy(p)}});break}};function t(o,a,A,l){const h=l.attributeIDs,u=l.attributeTypes;let p,g;const m=a.GetEncodedGeometryType(A);if(m===o.TRIANGULAR_MESH)p=new o.Mesh,g=a.DecodeArrayToMesh(A,A.byteLength,p);else if(m===o.POINT_CLOUD)p=new o.PointCloud,g=a.DecodeArrayToPointCloud(A,A.byteLength,p);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!g.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+g.error_msg());const I={index:null,attributes:[]};for(const b in h){const B=self[u[b]];let w,C;if(l.useUniqueIDs)C=h[b],w=a.GetAttributeByUniqueId(p,C);else{if(C=a.GetAttributeId(p,o[h[b]]),C===-1)continue;w=a.GetAttribute(p,C)}const y=n(o,a,p,b,B,w);b==="color"&&(y.vertexColorSpace=l.vertexColorSpace),I.attributes.push(y)}return m===o.TRIANGULAR_MESH&&(I.index=s(o,a,p)),o.destroy(p),I}function s(o,a,A){const h=A.num_faces()*3,u=h*4,p=o._malloc(u);a.GetTrianglesUInt32Array(A,u,p);const g=new Uint32Array(o.HEAPF32.buffer,p,h).slice();return o._free(p),{array:g,itemSize:1}}function n(o,a,A,l,h,u){const p=u.num_components(),m=A.num_points()*p,I=m*h.BYTES_PER_ELEMENT,b=i(o,h),B=o._malloc(I);a.GetAttributeDataArrayForAllPoints(A,u,b,I,B);const w=new h(o.HEAPF32.buffer,B,m).slice();return o._free(B),{name:l,array:w,itemSize:p}}function i(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}class dr{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const s=this.workersResolve[e];if(s&&s(t),this.queue.length){const{resolve:n,msg:i,transfer:o}=this.queue.shift();this.workersResolve[e]=n,this.workers[e].postMessage(i,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(s=>{const n=this._getIdleWorker();n!==-1?(this._initWorker(n),this.workerStatus|=1<<n,this.workersResolve[n]=s,this.workers[n].postMessage(e,t)):this.queue.push({resolve:s,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const pr=0,Is=2,gr=1,bs=2,fr=0,mr=1,Ir=10,br=0,ri=9,ai=15,Ai=16,ci=22,li=37,hi=43,ui=76,di=83,pi=97,gi=100,fi=103,mi=109,Ii=122,bi=123,Er=131,Cr=132,Br=133,yr=134,wr=137,Qr=138,xr=141,Sr=142,Tr=145,vr=146,Ei=148,Ci=152,Mr=157,Rr=158,Bi=165,yi=166,$n=1000066e3;class kt{constructor(e,t,s,n){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,s),this._littleEndian=n,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){const s=this._offset;let n=0;for(;this._dataView.getUint8(this._offset)!==t&&n<e;)n++,this._offset++;return n<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+s,n)}}const Le=[171,75,84,88,32,50,48,187,13,10,26,10];function Es(c){return new TextDecoder().decode(c)}function Dr(c){const e=new Uint8Array(c.buffer,c.byteOffset,Le.length);if(e[0]!==Le[0]||e[1]!==Le[1]||e[2]!==Le[2]||e[3]!==Le[3]||e[4]!==Le[4]||e[5]!==Le[5]||e[6]!==Le[6]||e[7]!==Le[7]||e[8]!==Le[8]||e[9]!==Le[9]||e[10]!==Le[10]||e[11]!==Le[11])throw new Error("Missing KTX 2.0 identifier.");const t={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},s=17*Uint32Array.BYTES_PER_ELEMENT,n=new kt(c,Le.length,s,!0);t.vkFormat=n._nextUint32(),t.typeSize=n._nextUint32(),t.pixelWidth=n._nextUint32(),t.pixelHeight=n._nextUint32(),t.pixelDepth=n._nextUint32(),t.layerCount=n._nextUint32(),t.faceCount=n._nextUint32(),t.levelCount=n._nextUint32(),t.supercompressionScheme=n._nextUint32();const i=n._nextUint32(),o=n._nextUint32(),a=n._nextUint32(),A=n._nextUint32(),l=n._nextUint64(),h=n._nextUint64(),u=3*Math.max(t.levelCount,1)*8,p=new kt(c,Le.length+s,u,!0);for(let te=0,W=Math.max(t.levelCount,1);te<W;te++)t.levels.push({levelData:new Uint8Array(c.buffer,c.byteOffset+p._nextUint64(),p._nextUint64()),uncompressedByteLength:p._nextUint64()});const g=new kt(c,i,o,!0);g._skip(4);const m=g._nextUint16(),I=g._nextUint16(),b=g._nextUint16(),B=g._nextUint16(),w={vendorId:m,descriptorType:I,versionNumber:b,colorModel:g._nextUint8(),colorPrimaries:g._nextUint8(),transferFunction:g._nextUint8(),flags:g._nextUint8(),texelBlockDimension:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],bytesPlane:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],samples:[]},C=(B/4-6)/4;for(let te=0;te<C;te++){const W={bitOffset:g._nextUint16(),bitLength:g._nextUint8(),channelType:g._nextUint8(),samplePosition:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&W.channelType?(W.sampleLower=g._nextInt32(),W.sampleUpper=g._nextInt32()):(W.sampleLower=g._nextUint32(),W.sampleUpper=g._nextUint32()),w.samples[te]=W}t.dataFormatDescriptor.length=0,t.dataFormatDescriptor.push(w);const y=new kt(c,a,A,!0);for(;y._offset<A;){const te=y._nextUint32(),W=y._scan(te),se=Es(W);if(t.keyValue[se]=y._nextUint8Array(te-W.byteLength-1),se.match(/^ktx/i)){const de=Es(t.keyValue[se]);t.keyValue[se]=de.substring(0,de.lastIndexOf("\0"))}y._skip(te%4?4-te%4:0)}if(h<=0)return t;const x=new kt(c,l,h,!0),R=x._nextUint16(),D=x._nextUint16(),S=x._nextUint32(),v=x._nextUint32(),U=x._nextUint32(),G=x._nextUint32(),H=[];for(let te=0,W=Math.max(t.levelCount,1);te<W;te++)H.push({imageFlags:x._nextUint32(),rgbSliceByteOffset:x._nextUint32(),rgbSliceByteLength:x._nextUint32(),alphaSliceByteOffset:x._nextUint32(),alphaSliceByteLength:x._nextUint32()});const X=l+x._offset,N=X+S,Y=N+v,O=Y+U,Z=new Uint8Array(c.buffer,c.byteOffset+X,S),ie=new Uint8Array(c.buffer,c.byteOffset+N,v),ee=new Uint8Array(c.buffer,c.byteOffset+Y,U),ce=new Uint8Array(c.buffer,c.byteOffset+O,G);return t.globalData={endpointCount:R,selectorCount:D,imageDescs:H,endpointsData:Z,selectorsData:ie,tablesData:ee,extendedData:ce},t}let Cn,At,qn;const Bn={env:{emscripten_notify_memory_growth:function(c){qn=new Uint8Array(At.exports.memory.buffer)}}};class _r{init(){return Cn||(Cn=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Cs).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Bn)).then(this._init):WebAssembly.instantiate(Buffer.from(Cs,"base64"),Bn).then(this._init),Cn)}_init(e){At=e.instance,Bn.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!At)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=e.byteLength,n=At.exports.malloc(s);qn.set(e,n),t=t||Number(At.exports.ZSTD_findDecompressedSize(n,s));const i=At.exports.malloc(t),o=At.exports.ZSTD_decompress(i,t,n,s),a=qn.slice(i,i+o);return At.exports.free(n),At.exports.free(i),a}}const Cs="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",Fr="display-p3",Lr="display-p3-linear",yn=new WeakMap;let wn=0,Qn;class Xe extends r.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new dr,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new r.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),s=new r.FileLoader(this.manager);s.setPath(this.transcoderPath),s.setResponseType("arraybuffer"),s.setWithCredentials(this.withCredentials);const n=s.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,n]).then(([i,o])=>{const a=Xe.BasisWorker.toString(),A=["/* constants */","let _EngineFormat = "+JSON.stringify(Xe.EngineFormat),"let _EngineType = "+JSON.stringify(Xe.EngineType),"let _TranscoderFormat = "+JSON.stringify(Xe.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Xe.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
35
35
  `);this.workerSourceURL=URL.createObjectURL(new Blob([A])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const l=new Worker(this.workerSourceURL),h=this.transcoderBinary.slice(0);return l.postMessage({type:"init",config:this.workerConfig,transcoderBinary:h},[h]),l})}),wn>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),wn++}return this.transcoderPending}load(e,t,s,n){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new r.FileLoader(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setResponseType("arraybuffer"),i.load(e,o=>{this.parse(o,t,n)},s,n)}parse(e,t,s){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(yn.has(e))return yn.get(e).promise.then(t).catch(s);this._createTexture(e).then(n=>t?t(n):null).catch(s)}_createTextureFrom(e,t){const{type:s,error:n,data:{faces:i,width:o,height:a,format:A,type:l,dfdFlags:h}}=e;if(s==="error")return Promise.reject(n);let u;if(t.faceCount===6)u=new r.CompressedCubeTexture(i,A,l);else{const p=i[0].mipmaps;u=t.layerCount>1?new r.CompressedArrayTexture(p,o,a,t.layerCount,A,l):new r.CompressedTexture(p,o,a,A,l)}return u.minFilter=i[0].mipmaps.length===1?r.LinearFilter:r.LinearMipmapLinearFilter,u.magFilter=r.LinearFilter,u.generateMipmaps=!1,u.needsUpdate=!0,u.colorSpace=wi(t),u.premultiplyAlpha=!!(h&gr),u}async _createTexture(e,t={}){const s=Dr(new Uint8Array(e)),n=s.vkFormat===$n&&s.dataFormatDescriptor[0].colorModel===167;if(!(s.vkFormat===br||n&&!this.workerConfig.astcHDRSupported))return Gr(s);const o=t,a=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:o},[e])).then(A=>this._createTextureFrom(A.data,s));return yn.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),wn--}}Xe.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2};Xe.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25};Xe.EngineFormat={RGBAFormat:r.RGBAFormat,RGBA_ASTC_4x4_Format:r.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:r.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:r.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:r.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:r.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:r.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:r.RGB_ETC1_Format,RGB_ETC2_Format:r.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:r.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:r.RGBA_S3TC_DXT1_Format};Xe.EngineType={UnsignedByteType:r.UnsignedByteType,HalfFloatType:r.HalfFloatType,FloatType:r.FloatType};Xe.BasisWorker=function(){let c,e,t;const s=_EngineFormat,n=_EngineType,i=_TranscoderFormat,o=_BasisFormat;self.addEventListener("message",function(m){const I=m.data;switch(I.type){case"init":c=I.config,a(I.transcoderBinary);break;case"transcode":e.then(()=>{try{const{faces:b,buffers:B,width:w,height:C,hasAlpha:y,format:x,type:R,dfdFlags:D}=A(I.buffer);self.postMessage({type:"transcode",id:I.id,data:{faces:b,width:w,height:C,hasAlpha:y,format:x,type:R,dfdFlags:D}},B)}catch(b){console.error(b),self.postMessage({type:"error",id:I.id,error:b.message})}});break}});function a(m){e=new Promise(I=>{t={wasmBinary:m,onRuntimeInitialized:I},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function A(m){const I=new t.KTX2File(new Uint8Array(m));function b(){I.close(),I.delete()}if(!I.isValid())throw b(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let B;if(I.isUASTC())B=o.UASTC;else if(I.isETC1S())B=o.ETC1S;else if(I.isHDR())B=o.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const w=I.getWidth(),C=I.getHeight(),y=I.getLayers()||1,x=I.getLevels(),R=I.getFaces(),D=I.getHasAlpha(),S=I.getDFDFlags(),{transcoderFormat:v,engineFormat:U,engineType:G}=u(B,w,C,D);if(!w||!C||!x)throw b(),new Error("THREE.KTX2Loader: Invalid texture");if(!I.startTranscoding())throw b(),new Error("THREE.KTX2Loader: .startTranscoding failed");const H=[],X=[];for(let N=0;N<R;N++){const Y=[];for(let O=0;O<x;O++){const Z=[];let ie,ee;for(let te=0;te<y;te++){const W=I.getImageLevelInfo(O,te,N);N===0&&O===0&&te===0&&(W.origWidth%4!==0||W.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),x>1?(ie=W.origWidth,ee=W.origHeight):(ie=W.width,ee=W.height);let se=new Uint8Array(I.getImageTranscodedSizeInBytes(O,te,0,v));const de=I.transcodeImage(se,O,te,N,v,0,-1,-1);if(G===n.HalfFloatType&&(se=new Uint16Array(se.buffer,se.byteOffset,se.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!de)throw b(),new Error("THREE.KTX2Loader: .transcodeImage failed.");Z.push(se)}const ce=g(Z);Y.push({data:ce,width:ie,height:ee}),X.push(ce.buffer)}H.push({mipmaps:Y,width:w,height:C,format:U,type:G})}return b(),{faces:H,buffers:X,width:w,height:C,hasAlpha:D,dfdFlags:S,format:U,type:G}}const l=[{if:"astcSupported",basisFormat:[o.UASTC],transcoderFormat:[i.ASTC_4x4,i.ASTC_4x4],engineFormat:[s.RGBA_ASTC_4x4_Format,s.RGBA_ASTC_4x4_Format],engineType:[n.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC7_M5,i.BC7_M5],engineFormat:[s.RGBA_BPTC_Format,s.RGBA_BPTC_Format],engineType:[n.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.BC1,i.BC3],engineFormat:[s.RGBA_S3TC_DXT1_Format,s.RGBA_S3TC_DXT5_Format],engineType:[n.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1,i.ETC2],engineFormat:[s.RGB_ETC2_Format,s.RGBA_ETC2_EAC_Format],engineType:[n.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.ETC1],engineFormat:[s.RGB_ETC1_Format],engineType:[n.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.PVRTC1_4_RGB,i.PVRTC1_4_RGBA],engineFormat:[s.RGB_PVRTC_4BPPV1_Format,s.RGBA_PVRTC_4BPPV1_Format],engineType:[n.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[o.UASTC_HDR],transcoderFormat:[i.BC6H],engineFormat:[s.RGB_BPTC_UNSIGNED_Format],engineType:[n.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[i.RGBA32,i.RGBA32],engineFormat:[s.RGBAFormat,s.RGBAFormat],engineType:[n.UnsignedByteType,n.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[i.RGBA_HALF],engineFormat:[s.RGBAFormat],engineType:[n.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],h={[o.ETC1S]:l.filter(m=>m.basisFormat.includes(o.ETC1S)).sort((m,I)=>m.priorityUASTC-I.priorityUASTC),[o.UASTC]:l.filter(m=>m.basisFormat.includes(o.UASTC)).sort((m,I)=>m.priorityUASTC-I.priorityUASTC),[o.UASTC_HDR]:l.filter(m=>m.basisFormat.includes(o.UASTC_HDR)).sort((m,I)=>m.priorityHDR-I.priorityHDR)};function u(m,I,b,B){const w=h[m];for(let C=0;C<w.length;C++){const y=w[C];if(y.if&&!c[y.if]||!y.basisFormat.includes(m)||B&&y.transcoderFormat.length<2||y.needsPowerOfTwo&&!(p(I)&&p(b)))continue;const x=y.transcoderFormat[B?1:0],R=y.engineFormat[B?1:0],D=y.engineType[0];return{transcoderFormat:x,engineFormat:R,engineType:D}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function p(m){return m<=2?!0:(m&m-1)===0&&m!==0}function g(m){if(m.length===1)return m[0];let I=0;for(let w=0;w<m.length;w++){const C=m[w];I+=C.byteLength}const b=new Uint8Array(I);let B=0;for(let w=0;w<m.length;w++){const C=m[w];b.set(C,B),B+=C.byteLength}return b}};const kr=new Set([r.RGBAFormat,r.RGBFormat,r.RGFormat,r.RedFormat]),xn={[mi]:r.RGBAFormat,[pi]:r.RGBAFormat,[li]:r.RGBAFormat,[hi]:r.RGBAFormat,[fi]:r.RGFormat,[di]:r.RGFormat,[Ai]:r.RGFormat,[ci]:r.RGFormat,[gi]:r.RedFormat,[ui]:r.RedFormat,[ai]:r.RedFormat,[ri]:r.RedFormat,[bi]:r.RGBFormat,[Ii]:r.RGBFormat,[Ei]:r.RGB_ETC2_Format,[Ci]:r.RGBA_ETC2_EAC_Format,[$n]:r.RGBA_ASTC_4x4_Format,[Rr]:r.RGBA_ASTC_4x4_Format,[Mr]:r.RGBA_ASTC_4x4_Format,[yi]:r.RGBA_ASTC_6x6_Format,[Bi]:r.RGBA_ASTC_6x6_Format,[Br]:r.RGBA_S3TC_DXT1_Format,[yr]:r.RGBA_S3TC_DXT1_Format,[Er]:r.RGB_S3TC_DXT1_Format,[Cr]:r.RGB_S3TC_DXT1_Format,[Qr]:r.RGBA_S3TC_DXT3_Format,[wr]:r.RGBA_S3TC_DXT3_Format,[Sr]:r.RGBA_S3TC_DXT5_Format,[xr]:r.RGBA_S3TC_DXT5_Format,[vr]:r.RGBA_BPTC_Format,[Tr]:r.RGBA_BPTC_Format},Gt={[mi]:r.FloatType,[pi]:r.HalfFloatType,[li]:r.UnsignedByteType,[hi]:r.UnsignedByteType,[fi]:r.FloatType,[di]:r.HalfFloatType,[Ai]:r.UnsignedByteType,[ci]:r.UnsignedByteType,[gi]:r.FloatType,[ui]:r.HalfFloatType,[ai]:r.UnsignedByteType,[ri]:r.UnsignedByteType,[bi]:r.UnsignedInt5999Type,[Ii]:r.UnsignedInt101111Type,[Ei]:r.UnsignedByteType,[Ci]:r.UnsignedByteType,[$n]:r.HalfFloatType,[yi]:r.UnsignedByteType,[Bi]:r.UnsignedByteType};async function Gr(c){const{vkFormat:e}=c;if(xn[e]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let t;c.supercompressionScheme===Is&&(Qn||(Qn=new Promise(async o=>{const a=new _r;await a.init(),o(a)})),t=await Qn);const s=[];for(let o=0;o<c.levels.length;o++){const a=Math.max(1,c.pixelWidth>>o),A=Math.max(1,c.pixelHeight>>o),l=c.pixelDepth?Math.max(1,c.pixelDepth>>o):0,h=c.levels[o];let u;if(c.supercompressionScheme===pr)u=h.levelData;else if(c.supercompressionScheme===Is)u=t.decode(h.levelData,h.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let p;Gt[e]===r.FloatType?p=new Float32Array(u.buffer,u.byteOffset,u.byteLength/Float32Array.BYTES_PER_ELEMENT):Gt[e]===r.HalfFloatType?p=new Uint16Array(u.buffer,u.byteOffset,u.byteLength/Uint16Array.BYTES_PER_ELEMENT):Gt[e]===r.UnsignedInt5999Type||Gt[e]===r.UnsignedInt101111Type?p=new Uint32Array(u.buffer,u.byteOffset,u.byteLength/Uint32Array.BYTES_PER_ELEMENT):p=u,s.push({data:p,width:a,height:A,depth:l})}const n=c.levelCount===0||s.length>1;let i;if(kr.has(xn[e]))i=c.pixelDepth===0?new r.DataTexture(s[0].data,c.pixelWidth,c.pixelHeight):new r.Data3DTexture(s[0].data,c.pixelWidth,c.pixelHeight,c.pixelDepth),i.minFilter=n?r.NearestMipmapNearestFilter:r.NearestFilter,i.magFilter=r.NearestFilter,i.generateMipmaps=c.levelCount===0;else{if(c.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");i=new r.CompressedTexture(s,c.pixelWidth,c.pixelHeight),i.minFilter=n?r.LinearMipmapLinearFilter:r.LinearFilter,i.magFilter=r.LinearFilter}return i.mipmaps=s,i.type=Gt[e],i.format=xn[e],i.colorSpace=wi(c),i.needsUpdate=!0,Promise.resolve(i)}function wi(c){const e=c.dataFormatDescriptor[0];return e.colorPrimaries===mr?e.transferFunction===bs?r.SRGBColorSpace:r.LinearSRGBColorSpace:e.colorPrimaries===Ir?e.transferFunction===bs?Fr:Lr:(e.colorPrimaries===fr||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),r.NoColorSpace)}class Nr extends r.ExtrudeGeometry{constructor(e,t={}){const s=t.font;if(s===void 0)super();else{const n=s.generateShapes(e,t.size);t.depth===void 0&&t.height!==void 0&&console.warn("THREE.TextGeometry: .height is now depreciated. Please use .depth instead"),t.depth=t.depth!==void 0?t.depth:t.height!==void 0?t.height:50,t.bevelThickness===void 0&&(t.bevelThickness=10),t.bevelSize===void 0&&(t.bevelSize=8),t.bevelEnabled===void 0&&(t.bevelEnabled=!1),super(n,t)}this.type="TextGeometry"}}class Ur extends r.Loader{constructor(e){super(e)}load(e,t,s,n){const i=this,o=new r.FileLoader(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){const A=i.parse(JSON.parse(a));t&&t(A)},s,n)}parse(e){return new Qi(e)}}class Qi{constructor(e){this.isFont=!0,this.type="Font",this.data=e}generateShapes(e,t=100){const s=[],n=Pr(e,t,this.data);for(let i=0,o=n.length;i<o;i++)s.push(...n[i].toShapes());return s}}function Pr(c,e,t){const s=Array.from(c),n=e/t.resolution,i=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*n,o=[];let a=0,A=0;for(let l=0;l<s.length;l++){const h=s[l];if(h===`
36
- `)a=0,A-=i;else{const u=Or(h,n,a,A,t);a+=u.offsetX,o.push(u.path)}}return o}function Or(c,e,t,s,n){const i=n.glyphs[c]||n.glyphs["?"];if(!i){console.error('THREE.Font: character "'+c+'" does not exists in font family '+n.familyName+".");return}const o=new r.ShapePath;let a,A,l,h,u,p,g,m;if(i.o){const I=i._cachedOutline||(i._cachedOutline=i.o.split(" "));for(let b=0,B=I.length;b<B;)switch(I[b++]){case"m":a=I[b++]*e+t,A=I[b++]*e+s,o.moveTo(a,A);break;case"l":a=I[b++]*e+t,A=I[b++]*e+s,o.lineTo(a,A);break;case"q":l=I[b++]*e+t,h=I[b++]*e+s,u=I[b++]*e+t,p=I[b++]*e+s,o.quadraticCurveTo(u,p,l,h);break;case"b":l=I[b++]*e+t,h=I[b++]*e+s,u=I[b++]*e+t,p=I[b++]*e+s,g=I[b++]*e+t,m=I[b++]*e+s,o.bezierCurveTo(u,p,g,m,l,h);break}}return{offsetX:i.ha*e,path:o}}const Et=new r.Raycaster,Fe=new r.Vector3,pt=new r.Vector3,Ce=new r.Quaternion,Bs={X:new r.Vector3(1,0,0),Y:new r.Vector3(0,1,0),Z:new r.Vector3(0,0,1)},Sn={type:"change"},ys={type:"mouseDown",mode:null},ws={type:"mouseUp",mode:null},Qs={type:"objectChange"};class Hr extends r.Controls{constructor(e,t=null){super(void 0,t);const s=new Kr(this);this._root=s;const n=new xi;this._gizmo=n,s.add(n);const i=new Jr;this._plane=i,s.add(i);const o=this;function a(C,y){let x=y;Object.defineProperty(o,C,{get:function(){return x!==void 0?x:y},set:function(R){x!==R&&(x=R,i[C]=R,n[C]=R,o.dispatchEvent({type:C+"-changed",value:R}),o.dispatchEvent(Sn))}}),o[C]=y,i[C]=y,n[C]=y}a("camera",e),a("object",void 0),a("enabled",!0),a("axis",null),a("mode","translate"),a("translationSnap",null),a("rotationSnap",null),a("scaleSnap",null),a("space","world"),a("size",1),a("dragging",!1),a("showX",!0),a("showY",!0),a("showZ",!0);const A=new r.Vector3,l=new r.Vector3,h=new r.Quaternion,u=new r.Quaternion,p=new r.Vector3,g=new r.Quaternion,m=new r.Vector3,I=new r.Vector3,b=new r.Vector3,B=0,w=new r.Vector3;a("worldPosition",A),a("worldPositionStart",l),a("worldQuaternion",h),a("worldQuaternionStart",u),a("cameraPosition",p),a("cameraQuaternion",g),a("pointStart",m),a("pointEnd",I),a("rotationAxis",b),a("rotationAngle",B),a("eye",w),this._offset=new r.Vector3,this._startNorm=new r.Vector3,this._endNorm=new r.Vector3,this._cameraScale=new r.Vector3,this._parentPosition=new r.Vector3,this._parentQuaternion=new r.Quaternion,this._parentQuaternionInv=new r.Quaternion,this._parentScale=new r.Vector3,this._worldScaleStart=new r.Vector3,this._worldQuaternionInv=new r.Quaternion,this._worldScale=new r.Vector3,this._positionStart=new r.Vector3,this._quaternionStart=new r.Quaternion,this._scaleStart=new r.Vector3,this._getPointer=jr.bind(this),this._onPointerDown=zr.bind(this),this._onPointerHover=qr.bind(this),this._onPointerMove=Yr.bind(this),this._onPointerUp=Vr.bind(this),t!==null&&this.connect()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="auto"}getHelper(){return this._root}pointerHover(e){if(this.object===void 0||this.dragging===!0)return;e!==null&&Et.setFromCamera(e,this.camera);const t=Tn(this._gizmo.picker[this.mode],Et);t?this.axis=t.object.name:this.axis=null}pointerDown(e){if(!(this.object===void 0||this.dragging===!0||e!=null&&e.button!==0)&&this.axis!==null){e!==null&&Et.setFromCamera(e,this.camera);const t=Tn(this._plane,Et,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,ys.mode=this.mode,this.dispatchEvent(ys)}}pointerMove(e){const t=this.axis,s=this.mode,n=this.object;let i=this.space;if(s==="scale"?i="local":(t==="E"||t==="XYZE"||t==="XYZ")&&(i="world"),n===void 0||t===null||this.dragging===!1||e!==null&&e.button!==-1)return;e!==null&&Et.setFromCamera(e,this.camera);const o=Tn(this._plane,Et,!0);if(o){if(this.pointEnd.copy(o.point).sub(this.worldPositionStart),s==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),i==="local"&&t!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf("X")===-1&&(this._offset.x=0),t.indexOf("Y")===-1&&(this._offset.y=0),t.indexOf("Z")===-1&&(this._offset.z=0),i==="local"&&t!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),n.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(i==="local"&&(n.position.applyQuaternion(Ce.copy(this._quaternionStart).invert()),t.search("X")!==-1&&(n.position.x=Math.round(n.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(n.position.y=Math.round(n.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(n.position.z=Math.round(n.position.z/this.translationSnap)*this.translationSnap),n.position.applyQuaternion(this._quaternionStart)),i==="world"&&(n.parent&&n.position.add(Fe.setFromMatrixPosition(n.parent.matrixWorld)),t.search("X")!==-1&&(n.position.x=Math.round(n.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(n.position.y=Math.round(n.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(n.position.z=Math.round(n.position.z/this.translationSnap)*this.translationSnap),n.parent&&n.position.sub(Fe.setFromMatrixPosition(n.parent.matrixWorld))));else if(s==="scale"){if(t.search("XYZ")!==-1){let a=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(a*=-1),pt.set(a,a,a)}else Fe.copy(this.pointStart),pt.copy(this.pointEnd),Fe.applyQuaternion(this._worldQuaternionInv),pt.applyQuaternion(this._worldQuaternionInv),pt.divide(Fe),t.search("X")===-1&&(pt.x=1),t.search("Y")===-1&&(pt.y=1),t.search("Z")===-1&&(pt.z=1);n.scale.copy(this._scaleStart).multiply(pt),this.scaleSnap&&(t.search("X")!==-1&&(n.scale.x=Math.round(n.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Y")!==-1&&(n.scale.y=Math.round(n.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Z")!==-1&&(n.scale.z=Math.round(n.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(s==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const a=20/this.worldPosition.distanceTo(Fe.setFromMatrixPosition(this.camera.matrixWorld));let A=!1;t==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(Fe.copy(this.rotationAxis).cross(this.eye))*a):(t==="X"||t==="Y"||t==="Z")&&(this.rotationAxis.copy(Bs[t]),Fe.copy(Bs[t]),i==="local"&&Fe.applyQuaternion(this.worldQuaternion),Fe.cross(this.eye),Fe.length()===0?A=!0:this.rotationAngle=this._offset.dot(Fe.normalize())*a),(t==="E"||A)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),i==="local"&&t!=="E"&&t!=="XYZE"?(n.quaternion.copy(this._quaternionStart),n.quaternion.multiply(Ce.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),n.quaternion.copy(Ce.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),n.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(Sn),this.dispatchEvent(Qs)}}pointerUp(e){e!==null&&e.button!==0||(this.dragging&&this.axis!==null&&(ws.mode=this.mode,this.dispatchEvent(ws)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})}attach(e){return this.object=e,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(Sn),this.dispatchEvent(Qs),this.pointStart.copy(this.pointEnd))}getRaycaster(){return Et}getMode(){return this.mode}setMode(e){this.mode=e}setTranslationSnap(e){this.translationSnap=e}setRotationSnap(e){this.rotationSnap=e}setScaleSnap(e){this.scaleSnap=e}setSize(e){this.size=e}setSpace(e){this.space=e}}function jr(c){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:c.button};{const e=this.domElement.getBoundingClientRect();return{x:(c.clientX-e.left)/e.width*2-1,y:-(c.clientY-e.top)/e.height*2+1,button:c.button}}}function qr(c){if(this.enabled)switch(c.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(c));break}}function zr(c){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(c.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(c)),this.pointerDown(this._getPointer(c)))}function Yr(c){this.enabled&&this.pointerMove(this._getPointer(c))}function Vr(c){this.enabled&&(this.domElement.releasePointerCapture(c.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(c)))}function Tn(c,e,t){const s=e.intersectObject(c,!0);for(let n=0;n<s.length;n++)if(s[n].object.visible||t)return s[n];return!1}const en=new r.Euler,ge=new r.Vector3(0,1,0),xs=new r.Vector3(0,0,0),Ss=new r.Matrix4,tn=new r.Quaternion,hn=new r.Quaternion,et=new r.Vector3,Ts=new r.Matrix4,zt=new r.Vector3(1,0,0),Bt=new r.Vector3(0,1,0),Yt=new r.Vector3(0,0,1),nn=new r.Vector3,Nt=new r.Vector3,Ut=new r.Vector3;class Kr extends r.Object3D{constructor(e){super(),this.isTransformControlsRoot=!0,this.controls=e,this.visible=!1}updateMatrixWorld(e){const t=this.controls;t.object!==void 0&&(t.object.updateMatrixWorld(),t.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):t.object.parent.matrixWorld.decompose(t._parentPosition,t._parentQuaternion,t._parentScale),t.object.matrixWorld.decompose(t.worldPosition,t.worldQuaternion,t._worldScale),t._parentQuaternionInv.copy(t._parentQuaternion).invert(),t._worldQuaternionInv.copy(t.worldQuaternion).invert()),t.camera.updateMatrixWorld(),t.camera.matrixWorld.decompose(t.cameraPosition,t.cameraQuaternion,t._cameraScale),t.camera.isOrthographicCamera?t.camera.getWorldDirection(t.eye).negate():t.eye.copy(t.cameraPosition).sub(t.worldPosition).normalize(),super.updateMatrixWorld(e)}}class xi extends r.Object3D{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const e=new r.MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new r.LineBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),s=e.clone();s.opacity=.15;const n=t.clone();n.opacity=.5;const i=e.clone();i.color.setHex(16711680);const o=e.clone();o.color.setHex(65280);const a=e.clone();a.color.setHex(255);const A=e.clone();A.color.setHex(16711680),A.opacity=.5;const l=e.clone();l.color.setHex(65280),l.opacity=.5;const h=e.clone();h.color.setHex(255),h.opacity=.5;const u=e.clone();u.opacity=.25;const p=e.clone();p.color.setHex(16776960),p.opacity=.25,e.clone().color.setHex(16776960);const m=e.clone();m.color.setHex(7895160);const I=new r.CylinderGeometry(0,.04,.1,12);I.translate(0,.05,0);const b=new r.BoxGeometry(.08,.08,.08);b.translate(0,.04,0);const B=new r.BufferGeometry;B.setAttribute("position",new r.Float32BufferAttribute([0,0,0,1,0,0],3));const w=new r.CylinderGeometry(.0075,.0075,.5,3);w.translate(0,.25,0);function C(Y,O){const Z=new r.TorusGeometry(Y,.0075,3,64,O*Math.PI*2);return Z.rotateY(Math.PI/2),Z.rotateX(Math.PI/2),Z}function y(){const Y=new r.BufferGeometry;return Y.setAttribute("position",new r.Float32BufferAttribute([0,0,0,1,1,1],3)),Y}const x={X:[[new r.Mesh(I,i),[.5,0,0],[0,0,-Math.PI/2]],[new r.Mesh(I,i),[-.5,0,0],[0,0,Math.PI/2]],[new r.Mesh(w,i),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new r.Mesh(I,o),[0,.5,0]],[new r.Mesh(I,o),[0,-.5,0],[Math.PI,0,0]],[new r.Mesh(w,o)]],Z:[[new r.Mesh(I,a),[0,0,.5],[Math.PI/2,0,0]],[new r.Mesh(I,a),[0,0,-.5],[-Math.PI/2,0,0]],[new r.Mesh(w,a),null,[Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.OctahedronGeometry(.1,0),u.clone()),[0,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),h.clone()),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),A.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},R={X:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.OctahedronGeometry(.2,0),s)]],XY:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]]},D={START:[[new r.Mesh(new r.OctahedronGeometry(.01,2),n),null,null,null,"helper"]],END:[[new r.Mesh(new r.OctahedronGeometry(.01,2),n),null,null,null,"helper"]],DELTA:[[new r.Line(y(),n),null,null,null,"helper"]],X:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new r.Line(B,n.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new r.Line(B,n.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},S={XYZE:[[new r.Mesh(C(.5,1),m),null,[0,Math.PI/2,0]]],X:[[new r.Mesh(C(.5,.5),i)]],Y:[[new r.Mesh(C(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new r.Mesh(C(.5,.5),a),null,[0,Math.PI/2,0]]],E:[[new r.Mesh(C(.75,1),p),null,[0,Math.PI/2,0]]]},v={AXIS:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},U={XYZE:[[new r.Mesh(new r.SphereGeometry(.25,10,8),s)]],X:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new r.Mesh(new r.TorusGeometry(.75,.1,2,24),s)]]},G={X:[[new r.Mesh(b,i),[.5,0,0],[0,0,-Math.PI/2]],[new r.Mesh(w,i),[0,0,0],[0,0,-Math.PI/2]],[new r.Mesh(b,i),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(b,o),[0,.5,0]],[new r.Mesh(w,o)],[new r.Mesh(b,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new r.Mesh(b,a),[0,0,.5],[Math.PI/2,0,0]],[new r.Mesh(w,a),[0,0,0],[Math.PI/2,0,0]],[new r.Mesh(b,a),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),h),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),A),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.BoxGeometry(.1,.1,.1),u.clone())]]},H={X:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.2),s),[0,0,0]]]},X={X:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new r.Line(B,n.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new r.Line(B,n.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function N(Y){const O=new r.Object3D;for(const Z in Y)for(let ie=Y[Z].length;ie--;){const ee=Y[Z][ie][0].clone(),ce=Y[Z][ie][1],te=Y[Z][ie][2],W=Y[Z][ie][3],se=Y[Z][ie][4];ee.name=Z,ee.tag=se,ce&&ee.position.set(ce[0],ce[1],ce[2]),te&&ee.rotation.set(te[0],te[1],te[2]),W&&ee.scale.set(W[0],W[1],W[2]),ee.updateMatrix();const de=ee.geometry.clone();de.applyMatrix4(ee.matrix),ee.geometry=de,ee.renderOrder=1/0,ee.position.set(0,0,0),ee.rotation.set(0,0,0),ee.scale.set(1,1,1),O.add(ee)}return O}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=N(x)),this.add(this.gizmo.rotate=N(S)),this.add(this.gizmo.scale=N(G)),this.add(this.picker.translate=N(R)),this.add(this.picker.rotate=N(U)),this.add(this.picker.scale=N(H)),this.add(this.helper.translate=N(D)),this.add(this.helper.rotate=N(v)),this.add(this.helper.scale=N(X)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(e){const s=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:hn;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let n=[];n=n.concat(this.picker[this.mode].children),n=n.concat(this.gizmo[this.mode].children),n=n.concat(this.helper[this.mode].children);for(let i=0;i<n.length;i++){const o=n[i];o.visible=!0,o.rotation.set(0,0,0),o.position.copy(this.worldPosition);let a;if(this.camera.isOrthographicCamera?a=(this.camera.top-this.camera.bottom)/this.camera.zoom:a=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),o.scale.set(1,1,1).multiplyScalar(a*this.size/4),o.tag==="helper"){o.visible=!1,o.name==="AXIS"?(o.visible=!!this.axis,this.axis==="X"&&(Ce.setFromEuler(en.set(0,0,0)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="Y"&&(Ce.setFromEuler(en.set(0,0,Math.PI/2)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="Z"&&(Ce.setFromEuler(en.set(0,Math.PI/2,0)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="XYZE"&&(Ce.setFromEuler(en.set(0,Math.PI/2,0)),ge.copy(this.rotationAxis),o.quaternion.setFromRotationMatrix(Ss.lookAt(xs,ge,Bt)),o.quaternion.multiply(Ce),o.visible=this.dragging),this.axis==="E"&&(o.visible=!1)):o.name==="START"?(o.position.copy(this.worldPositionStart),o.visible=this.dragging):o.name==="END"?(o.position.copy(this.worldPosition),o.visible=this.dragging):o.name==="DELTA"?(o.position.copy(this.worldPositionStart),o.quaternion.copy(this.worldQuaternionStart),Fe.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),Fe.applyQuaternion(this.worldQuaternionStart.clone().invert()),o.scale.copy(Fe),o.visible=this.dragging):(o.quaternion.copy(s),this.dragging?o.position.copy(this.worldPositionStart):o.position.copy(this.worldPosition),this.axis&&(o.visible=this.axis.search(o.name)!==-1));continue}o.quaternion.copy(s),this.mode==="translate"||this.mode==="scale"?(o.name==="X"&&Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="Y"&&Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="Z"&&Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="XY"&&Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="YZ"&&Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="XZ"&&Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1)):this.mode==="rotate"&&(tn.copy(s),ge.copy(this.eye).applyQuaternion(Ce.copy(s).invert()),o.name.search("E")!==-1&&o.quaternion.setFromRotationMatrix(Ss.lookAt(this.eye,xs,Bt)),o.name==="X"&&(Ce.setFromAxisAngle(zt,Math.atan2(-ge.y,ge.z)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce)),o.name==="Y"&&(Ce.setFromAxisAngle(Bt,Math.atan2(ge.x,ge.z)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce)),o.name==="Z"&&(Ce.setFromAxisAngle(Yt,Math.atan2(ge.y,ge.x)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce))),o.visible=o.visible&&(o.name.indexOf("X")===-1||this.showX),o.visible=o.visible&&(o.name.indexOf("Y")===-1||this.showY),o.visible=o.visible&&(o.name.indexOf("Z")===-1||this.showZ),o.visible=o.visible&&(o.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),o.material._color=o.material._color||o.material.color.clone(),o.material._opacity=o.material._opacity||o.material.opacity,o.material.color.copy(o.material._color),o.material.opacity=o.material._opacity,this.enabled&&this.axis&&(o.name===this.axis||this.axis.split("").some(function(A){return o.name===A}))&&(o.material.color.setHex(16776960),o.material.opacity=1)}super.updateMatrixWorld(e)}}class Jr extends r.Mesh{constructor(){super(new r.PlaneGeometry(1e5,1e5,2,2),new r.MeshBasicMaterial({visible:!1,wireframe:!0,side:r.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(e){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(t="local"),nn.copy(zt).applyQuaternion(t==="local"?this.worldQuaternion:hn),Nt.copy(Bt).applyQuaternion(t==="local"?this.worldQuaternion:hn),Ut.copy(Yt).applyQuaternion(t==="local"?this.worldQuaternion:hn),ge.copy(Nt),this.mode){case"translate":case"scale":switch(this.axis){case"X":ge.copy(this.eye).cross(nn),et.copy(nn).cross(ge);break;case"Y":ge.copy(this.eye).cross(Nt),et.copy(Nt).cross(ge);break;case"Z":ge.copy(this.eye).cross(Ut),et.copy(Ut).cross(ge);break;case"XY":et.copy(Ut);break;case"YZ":et.copy(nn);break;case"XZ":ge.copy(Ut),et.copy(Nt);break;case"XYZ":case"E":et.set(0,0,0);break}break;case"rotate":default:et.set(0,0,0)}et.length()===0?this.quaternion.copy(this.cameraQuaternion):(Ts.lookAt(Fe.set(0,0,0),et,ge),this.quaternion.setFromRotationMatrix(Ts)),super.updateMatrixWorld(e)}}/*!
37
- fflate - fast JavaScript compression/decompression
38
- <https://101arrowz.github.io/fflate>
39
- Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
40
- version 0.8.2
41
- */var Qe=Uint8Array,qe=Uint16Array,es=Int32Array,dn=new Qe([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),pn=new Qe([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),zn=new Qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Si=function(c,e){for(var t=new qe(31),s=0;s<31;++s)t[s]=e+=1<<c[s-1];for(var n=new es(t[30]),s=1;s<30;++s)for(var i=t[s];i<t[s+1];++i)n[i]=i-t[s]<<5|s;return{b:t,r:n}},Ti=Si(dn,2),vi=Ti.b,Yn=Ti.r;vi[28]=258,Yn[258]=28;var Mi=Si(pn,0),Wr=Mi.b,vs=Mi.r,Vn=new qe(32768);for(var Ee=0;Ee<32768;++Ee){var gt=(Ee&43690)>>1|(Ee&21845)<<1;gt=(gt&52428)>>2|(gt&13107)<<2,gt=(gt&61680)>>4|(gt&3855)<<4,Vn[Ee]=((gt&65280)>>8|(gt&255)<<8)>>1}var it=(function(c,e,t){for(var s=c.length,n=0,i=new qe(e);n<s;++n)c[n]&&++i[c[n]-1];var o=new qe(e);for(n=1;n<e;++n)o[n]=o[n-1]+i[n-1]<<1;var a;if(t){a=new qe(1<<e);var A=15-e;for(n=0;n<s;++n)if(c[n])for(var l=n<<4|c[n],h=e-c[n],u=o[c[n]-1]++<<h,p=u|(1<<h)-1;u<=p;++u)a[Vn[u]>>A]=l}else for(a=new qe(s),n=0;n<s;++n)c[n]&&(a[n]=Vn[o[c[n]-1]++]>>15-c[n]);return a}),ft=new Qe(288);for(var Ee=0;Ee<144;++Ee)ft[Ee]=8;for(var Ee=144;Ee<256;++Ee)ft[Ee]=9;for(var Ee=256;Ee<280;++Ee)ft[Ee]=7;for(var Ee=280;Ee<288;++Ee)ft[Ee]=8;var Wt=new Qe(32);for(var Ee=0;Ee<32;++Ee)Wt[Ee]=5;var Xr=it(ft,9,0),Zr=it(ft,9,1),$r=it(Wt,5,0),ea=it(Wt,5,1),vn=function(c){for(var e=c[0],t=1;t<c.length;++t)c[t]>e&&(e=c[t]);return e},Ze=function(c,e,t){var s=e/8|0;return(c[s]|c[s+1]<<8)>>(e&7)&t},Mn=function(c,e){var t=e/8|0;return(c[t]|c[t+1]<<8|c[t+2]<<16)>>(e&7)},ts=function(c){return(c+7)/8|0},ns=function(c,e,t){return(t==null||t>c.length)&&(t=c.length),new Qe(c.subarray(e,t))},ta=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ne=function(c,e,t){var s=new Error(e||ta[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,Ne),!t)throw s;return s},na=function(c,e,t,s){var n=c.length,i=0;if(!n||e.f&&!e.l)return t||new Qe(0);var o=!t,a=o||e.i!=2,A=e.i;o&&(t=new Qe(n*3));var l=function(lt){var mt=t.length;if(lt>mt){var ot=new Qe(Math.max(mt*2,lt));ot.set(t),t=ot}},h=e.f||0,u=e.p||0,p=e.b||0,g=e.l,m=e.d,I=e.m,b=e.n,B=n*8;do{if(!g){h=Ze(c,u,1);var w=Ze(c,u+1,3);if(u+=3,w)if(w==1)g=Zr,m=ea,I=9,b=5;else if(w==2){var R=Ze(c,u,31)+257,D=Ze(c,u+10,15)+4,S=R+Ze(c,u+5,31)+1;u+=14;for(var v=new Qe(S),U=new Qe(19),G=0;G<D;++G)U[zn[G]]=Ze(c,u+G*3,7);u+=D*3;for(var H=vn(U),X=(1<<H)-1,N=it(U,H,1),G=0;G<S;){var Y=N[Ze(c,u,X)];u+=Y&15;var C=Y>>4;if(C<16)v[G++]=C;else{var O=0,Z=0;for(C==16?(Z=3+Ze(c,u,3),u+=2,O=v[G-1]):C==17?(Z=3+Ze(c,u,7),u+=3):C==18&&(Z=11+Ze(c,u,127),u+=7);Z--;)v[G++]=O}}var ie=v.subarray(0,R),ee=v.subarray(R);I=vn(ie),b=vn(ee),g=it(ie,I,1),m=it(ee,b,1)}else Ne(1);else{var C=ts(u)+4,y=c[C-4]|c[C-3]<<8,x=C+y;if(x>n){A&&Ne(0);break}a&&l(p+y),t.set(c.subarray(C,x),p),e.b=p+=y,e.p=u=x*8,e.f=h;continue}if(u>B){A&&Ne(0);break}}a&&l(p+131072);for(var ce=(1<<I)-1,te=(1<<b)-1,W=u;;W=u){var O=g[Mn(c,u)&ce],se=O>>4;if(u+=O&15,u>B){A&&Ne(0);break}if(O||Ne(2),se<256)t[p++]=se;else if(se==256){W=u,g=null;break}else{var de=se-254;if(se>264){var G=se-257,me=dn[G];de=Ze(c,u,(1<<me)-1)+vi[G],u+=me}var Ae=m[Mn(c,u)&te],Pe=Ae>>4;Ae||Ne(3),u+=Ae&15;var ee=Wr[Pe];if(Pe>3){var me=pn[Pe];ee+=Mn(c,u)&(1<<me)-1,u+=me}if(u>B){A&&Ne(0);break}a&&l(p+131072);var Oe=p+de;if(p<ee){var wt=i-ee,Qt=Math.min(ee,Oe);for(wt+p<0&&Ne(3);p<Qt;++p)t[p]=s[wt+p]}for(;p<Oe;++p)t[p]=t[p-ee]}}e.l=g,e.p=W,e.b=p,e.f=h,g&&(h=1,e.m=I,e.d=m,e.n=b)}while(!h);return p!=t.length&&o?ns(t,0,p):t.subarray(0,p)},at=function(c,e,t){t<<=e&7;var s=e/8|0;c[s]|=t,c[s+1]|=t>>8},Pt=function(c,e,t){t<<=e&7;var s=e/8|0;c[s]|=t,c[s+1]|=t>>8,c[s+2]|=t>>16},Rn=function(c,e){for(var t=[],s=0;s<c.length;++s)c[s]&&t.push({s,f:c[s]});var n=t.length,i=t.slice();if(!n)return{t:Di,l:0};if(n==1){var o=new Qe(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(x,R){return x.f-R.f}),t.push({s:-1,f:25001});var a=t[0],A=t[1],l=0,h=1,u=2;for(t[0]={s:-1,f:a.f+A.f,l:a,r:A};h!=n-1;)a=t[t[l].f<t[u].f?l++:u++],A=t[l!=h&&t[l].f<t[u].f?l++:u++],t[h++]={s:-1,f:a.f+A.f,l:a,r:A};for(var p=i[0].s,s=1;s<n;++s)i[s].s>p&&(p=i[s].s);var g=new qe(p+1),m=Kn(t[h-1],g,0);if(m>e){var s=0,I=0,b=m-e,B=1<<b;for(i.sort(function(R,D){return g[D.s]-g[R.s]||R.f-D.f});s<n;++s){var w=i[s].s;if(g[w]>e)I+=B-(1<<m-g[w]),g[w]=e;else break}for(I>>=b;I>0;){var C=i[s].s;g[C]<e?I-=1<<e-g[C]++-1:++s}for(;s>=0&&I;--s){var y=i[s].s;g[y]==e&&(--g[y],++I)}m=e}return{t:new Qe(g),l:m}},Kn=function(c,e,t){return c.s==-1?Math.max(Kn(c.l,e,t+1),Kn(c.r,e,t+1)):e[c.s]=t},Ms=function(c){for(var e=c.length;e&&!c[--e];);for(var t=new qe(++e),s=0,n=c[0],i=1,o=function(A){t[s++]=A},a=1;a<=e;++a)if(c[a]==n&&a!=e)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=c[a]}return{c:t.subarray(0,s),n:e}},Ot=function(c,e){for(var t=0,s=0;s<e.length;++s)t+=c[s]*e[s];return t},Ri=function(c,e,t){var s=t.length,n=ts(e+2);c[n]=s&255,c[n+1]=s>>8,c[n+2]=c[n]^255,c[n+3]=c[n+1]^255;for(var i=0;i<s;++i)c[n+i+4]=t[i];return(n+4+s)*8},Rs=function(c,e,t,s,n,i,o,a,A,l,h){at(e,h++,t),++n[256];for(var u=Rn(n,15),p=u.t,g=u.l,m=Rn(i,15),I=m.t,b=m.l,B=Ms(p),w=B.c,C=B.n,y=Ms(I),x=y.c,R=y.n,D=new qe(19),S=0;S<w.length;++S)++D[w[S]&31];for(var S=0;S<x.length;++S)++D[x[S]&31];for(var v=Rn(D,7),U=v.t,G=v.l,H=19;H>4&&!U[zn[H-1]];--H);var X=l+5<<3,N=Ot(n,ft)+Ot(i,Wt)+o,Y=Ot(n,p)+Ot(i,I)+o+14+3*H+Ot(D,U)+2*D[16]+3*D[17]+7*D[18];if(A>=0&&X<=N&&X<=Y)return Ri(e,h,c.subarray(A,A+l));var O,Z,ie,ee;if(at(e,h,1+(Y<N)),h+=2,Y<N){O=it(p,g,0),Z=p,ie=it(I,b,0),ee=I;var ce=it(U,G,0);at(e,h,C-257),at(e,h+5,R-1),at(e,h+10,H-4),h+=14;for(var S=0;S<H;++S)at(e,h+3*S,U[zn[S]]);h+=3*H;for(var te=[w,x],W=0;W<2;++W)for(var se=te[W],S=0;S<se.length;++S){var de=se[S]&31;at(e,h,ce[de]),h+=U[de],de>15&&(at(e,h,se[S]>>5&127),h+=se[S]>>12)}}else O=Xr,Z=ft,ie=$r,ee=Wt;for(var S=0;S<a;++S){var me=s[S];if(me>255){var de=me>>18&31;Pt(e,h,O[de+257]),h+=Z[de+257],de>7&&(at(e,h,me>>23&31),h+=dn[de]);var Ae=me&31;Pt(e,h,ie[Ae]),h+=ee[Ae],Ae>3&&(Pt(e,h,me>>5&8191),h+=pn[Ae])}else Pt(e,h,O[me]),h+=Z[me]}return Pt(e,h,O[256]),h+Z[256]},sa=new es([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Di=new Qe(0),ia=function(c,e,t,s,n,i){var o=i.z||c.length,a=new Qe(s+o+5*(1+Math.ceil(o/7e3))+n),A=a.subarray(s,a.length-n),l=i.l,h=(i.r||0)&7;if(e){h&&(A[0]=i.r>>3);for(var u=sa[e-1],p=u>>13,g=u&8191,m=(1<<t)-1,I=i.p||new qe(32768),b=i.h||new qe(m+1),B=Math.ceil(t/3),w=2*B,C=function(xt){return(c[xt]^c[xt+1]<<B^c[xt+2]<<w)&m},y=new es(25e3),x=new qe(288),R=new qe(32),D=0,S=0,v=i.i||0,U=0,G=i.w||0,H=0;v+2<o;++v){var X=C(v),N=v&32767,Y=b[X];if(I[N]=Y,b[X]=N,G<=v){var O=o-v;if((D>7e3||U>24576)&&(O>423||!l)){h=Rs(c,A,0,y,x,R,S,U,H,v-H,h),U=D=S=0,H=v;for(var Z=0;Z<286;++Z)x[Z]=0;for(var Z=0;Z<30;++Z)R[Z]=0}var ie=2,ee=0,ce=g,te=N-Y&32767;if(O>2&&X==C(v-te))for(var W=Math.min(p,O)-1,se=Math.min(32767,v),de=Math.min(258,O);te<=se&&--ce&&N!=Y;){if(c[v+ie]==c[v+ie-te]){for(var me=0;me<de&&c[v+me]==c[v+me-te];++me);if(me>ie){if(ie=me,ee=te,me>W)break;for(var Ae=Math.min(te,me-2),Pe=0,Z=0;Z<Ae;++Z){var Oe=v-te+Z&32767,wt=I[Oe],Qt=Oe-wt&32767;Qt>Pe&&(Pe=Qt,Y=Oe)}}}N=Y,Y=I[N],te+=N-Y&32767}if(ee){y[U++]=268435456|Yn[ie]<<18|vs[ee];var lt=Yn[ie]&31,mt=vs[ee]&31;S+=dn[lt]+pn[mt],++x[257+lt],++R[mt],G=v+ie,++D}else y[U++]=c[v],++x[c[v]]}}for(v=Math.max(v,G);v<o;++v)y[U++]=c[v],++x[c[v]];h=Rs(c,A,l,y,x,R,S,U,H,v-H,h),l||(i.r=h&7|A[h/8|0]<<3,h-=7,i.h=b,i.p=I,i.i=v,i.w=G)}else{for(var v=i.w||0;v<o+l;v+=65535){var ot=v+65535;ot>=o&&(A[h/8|0]=l,ot=o),h=Ri(A,h+1,c.subarray(v,ot))}i.i=o}return ns(a,0,s+ts(h)+n)},oa=(function(){for(var c=new Int32Array(256),e=0;e<256;++e){for(var t=e,s=9;--s;)t=(t&1&&-306674912)^t>>>1;c[e]=t}return c})(),ra=function(){var c=-1;return{p:function(e){for(var t=c,s=0;s<e.length;++s)t=oa[t&255^e[s]]^t>>>8;c=t},d:function(){return~c}}},aa=function(c,e,t,s,n){if(!n&&(n={l:1},e.dictionary)){var i=e.dictionary.subarray(-32768),o=new Qe(i.length+c.length);o.set(i),o.set(c,i.length),c=o,n.w=i.length}return ia(c,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(c.length)))*1.5):20:12+e.mem,t,s,n)},_i=function(c,e){var t={};for(var s in c)t[s]=c[s];for(var s in e)t[s]=e[s];return t},Re=function(c,e,t){for(;t;++e)c[e]=t,t>>>=8},Aa=function(c,e){return((c[0]&15)!=8||c[0]>>4>7||(c[0]<<8|c[1])%31)&&Ne(6,"invalid zlib data"),(c[1]>>5&1)==1&&Ne(6,"invalid zlib data: "+(c[1]&32?"need":"unexpected")+" dictionary"),(c[1]>>3&4)+2};function ca(c,e){return aa(c,e||{},0,0)}function Vt(c,e){return na(c.subarray(Aa(c),-4),{i:2},e,e)}var Fi=function(c,e,t,s){for(var n in c){var i=c[n],o=e+n,a=s;Array.isArray(i)&&(a=_i(s,i[1]),i=i[0]),i instanceof Qe?t[o]=[i,a]:(t[o+="/"]=[new Qe(0),a],Fi(i,o,t,s))}},Ds=typeof TextEncoder<"u"&&new TextEncoder,la=typeof TextDecoder<"u"&&new TextDecoder,ha=0;try{la.decode(Di,{stream:!0}),ha=1}catch{}function Jn(c,e){var t;if(Ds)return Ds.encode(c);for(var s=c.length,n=new Qe(c.length+(c.length>>1)),i=0,o=function(l){n[i++]=l},t=0;t<s;++t){if(i+5>n.length){var a=new Qe(i+8+(s-t<<1));a.set(n),n=a}var A=c.charCodeAt(t);A<128||e?o(A):A<2048?(o(192|A>>6),o(128|A&63)):A>55295&&A<57344?(A=65536+(A&1047552)|c.charCodeAt(++t)&1023,o(240|A>>18),o(128|A>>12&63),o(128|A>>6&63),o(128|A&63)):(o(224|A>>12),o(128|A>>6&63),o(128|A&63))}return ns(n,0,i)}var Wn=function(c){var e=0;if(c)for(var t in c){var s=c[t].length;s>65535&&Ne(9),e+=s+4}return e},_s=function(c,e,t,s,n,i,o,a){var A=s.length,l=t.extra,h=a&&a.length,u=Wn(l);Re(c,e,o!=null?33639248:67324752),e+=4,o!=null&&(c[e++]=20,c[e++]=t.os),c[e]=20,e+=2,c[e++]=t.flag<<1|(i<0&&8),c[e++]=n&&8,c[e++]=t.compression&255,c[e++]=t.compression>>8;var p=new Date(t.mtime==null?Date.now():t.mtime),g=p.getFullYear()-1980;if((g<0||g>119)&&Ne(10),Re(c,e,g<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>1),e+=4,i!=-1&&(Re(c,e,t.crc),Re(c,e+4,i<0?-i-2:i),Re(c,e+8,t.size)),Re(c,e+12,A),Re(c,e+14,u),e+=16,o!=null&&(Re(c,e,h),Re(c,e+6,t.attrs),Re(c,e+10,o),e+=14),c.set(s,e),e+=A,u)for(var m in l){var I=l[m],b=I.length;Re(c,e,+m),Re(c,e+2,b),c.set(I,e+4),e+=4+b}return h&&(c.set(a,e),e+=h),e},ua=function(c,e,t,s,n){Re(c,e,101010256),Re(c,e+8,t),Re(c,e+10,t),Re(c,e+12,s),Re(c,e+16,n)};function da(c,e){e||(e={});var t={},s=[];Fi(c,"",t,e);var n=0,i=0;for(var o in t){var a=t[o],A=a[0],l=a[1],h=l.level==0?0:8,u=Jn(o),p=u.length,g=l.comment,m=g&&Jn(g),I=m&&m.length,b=Wn(l.extra);p>65535&&Ne(11);var B=h?ca(A,l):A,w=B.length,C=ra();C.p(A),s.push(_i(l,{size:A.length,crc:C.d(),c:B,f:u,m,u:p!=o.length||m&&g.length!=I,o:n,compression:h})),n+=30+p+b+w,i+=76+2*(p+b)+(I||0)+w}for(var y=new Qe(i+22),x=n,R=i-n,D=0;D<s.length;++D){var u=s[D];_s(y,u.o,u,u.f,u.u,u.c.length);var S=30+u.f.length+Wn(u.extra);y.set(u.c,u.o+S),_s(y,n,u,u.f,u.u,u.c.length,u.o,u.m),n+=16+S+(u.m?u.m.length:0)}return ua(y,n,s.length,R,x),y}class Li extends r.DataTextureLoader{constructor(e){super(e),this.type=r.HalfFloatType}parse(e){const v=Math.pow(2.7182818,2.2);function U(d,f){let E=0;for(let M=0;M<65536;++M)(M==0||d[M>>3]&1<<(M&7))&&(f[E++]=M);const Q=E-1;for(;E<65536;)f[E++]=0;return Q}function G(d){for(let f=0;f<16384;f++)d[f]={},d[f].len=0,d[f].lit=0,d[f].p=null}const H={l:0,c:0,lc:0};function X(d,f,E,Q,M){for(;E<d;)f=f<<8|As(Q,M),E+=8;E-=d,H.l=f>>E&(1<<d)-1,H.c=f,H.lc=E}const N=new Array(59);function Y(d){for(let E=0;E<=58;++E)N[E]=0;for(let E=0;E<65537;++E)N[d[E]]+=1;let f=0;for(let E=58;E>0;--E){const Q=f+N[E]>>1;N[E]=f,f=Q}for(let E=0;E<65537;++E){const Q=d[E];Q>0&&(d[E]=Q|N[Q]++<<6)}}function O(d,f,E,Q,M,T){const L=f;let P=0,k=0;for(;Q<=M;Q++){if(L.value-f.value>E)return!1;X(6,P,k,d,L);const F=H.l;if(P=H.c,k=H.lc,T[Q]=F,F==63){if(L.value-f.value>E)throw new Error("Something wrong with hufUnpackEncTable");X(8,P,k,d,L);let _=H.l+6;if(P=H.c,k=H.lc,Q+_>M+1)throw new Error("Something wrong with hufUnpackEncTable");for(;_--;)T[Q++]=0;Q--}else if(F>=59){let _=F-59+2;if(Q+_>M+1)throw new Error("Something wrong with hufUnpackEncTable");for(;_--;)T[Q++]=0;Q--}}Y(T)}function Z(d){return d&63}function ie(d){return d>>6}function ee(d,f,E,Q){for(;f<=E;f++){const M=ie(d[f]),T=Z(d[f]);if(M>>T)throw new Error("Invalid table entry");if(T>14){const L=Q[M>>T-14];if(L.len)throw new Error("Invalid table entry");if(L.lit++,L.p){const P=L.p;L.p=new Array(L.lit);for(let k=0;k<L.lit-1;++k)L.p[k]=P[k]}else L.p=new Array(1);L.p[L.lit-1]=f}else if(T){let L=0;for(let P=1<<14-T;P>0;P--){const k=Q[(M<<14-T)+L];if(k.len||k.p)throw new Error("Invalid table entry");k.len=T,k.lit=f,L++}}}return!0}const ce={c:0,lc:0};function te(d,f,E,Q){d=d<<8|As(E,Q),f+=8,ce.c=d,ce.lc=f}const W={c:0,lc:0};function se(d,f,E,Q,M,T,L,P,k){if(d==f){Q<8&&(te(E,Q,M,T),E=ce.c,Q=ce.lc),Q-=8;let F=E>>Q;if(F=new Uint8Array([F])[0],P.value+F>k)return!1;const _=L[P.value-1];for(;F-- >0;)L[P.value++]=_}else if(P.value<k)L[P.value++]=d;else return!1;W.c=E,W.lc=Q}function de(d){return d&65535}function me(d){const f=de(d);return f>32767?f-65536:f}const Ae={a:0,b:0};function Pe(d,f){const E=me(d),M=me(f),T=E+(M&1)+(M>>1),L=T,P=T-M;Ae.a=L,Ae.b=P}function Oe(d,f){const E=de(d),Q=de(f),M=E-(Q>>1)&65535,T=Q+M-32768&65535;Ae.a=T,Ae.b=M}function wt(d,f,E,Q,M,T,L){const P=L<16384,k=E>M?M:E;let F=1,_,j;for(;F<=k;)F<<=1;for(F>>=1,_=F,F>>=1;F>=1;){j=0;const K=j+T*(M-_),q=T*F,$=T*_,z=Q*F,J=Q*_;let ne,pe,Be,je;for(;j<=K;j+=$){let Ie=j;const le=j+Q*(E-_);for(;Ie<=le;Ie+=J){const xe=Ie+z,Ke=Ie+q,Te=Ke+z;P?(Pe(d[Ie+f],d[Ke+f]),ne=Ae.a,Be=Ae.b,Pe(d[xe+f],d[Te+f]),pe=Ae.a,je=Ae.b,Pe(ne,pe),d[Ie+f]=Ae.a,d[xe+f]=Ae.b,Pe(Be,je),d[Ke+f]=Ae.a,d[Te+f]=Ae.b):(Oe(d[Ie+f],d[Ke+f]),ne=Ae.a,Be=Ae.b,Oe(d[xe+f],d[Te+f]),pe=Ae.a,je=Ae.b,Oe(ne,pe),d[Ie+f]=Ae.a,d[xe+f]=Ae.b,Oe(Be,je),d[Ke+f]=Ae.a,d[Te+f]=Ae.b)}if(E&F){const xe=Ie+q;P?Pe(d[Ie+f],d[xe+f]):Oe(d[Ie+f],d[xe+f]),ne=Ae.a,d[xe+f]=Ae.b,d[Ie+f]=ne}}if(M&F){let Ie=j;const le=j+Q*(E-_);for(;Ie<=le;Ie+=J){const xe=Ie+z;P?Pe(d[Ie+f],d[xe+f]):Oe(d[Ie+f],d[xe+f]),ne=Ae.a,d[xe+f]=Ae.b,d[Ie+f]=ne}}_=F,F>>=1}return j}function Qt(d,f,E,Q,M,T,L,P,k){let F=0,_=0;const j=L,K=Math.trunc(Q.value+(M+7)/8);for(;Q.value<K;)for(te(F,_,E,Q),F=ce.c,_=ce.lc;_>=14;){const $=F>>_-14&16383,z=f[$];if(z.len)_-=z.len,se(z.lit,T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;else{if(!z.p)throw new Error("hufDecode issues");let J;for(J=0;J<z.lit;J++){const ne=Z(d[z.p[J]]);for(;_<ne&&Q.value<K;)te(F,_,E,Q),F=ce.c,_=ce.lc;if(_>=ne&&ie(d[z.p[J]])==(F>>_-ne&(1<<ne)-1)){_-=ne,se(z.p[J],T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;break}}if(J==z.lit)throw new Error("hufDecode issues")}}const q=8-M&7;for(F>>=q,_-=q;_>0;){const $=f[F<<14-_&16383];if($.len)_-=$.len,se($.lit,T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;else throw new Error("hufDecode issues")}return!0}function lt(d,f,E,Q,M,T){const L={value:0},P=E.value,k=Ve(f,E),F=Ve(f,E);E.value+=4;const _=Ve(f,E);if(E.value+=4,k<0||k>=65537||F<0||F>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const j=new Array(65537),K=new Array(16384);G(K);const q=Q-(E.value-P);if(O(d,E,q,k,F,j),_>8*(Q-(E.value-P)))throw new Error("Something wrong with hufUncompress");ee(j,k,F,K),Qt(j,K,d,E,_,F,T,M,L)}function mt(d,f,E){for(let Q=0;Q<E;++Q)f[Q]=d[f[Q]]}function ot(d){for(let f=1;f<d.length;f++){const E=d[f-1]+d[f]-128;d[f]=E}}function xt(d,f){let E=0,Q=Math.floor((d.length+1)/2),M=0;const T=d.length-1;for(;!(M>T||(f[M++]=d[E++],M>T));)f[M++]=d[Q++]}function rs(d){let f=d.byteLength;const E=new Array;let Q=0;const M=new DataView(d);for(;f>0;){const T=M.getInt8(Q++);if(T<0){const L=-T;f-=L+1;for(let P=0;P<L;P++)E.push(M.getUint8(Q++))}else{const L=T;f-=2;const P=M.getUint8(Q++);for(let k=0;k<L+1;k++)E.push(P)}}return E}function Yi(d,f,E,Q,M,T){let L=new DataView(T.buffer);const P=E[d.idx[0]].width,k=E[d.idx[0]].height,F=3,_=Math.floor(P/8),j=Math.ceil(P/8),K=Math.ceil(k/8),q=P-(j-1)*8,$=k-(K-1)*8,z={value:0},J=new Array(F),ne=new Array(F),pe=new Array(F),Be=new Array(F),je=new Array(F);for(let le=0;le<F;++le)je[le]=f[d.idx[le]],J[le]=le<1?0:J[le-1]+j*K,ne[le]=new Float32Array(64),pe[le]=new Uint16Array(64),Be[le]=new Uint16Array(j*64);for(let le=0;le<K;++le){let xe=8;le==K-1&&(xe=$);let Ke=8;for(let ue=0;ue<j;++ue){ue==j-1&&(Ke=q);for(let fe=0;fe<F;++fe)pe[fe].fill(0),pe[fe][0]=M[J[fe]++],Vi(z,Q,pe[fe]),Ki(pe[fe],ne[fe]),Ji(ne[fe]);Wi(ne);for(let fe=0;fe<F;++fe)Xi(ne[fe],Be[fe],ue*64)}let Te=0;for(let ue=0;ue<F;++ue){const fe=E[d.idx[ue]].type;for(let rt=8*le;rt<8*le+xe;++rt){Te=je[ue][rt];for(let _t=0;_t<_;++_t){const $e=_t*64+(rt&7)*8;L.setUint16(Te+0*fe,Be[ue][$e+0],!0),L.setUint16(Te+2*fe,Be[ue][$e+1],!0),L.setUint16(Te+4*fe,Be[ue][$e+2],!0),L.setUint16(Te+6*fe,Be[ue][$e+3],!0),L.setUint16(Te+8*fe,Be[ue][$e+4],!0),L.setUint16(Te+10*fe,Be[ue][$e+5],!0),L.setUint16(Te+12*fe,Be[ue][$e+6],!0),L.setUint16(Te+14*fe,Be[ue][$e+7],!0),Te+=16*fe}}if(_!=j)for(let rt=8*le;rt<8*le+xe;++rt){const _t=je[ue][rt]+8*_*2*fe,$e=_*64+(rt&7)*8;for(let $t=0;$t<Ke;++$t)L.setUint16(_t+$t*2*fe,Be[ue][$e+$t],!0)}}}const Ie=new Uint16Array(P);L=new DataView(T.buffer);for(let le=0;le<F;++le){E[d.idx[le]].decoded=!0;const xe=E[d.idx[le]].type;if(E[le].type==2)for(let Ke=0;Ke<k;++Ke){const Te=je[le][Ke];for(let ue=0;ue<P;++ue)Ie[ue]=L.getUint16(Te+ue*2*xe,!0);for(let ue=0;ue<P;++ue)L.setFloat32(Te+ue*2*xe,V(Ie[ue]),!0)}}}function Vi(d,f,E){let Q,M=1;for(;M<64;)Q=f[d.value],Q==65280?M=64:Q>>8==255?M+=Q&255:(E[M]=Q,M++),d.value++}function Ki(d,f){f[0]=V(d[0]),f[1]=V(d[1]),f[2]=V(d[5]),f[3]=V(d[6]),f[4]=V(d[14]),f[5]=V(d[15]),f[6]=V(d[27]),f[7]=V(d[28]),f[8]=V(d[2]),f[9]=V(d[4]),f[10]=V(d[7]),f[11]=V(d[13]),f[12]=V(d[16]),f[13]=V(d[26]),f[14]=V(d[29]),f[15]=V(d[42]),f[16]=V(d[3]),f[17]=V(d[8]),f[18]=V(d[12]),f[19]=V(d[17]),f[20]=V(d[25]),f[21]=V(d[30]),f[22]=V(d[41]),f[23]=V(d[43]),f[24]=V(d[9]),f[25]=V(d[11]),f[26]=V(d[18]),f[27]=V(d[24]),f[28]=V(d[31]),f[29]=V(d[40]),f[30]=V(d[44]),f[31]=V(d[53]),f[32]=V(d[10]),f[33]=V(d[19]),f[34]=V(d[23]),f[35]=V(d[32]),f[36]=V(d[39]),f[37]=V(d[45]),f[38]=V(d[52]),f[39]=V(d[54]),f[40]=V(d[20]),f[41]=V(d[22]),f[42]=V(d[33]),f[43]=V(d[38]),f[44]=V(d[46]),f[45]=V(d[51]),f[46]=V(d[55]),f[47]=V(d[60]),f[48]=V(d[21]),f[49]=V(d[34]),f[50]=V(d[37]),f[51]=V(d[47]),f[52]=V(d[50]),f[53]=V(d[56]),f[54]=V(d[59]),f[55]=V(d[61]),f[56]=V(d[35]),f[57]=V(d[36]),f[58]=V(d[48]),f[59]=V(d[49]),f[60]=V(d[57]),f[61]=V(d[58]),f[62]=V(d[62]),f[63]=V(d[63])}function Ji(d){const f=.5*Math.cos(.7853975),E=.5*Math.cos(3.14159/16),Q=.5*Math.cos(3.14159/8),M=.5*Math.cos(3*3.14159/16),T=.5*Math.cos(5*3.14159/16),L=.5*Math.cos(3*3.14159/8),P=.5*Math.cos(7*3.14159/16),k=new Array(4),F=new Array(4),_=new Array(4),j=new Array(4);for(let K=0;K<8;++K){const q=K*8;k[0]=Q*d[q+2],k[1]=L*d[q+2],k[2]=Q*d[q+6],k[3]=L*d[q+6],F[0]=E*d[q+1]+M*d[q+3]+T*d[q+5]+P*d[q+7],F[1]=M*d[q+1]-P*d[q+3]-E*d[q+5]-T*d[q+7],F[2]=T*d[q+1]-E*d[q+3]+P*d[q+5]+M*d[q+7],F[3]=P*d[q+1]-T*d[q+3]+M*d[q+5]-E*d[q+7],_[0]=f*(d[q+0]+d[q+4]),_[3]=f*(d[q+0]-d[q+4]),_[1]=k[0]+k[3],_[2]=k[1]-k[2],j[0]=_[0]+_[1],j[1]=_[3]+_[2],j[2]=_[3]-_[2],j[3]=_[0]-_[1],d[q+0]=j[0]+F[0],d[q+1]=j[1]+F[1],d[q+2]=j[2]+F[2],d[q+3]=j[3]+F[3],d[q+4]=j[3]-F[3],d[q+5]=j[2]-F[2],d[q+6]=j[1]-F[1],d[q+7]=j[0]-F[0]}for(let K=0;K<8;++K)k[0]=Q*d[16+K],k[1]=L*d[16+K],k[2]=Q*d[48+K],k[3]=L*d[48+K],F[0]=E*d[8+K]+M*d[24+K]+T*d[40+K]+P*d[56+K],F[1]=M*d[8+K]-P*d[24+K]-E*d[40+K]-T*d[56+K],F[2]=T*d[8+K]-E*d[24+K]+P*d[40+K]+M*d[56+K],F[3]=P*d[8+K]-T*d[24+K]+M*d[40+K]-E*d[56+K],_[0]=f*(d[K]+d[32+K]),_[3]=f*(d[K]-d[32+K]),_[1]=k[0]+k[3],_[2]=k[1]-k[2],j[0]=_[0]+_[1],j[1]=_[3]+_[2],j[2]=_[3]-_[2],j[3]=_[0]-_[1],d[0+K]=j[0]+F[0],d[8+K]=j[1]+F[1],d[16+K]=j[2]+F[2],d[24+K]=j[3]+F[3],d[32+K]=j[3]-F[3],d[40+K]=j[2]-F[2],d[48+K]=j[1]-F[1],d[56+K]=j[0]-F[0]}function Wi(d){for(let f=0;f<64;++f){const E=d[0][f],Q=d[1][f],M=d[2][f];d[0][f]=E+1.5747*M,d[1][f]=E-.1873*Q-.4682*M,d[2][f]=E+1.8556*Q}}function Xi(d,f,E){for(let Q=0;Q<64;++Q)f[E+Q]=r.DataUtils.toHalfFloat(Zi(d[Q]))}function Zi(d){return d<=1?Math.sign(d)*Math.pow(Math.abs(d),2.2):Math.sign(d)*Math.pow(v,Math.abs(d)-1)}function gn(d){return new DataView(d.array.buffer,d.offset.value,d.size)}function $i(d){const f=d.viewer.buffer.slice(d.offset.value,d.offset.value+d.size),E=new Uint8Array(rs(f)),Q=new Uint8Array(E.length);return ot(E),xt(E,Q),new DataView(Q.buffer)}function fn(d){const f=d.array.slice(d.offset.value,d.offset.value+d.size),E=Vt(f),Q=new Uint8Array(E.length);return ot(E),xt(E,Q),new DataView(Q.buffer)}function eo(d){const f=d.viewer,E={value:d.offset.value},Q=new Uint16Array(d.columns*d.lines*(d.inputChannels.length*d.type)),M=new Uint8Array(8192);let T=0;const L=new Array(d.inputChannels.length);for(let $=0,z=d.inputChannels.length;$<z;$++)L[$]={},L[$].start=T,L[$].end=L[$].start,L[$].nx=d.columns,L[$].ny=d.lines,L[$].size=d.type,T+=L[$].nx*L[$].ny*L[$].size;const P=Dt(f,E),k=Dt(f,E);if(k>=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(P<=k)for(let $=0;$<k-P+1;$++)M[$+P]=ht(f,E);const F=new Uint16Array(65536),_=U(M,F),j=Ve(f,E);lt(d.array,f,E,j,Q,T);for(let $=0;$<d.inputChannels.length;++$){const z=L[$];for(let J=0;J<L[$].size;++J)wt(Q,z.start+J,z.nx,z.size,z.ny,z.nx*z.size,_)}mt(F,Q,T);let K=0;const q=new Uint8Array(Q.buffer.byteLength);for(let $=0;$<d.lines;$++)for(let z=0;z<d.inputChannels.length;z++){const J=L[z],ne=J.nx*J.size,pe=new Uint8Array(Q.buffer,J.end*2,ne*2);q.set(pe,K),K+=ne*2,J.end+=ne}return new DataView(q.buffer)}function to(d){const f=d.array.slice(d.offset.value,d.offset.value+d.size),E=Vt(f),Q=d.inputChannels.length*d.lines*d.columns*d.totalBytes,M=new ArrayBuffer(Q),T=new DataView(M);let L=0,P=0;const k=new Array(4);for(let F=0;F<d.lines;F++)for(let _=0;_<d.inputChannels.length;_++){let j=0;switch(d.inputChannels[_].pixelType){case 1:k[0]=L,k[1]=k[0]+d.columns,L=k[1]+d.columns;for(let q=0;q<d.columns;++q){const $=E[k[0]++]<<8|E[k[1]++];j+=$,T.setUint16(P,j,!0),P+=2}break;case 2:k[0]=L,k[1]=k[0]+d.columns,k[2]=k[1]+d.columns,L=k[2]+d.columns;for(let q=0;q<d.columns;++q){const $=E[k[0]++]<<24|E[k[1]++]<<16|E[k[2]++]<<8;j+=$,T.setUint32(P,j,!0),P+=4}break}}return T}function as(d){const f=d.viewer,E={value:d.offset.value},Q=new Uint8Array(d.columns*d.lines*(d.inputChannels.length*d.type*2)),M={version:He(f,E),unknownUncompressedSize:He(f,E),unknownCompressedSize:He(f,E),acCompressedSize:He(f,E),dcCompressedSize:He(f,E),rleCompressedSize:He(f,E),rleUncompressedSize:He(f,E),rleRawSize:He(f,E),totalAcUncompressedCount:He(f,E),totalDcUncompressedCount:He(f,E),acCompression:He(f,E)};if(M.version<2)throw new Error("EXRLoader.parse: "+It.compression+" version "+M.version+" is unsupported");const T=new Array;let L=Dt(f,E)-2;for(;L>0;){const z=Zt(f.buffer,E),J=ht(f,E),ne=J>>2&3,pe=(J>>4)-1,Be=new Int8Array([pe])[0],je=ht(f,E);T.push({name:z,index:Be,type:je,compression:ne}),L-=z.length+3}const P=It.channels,k=new Array(d.inputChannels.length);for(let z=0;z<d.inputChannels.length;++z){const J=k[z]={},ne=P[z];J.name=ne.name,J.compression=0,J.decoded=!1,J.type=ne.pixelType,J.pLinear=ne.pLinear,J.width=d.columns,J.height=d.lines}const F={idx:new Array(3)};for(let z=0;z<d.inputChannels.length;++z){const J=k[z];for(let ne=0;ne<T.length;++ne){const pe=T[ne];J.name==pe.name&&(J.compression=pe.compression,pe.index>=0&&(F.idx[pe.index]=z),J.offset=z)}}let _,j,K;if(M.acCompressedSize>0)switch(M.acCompression){case 0:_=new Uint16Array(M.totalAcUncompressedCount),lt(d.array,f,E,M.acCompressedSize,_,M.totalAcUncompressedCount);break;case 1:const z=d.array.slice(E.value,E.value+M.totalAcUncompressedCount),J=Vt(z);_=new Uint16Array(J.buffer),E.value+=M.totalAcUncompressedCount;break}if(M.dcCompressedSize>0){const z={array:d.array,offset:E,size:M.dcCompressedSize};j=new Uint16Array(fn(z).buffer),E.value+=M.dcCompressedSize}if(M.rleRawSize>0){const z=d.array.slice(E.value,E.value+M.rleCompressedSize),J=Vt(z);K=rs(J.buffer),E.value+=M.rleCompressedSize}let q=0;const $=new Array(k.length);for(let z=0;z<$.length;++z)$[z]=new Array;for(let z=0;z<d.lines;++z)for(let J=0;J<k.length;++J)$[J].push(q),q+=k[J].width*d.type*2;Yi(F,$,k,_,j,Q);for(let z=0;z<k.length;++z){const J=k[z];if(!J.decoded)switch(J.compression){case 2:let ne=0,pe=0;for(let Be=0;Be<d.lines;++Be){let je=$[z][ne];for(let Ie=0;Ie<J.width;++Ie){for(let le=0;le<2*J.type;++le)Q[je++]=K[pe+le*J.width*J.height];pe++}ne++}break;case 1:default:throw new Error("EXRLoader.parse: unsupported channel compression")}}return new DataView(Q.buffer)}function Zt(d,f){const E=new Uint8Array(d);let Q=0;for(;E[f.value+Q]!=0;)Q+=1;const M=new TextDecoder().decode(E.slice(f.value,f.value+Q));return f.value=f.value+Q+1,M}function no(d,f,E){const Q=new TextDecoder().decode(new Uint8Array(d).slice(f.value,f.value+E));return f.value=f.value+E,Q}function so(d,f){const E=Ye(d,f),Q=Ve(d,f);return[E,Q]}function io(d,f){const E=Ve(d,f),Q=Ve(d,f);return[E,Q]}function Ye(d,f){const E=d.getInt32(f.value,!0);return f.value=f.value+4,E}function Ve(d,f){const E=d.getUint32(f.value,!0);return f.value=f.value+4,E}function As(d,f){const E=d[f.value];return f.value=f.value+1,E}function ht(d,f){const E=d.getUint8(f.value);return f.value=f.value+1,E}const He=function(d,f){let E;return"getBigInt64"in DataView.prototype?E=Number(d.getBigInt64(f.value,!0)):E=d.getUint32(f.value+4,!0)+Number(d.getUint32(f.value,!0)<<32),f.value+=8,E};function _e(d,f){const E=d.getFloat32(f.value,!0);return f.value+=4,E}function oo(d,f){return r.DataUtils.toHalfFloat(_e(d,f))}function V(d){const f=(d&31744)>>10,E=d&1023;return(d>>15?-1:1)*(f?f===31?E?NaN:1/0:Math.pow(2,f-15)*(1+E/1024):6103515625e-14*(E/1024))}function Dt(d,f){const E=d.getUint16(f.value,!0);return f.value+=2,E}function ro(d,f){return V(Dt(d,f))}function ao(d,f,E,Q){const M=E.value,T=[];for(;E.value<M+Q-1;){const L=Zt(f,E),P=Ye(d,E),k=ht(d,E);E.value+=3;const F=Ye(d,E),_=Ye(d,E);T.push({name:L,pixelType:P,pLinear:k,xSampling:F,ySampling:_})}return E.value+=1,T}function Ao(d,f){const E=_e(d,f),Q=_e(d,f),M=_e(d,f),T=_e(d,f),L=_e(d,f),P=_e(d,f),k=_e(d,f),F=_e(d,f);return{redX:E,redY:Q,greenX:M,greenY:T,blueX:L,blueY:P,whiteX:k,whiteY:F}}function co(d,f){const E=["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"],Q=ht(d,f);return E[Q]}function lo(d,f){const E=Ye(d,f),Q=Ye(d,f),M=Ye(d,f),T=Ye(d,f);return{xMin:E,yMin:Q,xMax:M,yMax:T}}function ho(d,f){const E=["INCREASING_Y","DECREASING_Y","RANDOM_Y"],Q=ht(d,f);return E[Q]}function uo(d,f){const E=["ENVMAP_LATLONG","ENVMAP_CUBE"],Q=ht(d,f);return E[Q]}function po(d,f){const E=["ONE_LEVEL","MIPMAP_LEVELS","RIPMAP_LEVELS"],Q=["ROUND_DOWN","ROUND_UP"],M=Ve(d,f),T=Ve(d,f),L=ht(d,f);return{xSize:M,ySize:T,levelMode:E[L&15],roundingMode:Q[L>>4]}}function go(d,f){const E=_e(d,f),Q=_e(d,f);return[E,Q]}function fo(d,f){const E=_e(d,f),Q=_e(d,f),M=_e(d,f);return[E,Q,M]}function mo(d,f,E,Q,M){if(Q==="string"||Q==="stringvector"||Q==="iccProfile")return no(f,E,M);if(Q==="chlist")return ao(d,f,E,M);if(Q==="chromaticities")return Ao(d,E);if(Q==="compression")return co(d,E);if(Q==="box2i")return lo(d,E);if(Q==="envmap")return uo(d,E);if(Q==="tiledesc")return po(d,E);if(Q==="lineOrder")return ho(d,E);if(Q==="float")return _e(d,E);if(Q==="v2f")return go(d,E);if(Q==="v3f")return fo(d,E);if(Q==="int")return Ye(d,E);if(Q==="rational")return so(d,E);if(Q==="timecode")return io(d,E);if(Q==="preview")return E.value+=M,"skipped";E.value+=M}function Io(d,f){const E=Math.log2(d);return f=="ROUND_DOWN"?Math.floor(E):Math.ceil(E)}function bo(d,f,E){let Q=0;switch(d.levelMode){case"ONE_LEVEL":Q=1;break;case"MIPMAP_LEVELS":Q=Io(Math.max(f,E),d.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return Q}function cs(d,f,E,Q){const M=new Array(d);for(let T=0;T<d;T++){const L=1<<T;let P=f/L|0;Q=="ROUND_UP"&&P*L<f&&(P+=1);const k=Math.max(P,1);M[T]=(k+E-1)/E|0}return M}function Eo(){const d=this,f=d.offset,E={value:0};for(let Q=0;Q<d.tileCount;Q++){const M=Ye(d.viewer,f),T=Ye(d.viewer,f);f.value+=8,d.size=Ve(d.viewer,f);const L=M*d.blockWidth,P=T*d.blockHeight;d.columns=L+d.blockWidth>d.width?d.width-L:d.blockWidth,d.lines=P+d.blockHeight>d.height?d.height-P:d.blockHeight;const k=d.columns*d.totalBytes,_=d.size<d.lines*k?d.uncompress(d):gn(d);f.value+=d.size;for(let j=0;j<d.lines;j++){const K=j*d.columns*d.totalBytes;for(let q=0;q<d.inputChannels.length;q++){const $=It.channels[q].name,z=d.channelByteOffsets[$]*d.columns,J=d.decodeChannels[$];if(J===void 0)continue;E.value=K+z;const ne=(d.height-(1+P+j))*d.outLineWidth;for(let pe=0;pe<d.columns;pe++){const Be=ne+(pe+L)*d.outputChannels+J;d.byteArray[Be]=d.getter(_,E)}}}}}function Co(){const d=this,f=d.offset,E={value:0};for(let Q=0;Q<d.height/d.blockHeight;Q++){const M=Ye(d.viewer,f)-It.dataWindow.yMin;d.size=Ve(d.viewer,f),d.lines=M+d.blockHeight>d.height?d.height-M:d.blockHeight;const T=d.columns*d.totalBytes,P=d.size<d.lines*T?d.uncompress(d):gn(d);f.value+=d.size;for(let k=0;k<d.blockHeight;k++){const F=Q*d.blockHeight,_=k+d.scanOrder(F);if(_>=d.height)continue;const j=k*T,K=(d.height-1-_)*d.outLineWidth;for(let q=0;q<d.inputChannels.length;q++){const $=It.channels[q].name,z=d.channelByteOffsets[$]*d.columns,J=d.decodeChannels[$];if(J!==void 0){E.value=j+z;for(let ne=0;ne<d.columns;ne++){const pe=K+ne*d.outputChannels+J;d.byteArray[pe]=d.getter(P,E)}}}}}}function Bo(d,f,E){const Q={};if(d.getUint32(0,!0)!=20000630)throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format.");Q.version=d.getUint8(4);const M=d.getUint8(5);Q.spec={singleTile:!!(M&2),longName:!!(M&4),deepFormat:!!(M&8),multiPart:!!(M&16)},E.value=8;let T=!0;for(;T;){const L=Zt(f,E);if(L==0)T=!1;else{const P=Zt(f,E),k=Ve(d,E),F=mo(d,f,E,P,k);F===void 0?console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${P}'.`):Q[L]=F}}if((M&-7)!=0)throw console.error("THREE.EXRHeader:",Q),new Error("THREE.EXRLoader: Provided file is currently unsupported.");return Q}function yo(d,f,E,Q,M){const T={size:0,viewer:f,array:E,offset:Q,width:d.dataWindow.xMax-d.dataWindow.xMin+1,height:d.dataWindow.yMax-d.dataWindow.yMin+1,inputChannels:d.channels,channelByteOffsets:{},scanOrder:null,totalBytes:null,columns:null,lines:null,type:null,uncompress:null,getter:null,format:null,colorSpace:r.LinearSRGBColorSpace};switch(d.compression){case"NO_COMPRESSION":T.blockHeight=1,T.uncompress=gn;break;case"RLE_COMPRESSION":T.blockHeight=1,T.uncompress=$i;break;case"ZIPS_COMPRESSION":T.blockHeight=1,T.uncompress=fn;break;case"ZIP_COMPRESSION":T.blockHeight=16,T.uncompress=fn;break;case"PIZ_COMPRESSION":T.blockHeight=32,T.uncompress=eo;break;case"PXR24_COMPRESSION":T.blockHeight=16,T.uncompress=to;break;case"DWAA_COMPRESSION":T.blockHeight=32,T.uncompress=as;break;case"DWAB_COMPRESSION":T.blockHeight=256,T.uncompress=as;break;default:throw new Error("EXRLoader.parse: "+d.compression+" is unsupported")}const L={};for(const _ of d.channels)switch(_.name){case"Y":case"R":case"G":case"B":case"A":L[_.name]=!0,T.type=_.pixelType}let P=!1;if(L.R&&L.G&&L.B)P=!L.A,T.outputChannels=4,T.decodeChannels={R:0,G:1,B:2,A:3};else if(L.Y)T.outputChannels=1,T.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(T.type==1)switch(M){case r.FloatType:T.getter=ro;break;case r.HalfFloatType:T.getter=Dt;break}else if(T.type==2)switch(M){case r.FloatType:T.getter=_e;break;case r.HalfFloatType:T.getter=oo}else throw new Error("EXRLoader.parse: unsupported pixelType "+T.type+" for "+d.compression+".");T.columns=T.width;const k=T.width*T.height*T.outputChannels;switch(M){case r.FloatType:T.byteArray=new Float32Array(k),P&&T.byteArray.fill(1,0,k);break;case r.HalfFloatType:T.byteArray=new Uint16Array(k),P&&T.byteArray.fill(15360,0,k);break;default:console.error("THREE.EXRLoader: unsupported type: ",M);break}let F=0;for(const _ of d.channels)T.decodeChannels[_.name]!==void 0&&(T.channelByteOffsets[_.name]=F),F+=_.pixelType*2;if(T.totalBytes=F,T.outLineWidth=T.width*T.outputChannels,d.lineOrder==="INCREASING_Y"?T.scanOrder=_=>_:T.scanOrder=_=>T.height-1-_,T.outputChannels==4?(T.format=r.RGBAFormat,T.colorSpace=r.LinearSRGBColorSpace):(T.format=r.RedFormat,T.colorSpace=r.NoColorSpace),d.spec.singleTile){T.blockHeight=d.tiles.ySize,T.blockWidth=d.tiles.xSize;const _=bo(d.tiles,T.width,T.height),j=cs(_,T.width,d.tiles.xSize,d.tiles.roundingMode),K=cs(_,T.height,d.tiles.ySize,d.tiles.roundingMode);T.tileCount=j[0]*K[0];for(let q=0;q<_;q++)for(let $=0;$<K[q];$++)for(let z=0;z<j[q];z++)He(f,Q);T.decode=Eo.bind(T)}else{T.blockWidth=T.width;const _=Math.ceil(T.height/T.blockHeight);for(let j=0;j<_;j++)He(f,Q);T.decode=Co.bind(T)}return T}const ls={value:0},hs=new DataView(e),wo=new Uint8Array(e),It=Bo(hs,e,ls),St=yo(It,hs,wo,ls,this.type);return St.decode(),{header:It,width:St.width,height:St.height,data:St.byteArray,format:St.format,colorSpace:St.colorSpace,type:this.type}}setDataType(e){return this.type=e,this}load(e,t,s,n){function i(o,a){o.colorSpace=a.colorSpace,o.minFilter=r.LinearFilter,o.magFilter=r.LinearFilter,o.generateMipmaps=!1,o.flipY=!1,t&&t(o,a)}return super.load(e,i,s,n)}}const pa=Object.freeze(Object.defineProperty({__proto__:null,EXRLoader:Li},Symbol.toStringTag,{value:"Module"}));class ki extends r.DataTextureLoader{constructor(e){super(e),this.type=r.HalfFloatType}parse(e){const o=function(S,v){switch(S){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(v||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(v||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(v||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(v||""))}},u=function(S,v,U){v=v||1024;let H=S.pos,X=-1,N=0,Y="",O=String.fromCharCode.apply(null,new Uint16Array(S.subarray(H,H+128)));for(;0>(X=O.indexOf(`
36
+ `)a=0,A-=i;else{const u=Or(h,n,a,A,t);a+=u.offsetX,o.push(u.path)}}return o}function Or(c,e,t,s,n){const i=n.glyphs[c]||n.glyphs["?"];if(!i){console.error('THREE.Font: character "'+c+'" does not exists in font family '+n.familyName+".");return}const o=new r.ShapePath;let a,A,l,h,u,p,g,m;if(i.o){const I=i._cachedOutline||(i._cachedOutline=i.o.split(" "));for(let b=0,B=I.length;b<B;)switch(I[b++]){case"m":a=I[b++]*e+t,A=I[b++]*e+s,o.moveTo(a,A);break;case"l":a=I[b++]*e+t,A=I[b++]*e+s,o.lineTo(a,A);break;case"q":l=I[b++]*e+t,h=I[b++]*e+s,u=I[b++]*e+t,p=I[b++]*e+s,o.quadraticCurveTo(u,p,l,h);break;case"b":l=I[b++]*e+t,h=I[b++]*e+s,u=I[b++]*e+t,p=I[b++]*e+s,g=I[b++]*e+t,m=I[b++]*e+s,o.bezierCurveTo(u,p,g,m,l,h);break}}return{offsetX:i.ha*e,path:o}}const Et=new r.Raycaster,Fe=new r.Vector3,pt=new r.Vector3,Ce=new r.Quaternion,Bs={X:new r.Vector3(1,0,0),Y:new r.Vector3(0,1,0),Z:new r.Vector3(0,0,1)},Sn={type:"change"},ys={type:"mouseDown",mode:null},ws={type:"mouseUp",mode:null},Qs={type:"objectChange"};class Hr extends r.Controls{constructor(e,t=null){super(void 0,t);const s=new Kr(this);this._root=s;const n=new xi;this._gizmo=n,s.add(n);const i=new Jr;this._plane=i,s.add(i);const o=this;function a(C,y){let x=y;Object.defineProperty(o,C,{get:function(){return x!==void 0?x:y},set:function(R){x!==R&&(x=R,i[C]=R,n[C]=R,o.dispatchEvent({type:C+"-changed",value:R}),o.dispatchEvent(Sn))}}),o[C]=y,i[C]=y,n[C]=y}a("camera",e),a("object",void 0),a("enabled",!0),a("axis",null),a("mode","translate"),a("translationSnap",null),a("rotationSnap",null),a("scaleSnap",null),a("space","world"),a("size",1),a("dragging",!1),a("showX",!0),a("showY",!0),a("showZ",!0);const A=new r.Vector3,l=new r.Vector3,h=new r.Quaternion,u=new r.Quaternion,p=new r.Vector3,g=new r.Quaternion,m=new r.Vector3,I=new r.Vector3,b=new r.Vector3,B=0,w=new r.Vector3;a("worldPosition",A),a("worldPositionStart",l),a("worldQuaternion",h),a("worldQuaternionStart",u),a("cameraPosition",p),a("cameraQuaternion",g),a("pointStart",m),a("pointEnd",I),a("rotationAxis",b),a("rotationAngle",B),a("eye",w),this._offset=new r.Vector3,this._startNorm=new r.Vector3,this._endNorm=new r.Vector3,this._cameraScale=new r.Vector3,this._parentPosition=new r.Vector3,this._parentQuaternion=new r.Quaternion,this._parentQuaternionInv=new r.Quaternion,this._parentScale=new r.Vector3,this._worldScaleStart=new r.Vector3,this._worldQuaternionInv=new r.Quaternion,this._worldScale=new r.Vector3,this._positionStart=new r.Vector3,this._quaternionStart=new r.Quaternion,this._scaleStart=new r.Vector3,this._getPointer=jr.bind(this),this._onPointerDown=zr.bind(this),this._onPointerHover=qr.bind(this),this._onPointerMove=Yr.bind(this),this._onPointerUp=Vr.bind(this),t!==null&&this.connect()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.style.touchAction="auto"}getHelper(){return this._root}pointerHover(e){if(this.object===void 0||this.dragging===!0)return;e!==null&&Et.setFromCamera(e,this.camera);const t=Tn(this._gizmo.picker[this.mode],Et);t?this.axis=t.object.name:this.axis=null}pointerDown(e){if(!(this.object===void 0||this.dragging===!0||e!=null&&e.button!==0)&&this.axis!==null){e!==null&&Et.setFromCamera(e,this.camera);const t=Tn(this._plane,Et,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,ys.mode=this.mode,this.dispatchEvent(ys)}}pointerMove(e){const t=this.axis,s=this.mode,n=this.object;let i=this.space;if(s==="scale"?i="local":(t==="E"||t==="XYZE"||t==="XYZ")&&(i="world"),n===void 0||t===null||this.dragging===!1||e!==null&&e.button!==-1)return;e!==null&&Et.setFromCamera(e,this.camera);const o=Tn(this._plane,Et,!0);if(o){if(this.pointEnd.copy(o.point).sub(this.worldPositionStart),s==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),i==="local"&&t!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf("X")===-1&&(this._offset.x=0),t.indexOf("Y")===-1&&(this._offset.y=0),t.indexOf("Z")===-1&&(this._offset.z=0),i==="local"&&t!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),n.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(i==="local"&&(n.position.applyQuaternion(Ce.copy(this._quaternionStart).invert()),t.search("X")!==-1&&(n.position.x=Math.round(n.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(n.position.y=Math.round(n.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(n.position.z=Math.round(n.position.z/this.translationSnap)*this.translationSnap),n.position.applyQuaternion(this._quaternionStart)),i==="world"&&(n.parent&&n.position.add(Fe.setFromMatrixPosition(n.parent.matrixWorld)),t.search("X")!==-1&&(n.position.x=Math.round(n.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(n.position.y=Math.round(n.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(n.position.z=Math.round(n.position.z/this.translationSnap)*this.translationSnap),n.parent&&n.position.sub(Fe.setFromMatrixPosition(n.parent.matrixWorld))));else if(s==="scale"){if(t.search("XYZ")!==-1){let a=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(a*=-1),pt.set(a,a,a)}else Fe.copy(this.pointStart),pt.copy(this.pointEnd),Fe.applyQuaternion(this._worldQuaternionInv),pt.applyQuaternion(this._worldQuaternionInv),pt.divide(Fe),t.search("X")===-1&&(pt.x=1),t.search("Y")===-1&&(pt.y=1),t.search("Z")===-1&&(pt.z=1);n.scale.copy(this._scaleStart).multiply(pt),this.scaleSnap&&(t.search("X")!==-1&&(n.scale.x=Math.round(n.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Y")!==-1&&(n.scale.y=Math.round(n.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Z")!==-1&&(n.scale.z=Math.round(n.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(s==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const a=20/this.worldPosition.distanceTo(Fe.setFromMatrixPosition(this.camera.matrixWorld));let A=!1;t==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(Fe.copy(this.rotationAxis).cross(this.eye))*a):(t==="X"||t==="Y"||t==="Z")&&(this.rotationAxis.copy(Bs[t]),Fe.copy(Bs[t]),i==="local"&&Fe.applyQuaternion(this.worldQuaternion),Fe.cross(this.eye),Fe.length()===0?A=!0:this.rotationAngle=this._offset.dot(Fe.normalize())*a),(t==="E"||A)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),i==="local"&&t!=="E"&&t!=="XYZE"?(n.quaternion.copy(this._quaternionStart),n.quaternion.multiply(Ce.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),n.quaternion.copy(Ce.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),n.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(Sn),this.dispatchEvent(Qs)}}pointerUp(e){e!==null&&e.button!==0||(this.dragging&&this.axis!==null&&(ws.mode=this.mode,this.dispatchEvent(ws)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})}attach(e){return this.object=e,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(Sn),this.dispatchEvent(Qs),this.pointStart.copy(this.pointEnd))}getRaycaster(){return Et}getMode(){return this.mode}setMode(e){this.mode=e}setTranslationSnap(e){this.translationSnap=e}setRotationSnap(e){this.rotationSnap=e}setScaleSnap(e){this.scaleSnap=e}setSize(e){this.size=e}setSpace(e){this.space=e}}function jr(c){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:c.button};{const e=this.domElement.getBoundingClientRect();return{x:(c.clientX-e.left)/e.width*2-1,y:-(c.clientY-e.top)/e.height*2+1,button:c.button}}}function qr(c){if(this.enabled)switch(c.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(c));break}}function zr(c){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(c.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(c)),this.pointerDown(this._getPointer(c)))}function Yr(c){this.enabled&&this.pointerMove(this._getPointer(c))}function Vr(c){this.enabled&&(this.domElement.releasePointerCapture(c.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(c)))}function Tn(c,e,t){const s=e.intersectObject(c,!0);for(let n=0;n<s.length;n++)if(s[n].object.visible||t)return s[n];return!1}const en=new r.Euler,ge=new r.Vector3(0,1,0),xs=new r.Vector3(0,0,0),Ss=new r.Matrix4,tn=new r.Quaternion,hn=new r.Quaternion,et=new r.Vector3,Ts=new r.Matrix4,zt=new r.Vector3(1,0,0),Bt=new r.Vector3(0,1,0),Yt=new r.Vector3(0,0,1),nn=new r.Vector3,Nt=new r.Vector3,Ut=new r.Vector3;class Kr extends r.Object3D{constructor(e){super(),this.isTransformControlsRoot=!0,this.controls=e,this.visible=!1}updateMatrixWorld(e){const t=this.controls;t.object!==void 0&&(t.object.updateMatrixWorld(),t.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):t.object.parent.matrixWorld.decompose(t._parentPosition,t._parentQuaternion,t._parentScale),t.object.matrixWorld.decompose(t.worldPosition,t.worldQuaternion,t._worldScale),t._parentQuaternionInv.copy(t._parentQuaternion).invert(),t._worldQuaternionInv.copy(t.worldQuaternion).invert()),t.camera.updateMatrixWorld(),t.camera.matrixWorld.decompose(t.cameraPosition,t.cameraQuaternion,t._cameraScale),t.camera.isOrthographicCamera?t.camera.getWorldDirection(t.eye).negate():t.eye.copy(t.cameraPosition).sub(t.worldPosition).normalize(),super.updateMatrixWorld(e)}}class xi extends r.Object3D{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const e=new r.MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new r.LineBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),s=e.clone();s.opacity=.15;const n=t.clone();n.opacity=.5;const i=e.clone();i.color.setHex(16711680);const o=e.clone();o.color.setHex(65280);const a=e.clone();a.color.setHex(255);const A=e.clone();A.color.setHex(16711680),A.opacity=.5;const l=e.clone();l.color.setHex(65280),l.opacity=.5;const h=e.clone();h.color.setHex(255),h.opacity=.5;const u=e.clone();u.opacity=.25;const p=e.clone();p.color.setHex(16776960),p.opacity=.25,e.clone().color.setHex(16776960);const m=e.clone();m.color.setHex(7895160);const I=new r.CylinderGeometry(0,.04,.1,12);I.translate(0,.05,0);const b=new r.BoxGeometry(.08,.08,.08);b.translate(0,.04,0);const B=new r.BufferGeometry;B.setAttribute("position",new r.Float32BufferAttribute([0,0,0,1,0,0],3));const w=new r.CylinderGeometry(.0075,.0075,.5,3);w.translate(0,.25,0);function C(Y,O){const Z=new r.TorusGeometry(Y,.0075,3,64,O*Math.PI*2);return Z.rotateY(Math.PI/2),Z.rotateX(Math.PI/2),Z}function y(){const Y=new r.BufferGeometry;return Y.setAttribute("position",new r.Float32BufferAttribute([0,0,0,1,1,1],3)),Y}const x={X:[[new r.Mesh(I,i),[.5,0,0],[0,0,-Math.PI/2]],[new r.Mesh(I,i),[-.5,0,0],[0,0,Math.PI/2]],[new r.Mesh(w,i),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new r.Mesh(I,o),[0,.5,0]],[new r.Mesh(I,o),[0,-.5,0],[Math.PI,0,0]],[new r.Mesh(w,o)]],Z:[[new r.Mesh(I,a),[0,0,.5],[Math.PI/2,0,0]],[new r.Mesh(I,a),[0,0,-.5],[-Math.PI/2,0,0]],[new r.Mesh(w,a),null,[Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.OctahedronGeometry(.1,0),u.clone()),[0,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),h.clone()),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),A.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},R={X:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.OctahedronGeometry(.2,0),s)]],XY:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]]},D={START:[[new r.Mesh(new r.OctahedronGeometry(.01,2),n),null,null,null,"helper"]],END:[[new r.Mesh(new r.OctahedronGeometry(.01,2),n),null,null,null,"helper"]],DELTA:[[new r.Line(y(),n),null,null,null,"helper"]],X:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new r.Line(B,n.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new r.Line(B,n.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},S={XYZE:[[new r.Mesh(C(.5,1),m),null,[0,Math.PI/2,0]]],X:[[new r.Mesh(C(.5,.5),i)]],Y:[[new r.Mesh(C(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new r.Mesh(C(.5,.5),a),null,[0,Math.PI/2,0]]],E:[[new r.Mesh(C(.75,1),p),null,[0,Math.PI/2,0]]]},v={AXIS:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},U={XYZE:[[new r.Mesh(new r.SphereGeometry(.25,10,8),s)]],X:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new r.Mesh(new r.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new r.Mesh(new r.TorusGeometry(.75,.1,2,24),s)]]},G={X:[[new r.Mesh(b,i),[.5,0,0],[0,0,-Math.PI/2]],[new r.Mesh(w,i),[0,0,0],[0,0,-Math.PI/2]],[new r.Mesh(b,i),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(b,o),[0,.5,0]],[new r.Mesh(w,o)],[new r.Mesh(b,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new r.Mesh(b,a),[0,0,.5],[Math.PI/2,0,0]],[new r.Mesh(w,a),[0,0,0],[Math.PI/2,0,0]],[new r.Mesh(b,a),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),h),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),A),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.BoxGeometry(.1,.1,.1),u.clone())]]},H={X:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new r.Mesh(new r.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new r.Mesh(new r.BoxGeometry(.2,.2,.2),s),[0,0,0]]]},X={X:[[new r.Line(B,n.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new r.Line(B,n.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new r.Line(B,n.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function N(Y){const O=new r.Object3D;for(const Z in Y)for(let ie=Y[Z].length;ie--;){const ee=Y[Z][ie][0].clone(),ce=Y[Z][ie][1],te=Y[Z][ie][2],W=Y[Z][ie][3],se=Y[Z][ie][4];ee.name=Z,ee.tag=se,ce&&ee.position.set(ce[0],ce[1],ce[2]),te&&ee.rotation.set(te[0],te[1],te[2]),W&&ee.scale.set(W[0],W[1],W[2]),ee.updateMatrix();const de=ee.geometry.clone();de.applyMatrix4(ee.matrix),ee.geometry=de,ee.renderOrder=1/0,ee.position.set(0,0,0),ee.rotation.set(0,0,0),ee.scale.set(1,1,1),O.add(ee)}return O}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=N(x)),this.add(this.gizmo.rotate=N(S)),this.add(this.gizmo.scale=N(G)),this.add(this.picker.translate=N(R)),this.add(this.picker.rotate=N(U)),this.add(this.picker.scale=N(H)),this.add(this.helper.translate=N(D)),this.add(this.helper.rotate=N(v)),this.add(this.helper.scale=N(X)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(e){const s=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:hn;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let n=[];n=n.concat(this.picker[this.mode].children),n=n.concat(this.gizmo[this.mode].children),n=n.concat(this.helper[this.mode].children);for(let i=0;i<n.length;i++){const o=n[i];o.visible=!0,o.rotation.set(0,0,0),o.position.copy(this.worldPosition);let a;if(this.camera.isOrthographicCamera?a=(this.camera.top-this.camera.bottom)/this.camera.zoom:a=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),o.scale.set(1,1,1).multiplyScalar(a*this.size/4),o.tag==="helper"){o.visible=!1,o.name==="AXIS"?(o.visible=!!this.axis,this.axis==="X"&&(Ce.setFromEuler(en.set(0,0,0)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="Y"&&(Ce.setFromEuler(en.set(0,0,Math.PI/2)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="Z"&&(Ce.setFromEuler(en.set(0,Math.PI/2,0)),o.quaternion.copy(s).multiply(Ce),Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))>.9&&(o.visible=!1)),this.axis==="XYZE"&&(Ce.setFromEuler(en.set(0,Math.PI/2,0)),ge.copy(this.rotationAxis),o.quaternion.setFromRotationMatrix(Ss.lookAt(xs,ge,Bt)),o.quaternion.multiply(Ce),o.visible=this.dragging),this.axis==="E"&&(o.visible=!1)):o.name==="START"?(o.position.copy(this.worldPositionStart),o.visible=this.dragging):o.name==="END"?(o.position.copy(this.worldPosition),o.visible=this.dragging):o.name==="DELTA"?(o.position.copy(this.worldPositionStart),o.quaternion.copy(this.worldQuaternionStart),Fe.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),Fe.applyQuaternion(this.worldQuaternionStart.clone().invert()),o.scale.copy(Fe),o.visible=this.dragging):(o.quaternion.copy(s),this.dragging?o.position.copy(this.worldPositionStart):o.position.copy(this.worldPosition),this.axis&&(o.visible=this.axis.search(o.name)!==-1));continue}o.quaternion.copy(s),this.mode==="translate"||this.mode==="scale"?(o.name==="X"&&Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="Y"&&Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="Z"&&Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))>.99&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="XY"&&Math.abs(ge.copy(Yt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="YZ"&&Math.abs(ge.copy(zt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1),o.name==="XZ"&&Math.abs(ge.copy(Bt).applyQuaternion(s).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),o.visible=!1)):this.mode==="rotate"&&(tn.copy(s),ge.copy(this.eye).applyQuaternion(Ce.copy(s).invert()),o.name.search("E")!==-1&&o.quaternion.setFromRotationMatrix(Ss.lookAt(this.eye,xs,Bt)),o.name==="X"&&(Ce.setFromAxisAngle(zt,Math.atan2(-ge.y,ge.z)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce)),o.name==="Y"&&(Ce.setFromAxisAngle(Bt,Math.atan2(ge.x,ge.z)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce)),o.name==="Z"&&(Ce.setFromAxisAngle(Yt,Math.atan2(ge.y,ge.x)),Ce.multiplyQuaternions(tn,Ce),o.quaternion.copy(Ce))),o.visible=o.visible&&(o.name.indexOf("X")===-1||this.showX),o.visible=o.visible&&(o.name.indexOf("Y")===-1||this.showY),o.visible=o.visible&&(o.name.indexOf("Z")===-1||this.showZ),o.visible=o.visible&&(o.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),o.material._color=o.material._color||o.material.color.clone(),o.material._opacity=o.material._opacity||o.material.opacity,o.material.color.copy(o.material._color),o.material.opacity=o.material._opacity,this.enabled&&this.axis&&(o.name===this.axis||this.axis.split("").some(function(A){return o.name===A}))&&(o.material.color.setHex(16776960),o.material.opacity=1)}super.updateMatrixWorld(e)}}class Jr extends r.Mesh{constructor(){super(new r.PlaneGeometry(1e5,1e5,2,2),new r.MeshBasicMaterial({visible:!1,wireframe:!0,side:r.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(e){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(t="local"),nn.copy(zt).applyQuaternion(t==="local"?this.worldQuaternion:hn),Nt.copy(Bt).applyQuaternion(t==="local"?this.worldQuaternion:hn),Ut.copy(Yt).applyQuaternion(t==="local"?this.worldQuaternion:hn),ge.copy(Nt),this.mode){case"translate":case"scale":switch(this.axis){case"X":ge.copy(this.eye).cross(nn),et.copy(nn).cross(ge);break;case"Y":ge.copy(this.eye).cross(Nt),et.copy(Nt).cross(ge);break;case"Z":ge.copy(this.eye).cross(Ut),et.copy(Ut).cross(ge);break;case"XY":et.copy(Ut);break;case"YZ":et.copy(nn);break;case"XZ":ge.copy(Ut),et.copy(Nt);break;case"XYZ":case"E":et.set(0,0,0);break}break;case"rotate":default:et.set(0,0,0)}et.length()===0?this.quaternion.copy(this.cameraQuaternion):(Ts.lookAt(Fe.set(0,0,0),et,ge),this.quaternion.setFromRotationMatrix(Ts)),super.updateMatrixWorld(e)}}var Qe=Uint8Array,qe=Uint16Array,es=Int32Array,dn=new Qe([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),pn=new Qe([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),zn=new Qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Si=function(c,e){for(var t=new qe(31),s=0;s<31;++s)t[s]=e+=1<<c[s-1];for(var n=new es(t[30]),s=1;s<30;++s)for(var i=t[s];i<t[s+1];++i)n[i]=i-t[s]<<5|s;return{b:t,r:n}},Ti=Si(dn,2),vi=Ti.b,Yn=Ti.r;vi[28]=258,Yn[258]=28;var Mi=Si(pn,0),Wr=Mi.b,vs=Mi.r,Vn=new qe(32768);for(var Ee=0;Ee<32768;++Ee){var gt=(Ee&43690)>>1|(Ee&21845)<<1;gt=(gt&52428)>>2|(gt&13107)<<2,gt=(gt&61680)>>4|(gt&3855)<<4,Vn[Ee]=((gt&65280)>>8|(gt&255)<<8)>>1}var it=(function(c,e,t){for(var s=c.length,n=0,i=new qe(e);n<s;++n)c[n]&&++i[c[n]-1];var o=new qe(e);for(n=1;n<e;++n)o[n]=o[n-1]+i[n-1]<<1;var a;if(t){a=new qe(1<<e);var A=15-e;for(n=0;n<s;++n)if(c[n])for(var l=n<<4|c[n],h=e-c[n],u=o[c[n]-1]++<<h,p=u|(1<<h)-1;u<=p;++u)a[Vn[u]>>A]=l}else for(a=new qe(s),n=0;n<s;++n)c[n]&&(a[n]=Vn[o[c[n]-1]++]>>15-c[n]);return a}),ft=new Qe(288);for(var Ee=0;Ee<144;++Ee)ft[Ee]=8;for(var Ee=144;Ee<256;++Ee)ft[Ee]=9;for(var Ee=256;Ee<280;++Ee)ft[Ee]=7;for(var Ee=280;Ee<288;++Ee)ft[Ee]=8;var Wt=new Qe(32);for(var Ee=0;Ee<32;++Ee)Wt[Ee]=5;var Xr=it(ft,9,0),Zr=it(ft,9,1),$r=it(Wt,5,0),ea=it(Wt,5,1),vn=function(c){for(var e=c[0],t=1;t<c.length;++t)c[t]>e&&(e=c[t]);return e},Ze=function(c,e,t){var s=e/8|0;return(c[s]|c[s+1]<<8)>>(e&7)&t},Mn=function(c,e){var t=e/8|0;return(c[t]|c[t+1]<<8|c[t+2]<<16)>>(e&7)},ts=function(c){return(c+7)/8|0},ns=function(c,e,t){return(t==null||t>c.length)&&(t=c.length),new Qe(c.subarray(e,t))},ta=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ne=function(c,e,t){var s=new Error(e||ta[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,Ne),!t)throw s;return s},na=function(c,e,t,s){var n=c.length,i=0;if(!n||e.f&&!e.l)return t||new Qe(0);var o=!t,a=o||e.i!=2,A=e.i;o&&(t=new Qe(n*3));var l=function(lt){var mt=t.length;if(lt>mt){var ot=new Qe(Math.max(mt*2,lt));ot.set(t),t=ot}},h=e.f||0,u=e.p||0,p=e.b||0,g=e.l,m=e.d,I=e.m,b=e.n,B=n*8;do{if(!g){h=Ze(c,u,1);var w=Ze(c,u+1,3);if(u+=3,w)if(w==1)g=Zr,m=ea,I=9,b=5;else if(w==2){var R=Ze(c,u,31)+257,D=Ze(c,u+10,15)+4,S=R+Ze(c,u+5,31)+1;u+=14;for(var v=new Qe(S),U=new Qe(19),G=0;G<D;++G)U[zn[G]]=Ze(c,u+G*3,7);u+=D*3;for(var H=vn(U),X=(1<<H)-1,N=it(U,H,1),G=0;G<S;){var Y=N[Ze(c,u,X)];u+=Y&15;var C=Y>>4;if(C<16)v[G++]=C;else{var O=0,Z=0;for(C==16?(Z=3+Ze(c,u,3),u+=2,O=v[G-1]):C==17?(Z=3+Ze(c,u,7),u+=3):C==18&&(Z=11+Ze(c,u,127),u+=7);Z--;)v[G++]=O}}var ie=v.subarray(0,R),ee=v.subarray(R);I=vn(ie),b=vn(ee),g=it(ie,I,1),m=it(ee,b,1)}else Ne(1);else{var C=ts(u)+4,y=c[C-4]|c[C-3]<<8,x=C+y;if(x>n){A&&Ne(0);break}a&&l(p+y),t.set(c.subarray(C,x),p),e.b=p+=y,e.p=u=x*8,e.f=h;continue}if(u>B){A&&Ne(0);break}}a&&l(p+131072);for(var ce=(1<<I)-1,te=(1<<b)-1,W=u;;W=u){var O=g[Mn(c,u)&ce],se=O>>4;if(u+=O&15,u>B){A&&Ne(0);break}if(O||Ne(2),se<256)t[p++]=se;else if(se==256){W=u,g=null;break}else{var de=se-254;if(se>264){var G=se-257,me=dn[G];de=Ze(c,u,(1<<me)-1)+vi[G],u+=me}var Ae=m[Mn(c,u)&te],Pe=Ae>>4;Ae||Ne(3),u+=Ae&15;var ee=Wr[Pe];if(Pe>3){var me=pn[Pe];ee+=Mn(c,u)&(1<<me)-1,u+=me}if(u>B){A&&Ne(0);break}a&&l(p+131072);var Oe=p+de;if(p<ee){var wt=i-ee,Qt=Math.min(ee,Oe);for(wt+p<0&&Ne(3);p<Qt;++p)t[p]=s[wt+p]}for(;p<Oe;++p)t[p]=t[p-ee]}}e.l=g,e.p=W,e.b=p,e.f=h,g&&(h=1,e.m=I,e.d=m,e.n=b)}while(!h);return p!=t.length&&o?ns(t,0,p):t.subarray(0,p)},at=function(c,e,t){t<<=e&7;var s=e/8|0;c[s]|=t,c[s+1]|=t>>8},Pt=function(c,e,t){t<<=e&7;var s=e/8|0;c[s]|=t,c[s+1]|=t>>8,c[s+2]|=t>>16},Rn=function(c,e){for(var t=[],s=0;s<c.length;++s)c[s]&&t.push({s,f:c[s]});var n=t.length,i=t.slice();if(!n)return{t:Di,l:0};if(n==1){var o=new Qe(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(x,R){return x.f-R.f}),t.push({s:-1,f:25001});var a=t[0],A=t[1],l=0,h=1,u=2;for(t[0]={s:-1,f:a.f+A.f,l:a,r:A};h!=n-1;)a=t[t[l].f<t[u].f?l++:u++],A=t[l!=h&&t[l].f<t[u].f?l++:u++],t[h++]={s:-1,f:a.f+A.f,l:a,r:A};for(var p=i[0].s,s=1;s<n;++s)i[s].s>p&&(p=i[s].s);var g=new qe(p+1),m=Kn(t[h-1],g,0);if(m>e){var s=0,I=0,b=m-e,B=1<<b;for(i.sort(function(R,D){return g[D.s]-g[R.s]||R.f-D.f});s<n;++s){var w=i[s].s;if(g[w]>e)I+=B-(1<<m-g[w]),g[w]=e;else break}for(I>>=b;I>0;){var C=i[s].s;g[C]<e?I-=1<<e-g[C]++-1:++s}for(;s>=0&&I;--s){var y=i[s].s;g[y]==e&&(--g[y],++I)}m=e}return{t:new Qe(g),l:m}},Kn=function(c,e,t){return c.s==-1?Math.max(Kn(c.l,e,t+1),Kn(c.r,e,t+1)):e[c.s]=t},Ms=function(c){for(var e=c.length;e&&!c[--e];);for(var t=new qe(++e),s=0,n=c[0],i=1,o=function(A){t[s++]=A},a=1;a<=e;++a)if(c[a]==n&&a!=e)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=c[a]}return{c:t.subarray(0,s),n:e}},Ot=function(c,e){for(var t=0,s=0;s<e.length;++s)t+=c[s]*e[s];return t},Ri=function(c,e,t){var s=t.length,n=ts(e+2);c[n]=s&255,c[n+1]=s>>8,c[n+2]=c[n]^255,c[n+3]=c[n+1]^255;for(var i=0;i<s;++i)c[n+i+4]=t[i];return(n+4+s)*8},Rs=function(c,e,t,s,n,i,o,a,A,l,h){at(e,h++,t),++n[256];for(var u=Rn(n,15),p=u.t,g=u.l,m=Rn(i,15),I=m.t,b=m.l,B=Ms(p),w=B.c,C=B.n,y=Ms(I),x=y.c,R=y.n,D=new qe(19),S=0;S<w.length;++S)++D[w[S]&31];for(var S=0;S<x.length;++S)++D[x[S]&31];for(var v=Rn(D,7),U=v.t,G=v.l,H=19;H>4&&!U[zn[H-1]];--H);var X=l+5<<3,N=Ot(n,ft)+Ot(i,Wt)+o,Y=Ot(n,p)+Ot(i,I)+o+14+3*H+Ot(D,U)+2*D[16]+3*D[17]+7*D[18];if(A>=0&&X<=N&&X<=Y)return Ri(e,h,c.subarray(A,A+l));var O,Z,ie,ee;if(at(e,h,1+(Y<N)),h+=2,Y<N){O=it(p,g,0),Z=p,ie=it(I,b,0),ee=I;var ce=it(U,G,0);at(e,h,C-257),at(e,h+5,R-1),at(e,h+10,H-4),h+=14;for(var S=0;S<H;++S)at(e,h+3*S,U[zn[S]]);h+=3*H;for(var te=[w,x],W=0;W<2;++W)for(var se=te[W],S=0;S<se.length;++S){var de=se[S]&31;at(e,h,ce[de]),h+=U[de],de>15&&(at(e,h,se[S]>>5&127),h+=se[S]>>12)}}else O=Xr,Z=ft,ie=$r,ee=Wt;for(var S=0;S<a;++S){var me=s[S];if(me>255){var de=me>>18&31;Pt(e,h,O[de+257]),h+=Z[de+257],de>7&&(at(e,h,me>>23&31),h+=dn[de]);var Ae=me&31;Pt(e,h,ie[Ae]),h+=ee[Ae],Ae>3&&(Pt(e,h,me>>5&8191),h+=pn[Ae])}else Pt(e,h,O[me]),h+=Z[me]}return Pt(e,h,O[256]),h+Z[256]},sa=new es([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Di=new Qe(0),ia=function(c,e,t,s,n,i){var o=i.z||c.length,a=new Qe(s+o+5*(1+Math.ceil(o/7e3))+n),A=a.subarray(s,a.length-n),l=i.l,h=(i.r||0)&7;if(e){h&&(A[0]=i.r>>3);for(var u=sa[e-1],p=u>>13,g=u&8191,m=(1<<t)-1,I=i.p||new qe(32768),b=i.h||new qe(m+1),B=Math.ceil(t/3),w=2*B,C=function(xt){return(c[xt]^c[xt+1]<<B^c[xt+2]<<w)&m},y=new es(25e3),x=new qe(288),R=new qe(32),D=0,S=0,v=i.i||0,U=0,G=i.w||0,H=0;v+2<o;++v){var X=C(v),N=v&32767,Y=b[X];if(I[N]=Y,b[X]=N,G<=v){var O=o-v;if((D>7e3||U>24576)&&(O>423||!l)){h=Rs(c,A,0,y,x,R,S,U,H,v-H,h),U=D=S=0,H=v;for(var Z=0;Z<286;++Z)x[Z]=0;for(var Z=0;Z<30;++Z)R[Z]=0}var ie=2,ee=0,ce=g,te=N-Y&32767;if(O>2&&X==C(v-te))for(var W=Math.min(p,O)-1,se=Math.min(32767,v),de=Math.min(258,O);te<=se&&--ce&&N!=Y;){if(c[v+ie]==c[v+ie-te]){for(var me=0;me<de&&c[v+me]==c[v+me-te];++me);if(me>ie){if(ie=me,ee=te,me>W)break;for(var Ae=Math.min(te,me-2),Pe=0,Z=0;Z<Ae;++Z){var Oe=v-te+Z&32767,wt=I[Oe],Qt=Oe-wt&32767;Qt>Pe&&(Pe=Qt,Y=Oe)}}}N=Y,Y=I[N],te+=N-Y&32767}if(ee){y[U++]=268435456|Yn[ie]<<18|vs[ee];var lt=Yn[ie]&31,mt=vs[ee]&31;S+=dn[lt]+pn[mt],++x[257+lt],++R[mt],G=v+ie,++D}else y[U++]=c[v],++x[c[v]]}}for(v=Math.max(v,G);v<o;++v)y[U++]=c[v],++x[c[v]];h=Rs(c,A,l,y,x,R,S,U,H,v-H,h),l||(i.r=h&7|A[h/8|0]<<3,h-=7,i.h=b,i.p=I,i.i=v,i.w=G)}else{for(var v=i.w||0;v<o+l;v+=65535){var ot=v+65535;ot>=o&&(A[h/8|0]=l,ot=o),h=Ri(A,h+1,c.subarray(v,ot))}i.i=o}return ns(a,0,s+ts(h)+n)},oa=(function(){for(var c=new Int32Array(256),e=0;e<256;++e){for(var t=e,s=9;--s;)t=(t&1&&-306674912)^t>>>1;c[e]=t}return c})(),ra=function(){var c=-1;return{p:function(e){for(var t=c,s=0;s<e.length;++s)t=oa[t&255^e[s]]^t>>>8;c=t},d:function(){return~c}}},aa=function(c,e,t,s,n){if(!n&&(n={l:1},e.dictionary)){var i=e.dictionary.subarray(-32768),o=new Qe(i.length+c.length);o.set(i),o.set(c,i.length),c=o,n.w=i.length}return ia(c,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(c.length)))*1.5):20:12+e.mem,t,s,n)},_i=function(c,e){var t={};for(var s in c)t[s]=c[s];for(var s in e)t[s]=e[s];return t},Re=function(c,e,t){for(;t;++e)c[e]=t,t>>>=8},Aa=function(c,e){return((c[0]&15)!=8||c[0]>>4>7||(c[0]<<8|c[1])%31)&&Ne(6,"invalid zlib data"),(c[1]>>5&1)==1&&Ne(6,"invalid zlib data: "+(c[1]&32?"need":"unexpected")+" dictionary"),(c[1]>>3&4)+2};function ca(c,e){return aa(c,e||{},0,0)}function Vt(c,e){return na(c.subarray(Aa(c),-4),{i:2},e,e)}var Fi=function(c,e,t,s){for(var n in c){var i=c[n],o=e+n,a=s;Array.isArray(i)&&(a=_i(s,i[1]),i=i[0]),i instanceof Qe?t[o]=[i,a]:(t[o+="/"]=[new Qe(0),a],Fi(i,o,t,s))}},Ds=typeof TextEncoder<"u"&&new TextEncoder,la=typeof TextDecoder<"u"&&new TextDecoder,ha=0;try{la.decode(Di,{stream:!0}),ha=1}catch{}function Jn(c,e){var t;if(Ds)return Ds.encode(c);for(var s=c.length,n=new Qe(c.length+(c.length>>1)),i=0,o=function(l){n[i++]=l},t=0;t<s;++t){if(i+5>n.length){var a=new Qe(i+8+(s-t<<1));a.set(n),n=a}var A=c.charCodeAt(t);A<128||e?o(A):A<2048?(o(192|A>>6),o(128|A&63)):A>55295&&A<57344?(A=65536+(A&1047552)|c.charCodeAt(++t)&1023,o(240|A>>18),o(128|A>>12&63),o(128|A>>6&63),o(128|A&63)):(o(224|A>>12),o(128|A>>6&63),o(128|A&63))}return ns(n,0,i)}var Wn=function(c){var e=0;if(c)for(var t in c){var s=c[t].length;s>65535&&Ne(9),e+=s+4}return e},_s=function(c,e,t,s,n,i,o,a){var A=s.length,l=t.extra,h=a&&a.length,u=Wn(l);Re(c,e,o!=null?33639248:67324752),e+=4,o!=null&&(c[e++]=20,c[e++]=t.os),c[e]=20,e+=2,c[e++]=t.flag<<1|(i<0&&8),c[e++]=n&&8,c[e++]=t.compression&255,c[e++]=t.compression>>8;var p=new Date(t.mtime==null?Date.now():t.mtime),g=p.getFullYear()-1980;if((g<0||g>119)&&Ne(10),Re(c,e,g<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>1),e+=4,i!=-1&&(Re(c,e,t.crc),Re(c,e+4,i<0?-i-2:i),Re(c,e+8,t.size)),Re(c,e+12,A),Re(c,e+14,u),e+=16,o!=null&&(Re(c,e,h),Re(c,e+6,t.attrs),Re(c,e+10,o),e+=14),c.set(s,e),e+=A,u)for(var m in l){var I=l[m],b=I.length;Re(c,e,+m),Re(c,e+2,b),c.set(I,e+4),e+=4+b}return h&&(c.set(a,e),e+=h),e},ua=function(c,e,t,s,n){Re(c,e,101010256),Re(c,e+8,t),Re(c,e+10,t),Re(c,e+12,s),Re(c,e+16,n)};function da(c,e){e||(e={});var t={},s=[];Fi(c,"",t,e);var n=0,i=0;for(var o in t){var a=t[o],A=a[0],l=a[1],h=l.level==0?0:8,u=Jn(o),p=u.length,g=l.comment,m=g&&Jn(g),I=m&&m.length,b=Wn(l.extra);p>65535&&Ne(11);var B=h?ca(A,l):A,w=B.length,C=ra();C.p(A),s.push(_i(l,{size:A.length,crc:C.d(),c:B,f:u,m,u:p!=o.length||m&&g.length!=I,o:n,compression:h})),n+=30+p+b+w,i+=76+2*(p+b)+(I||0)+w}for(var y=new Qe(i+22),x=n,R=i-n,D=0;D<s.length;++D){var u=s[D];_s(y,u.o,u,u.f,u.u,u.c.length);var S=30+u.f.length+Wn(u.extra);y.set(u.c,u.o+S),_s(y,n,u,u.f,u.u,u.c.length,u.o,u.m),n+=16+S+(u.m?u.m.length:0)}return ua(y,n,s.length,R,x),y}class Li extends r.DataTextureLoader{constructor(e){super(e),this.type=r.HalfFloatType}parse(e){const v=Math.pow(2.7182818,2.2);function U(d,f){let E=0;for(let M=0;M<65536;++M)(M==0||d[M>>3]&1<<(M&7))&&(f[E++]=M);const Q=E-1;for(;E<65536;)f[E++]=0;return Q}function G(d){for(let f=0;f<16384;f++)d[f]={},d[f].len=0,d[f].lit=0,d[f].p=null}const H={l:0,c:0,lc:0};function X(d,f,E,Q,M){for(;E<d;)f=f<<8|As(Q,M),E+=8;E-=d,H.l=f>>E&(1<<d)-1,H.c=f,H.lc=E}const N=new Array(59);function Y(d){for(let E=0;E<=58;++E)N[E]=0;for(let E=0;E<65537;++E)N[d[E]]+=1;let f=0;for(let E=58;E>0;--E){const Q=f+N[E]>>1;N[E]=f,f=Q}for(let E=0;E<65537;++E){const Q=d[E];Q>0&&(d[E]=Q|N[Q]++<<6)}}function O(d,f,E,Q,M,T){const L=f;let P=0,k=0;for(;Q<=M;Q++){if(L.value-f.value>E)return!1;X(6,P,k,d,L);const F=H.l;if(P=H.c,k=H.lc,T[Q]=F,F==63){if(L.value-f.value>E)throw new Error("Something wrong with hufUnpackEncTable");X(8,P,k,d,L);let _=H.l+6;if(P=H.c,k=H.lc,Q+_>M+1)throw new Error("Something wrong with hufUnpackEncTable");for(;_--;)T[Q++]=0;Q--}else if(F>=59){let _=F-59+2;if(Q+_>M+1)throw new Error("Something wrong with hufUnpackEncTable");for(;_--;)T[Q++]=0;Q--}}Y(T)}function Z(d){return d&63}function ie(d){return d>>6}function ee(d,f,E,Q){for(;f<=E;f++){const M=ie(d[f]),T=Z(d[f]);if(M>>T)throw new Error("Invalid table entry");if(T>14){const L=Q[M>>T-14];if(L.len)throw new Error("Invalid table entry");if(L.lit++,L.p){const P=L.p;L.p=new Array(L.lit);for(let k=0;k<L.lit-1;++k)L.p[k]=P[k]}else L.p=new Array(1);L.p[L.lit-1]=f}else if(T){let L=0;for(let P=1<<14-T;P>0;P--){const k=Q[(M<<14-T)+L];if(k.len||k.p)throw new Error("Invalid table entry");k.len=T,k.lit=f,L++}}}return!0}const ce={c:0,lc:0};function te(d,f,E,Q){d=d<<8|As(E,Q),f+=8,ce.c=d,ce.lc=f}const W={c:0,lc:0};function se(d,f,E,Q,M,T,L,P,k){if(d==f){Q<8&&(te(E,Q,M,T),E=ce.c,Q=ce.lc),Q-=8;let F=E>>Q;if(F=new Uint8Array([F])[0],P.value+F>k)return!1;const _=L[P.value-1];for(;F-- >0;)L[P.value++]=_}else if(P.value<k)L[P.value++]=d;else return!1;W.c=E,W.lc=Q}function de(d){return d&65535}function me(d){const f=de(d);return f>32767?f-65536:f}const Ae={a:0,b:0};function Pe(d,f){const E=me(d),M=me(f),T=E+(M&1)+(M>>1),L=T,P=T-M;Ae.a=L,Ae.b=P}function Oe(d,f){const E=de(d),Q=de(f),M=E-(Q>>1)&65535,T=Q+M-32768&65535;Ae.a=T,Ae.b=M}function wt(d,f,E,Q,M,T,L){const P=L<16384,k=E>M?M:E;let F=1,_,j;for(;F<=k;)F<<=1;for(F>>=1,_=F,F>>=1;F>=1;){j=0;const K=j+T*(M-_),q=T*F,$=T*_,z=Q*F,J=Q*_;let ne,pe,Be,je;for(;j<=K;j+=$){let Ie=j;const le=j+Q*(E-_);for(;Ie<=le;Ie+=J){const xe=Ie+z,Ke=Ie+q,Te=Ke+z;P?(Pe(d[Ie+f],d[Ke+f]),ne=Ae.a,Be=Ae.b,Pe(d[xe+f],d[Te+f]),pe=Ae.a,je=Ae.b,Pe(ne,pe),d[Ie+f]=Ae.a,d[xe+f]=Ae.b,Pe(Be,je),d[Ke+f]=Ae.a,d[Te+f]=Ae.b):(Oe(d[Ie+f],d[Ke+f]),ne=Ae.a,Be=Ae.b,Oe(d[xe+f],d[Te+f]),pe=Ae.a,je=Ae.b,Oe(ne,pe),d[Ie+f]=Ae.a,d[xe+f]=Ae.b,Oe(Be,je),d[Ke+f]=Ae.a,d[Te+f]=Ae.b)}if(E&F){const xe=Ie+q;P?Pe(d[Ie+f],d[xe+f]):Oe(d[Ie+f],d[xe+f]),ne=Ae.a,d[xe+f]=Ae.b,d[Ie+f]=ne}}if(M&F){let Ie=j;const le=j+Q*(E-_);for(;Ie<=le;Ie+=J){const xe=Ie+z;P?Pe(d[Ie+f],d[xe+f]):Oe(d[Ie+f],d[xe+f]),ne=Ae.a,d[xe+f]=Ae.b,d[Ie+f]=ne}}_=F,F>>=1}return j}function Qt(d,f,E,Q,M,T,L,P,k){let F=0,_=0;const j=L,K=Math.trunc(Q.value+(M+7)/8);for(;Q.value<K;)for(te(F,_,E,Q),F=ce.c,_=ce.lc;_>=14;){const $=F>>_-14&16383,z=f[$];if(z.len)_-=z.len,se(z.lit,T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;else{if(!z.p)throw new Error("hufDecode issues");let J;for(J=0;J<z.lit;J++){const ne=Z(d[z.p[J]]);for(;_<ne&&Q.value<K;)te(F,_,E,Q),F=ce.c,_=ce.lc;if(_>=ne&&ie(d[z.p[J]])==(F>>_-ne&(1<<ne)-1)){_-=ne,se(z.p[J],T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;break}}if(J==z.lit)throw new Error("hufDecode issues")}}const q=8-M&7;for(F>>=q,_-=q;_>0;){const $=f[F<<14-_&16383];if($.len)_-=$.len,se($.lit,T,F,_,E,Q,P,k,j),F=W.c,_=W.lc;else throw new Error("hufDecode issues")}return!0}function lt(d,f,E,Q,M,T){const L={value:0},P=E.value,k=Ve(f,E),F=Ve(f,E);E.value+=4;const _=Ve(f,E);if(E.value+=4,k<0||k>=65537||F<0||F>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const j=new Array(65537),K=new Array(16384);G(K);const q=Q-(E.value-P);if(O(d,E,q,k,F,j),_>8*(Q-(E.value-P)))throw new Error("Something wrong with hufUncompress");ee(j,k,F,K),Qt(j,K,d,E,_,F,T,M,L)}function mt(d,f,E){for(let Q=0;Q<E;++Q)f[Q]=d[f[Q]]}function ot(d){for(let f=1;f<d.length;f++){const E=d[f-1]+d[f]-128;d[f]=E}}function xt(d,f){let E=0,Q=Math.floor((d.length+1)/2),M=0;const T=d.length-1;for(;!(M>T||(f[M++]=d[E++],M>T));)f[M++]=d[Q++]}function rs(d){let f=d.byteLength;const E=new Array;let Q=0;const M=new DataView(d);for(;f>0;){const T=M.getInt8(Q++);if(T<0){const L=-T;f-=L+1;for(let P=0;P<L;P++)E.push(M.getUint8(Q++))}else{const L=T;f-=2;const P=M.getUint8(Q++);for(let k=0;k<L+1;k++)E.push(P)}}return E}function Yi(d,f,E,Q,M,T){let L=new DataView(T.buffer);const P=E[d.idx[0]].width,k=E[d.idx[0]].height,F=3,_=Math.floor(P/8),j=Math.ceil(P/8),K=Math.ceil(k/8),q=P-(j-1)*8,$=k-(K-1)*8,z={value:0},J=new Array(F),ne=new Array(F),pe=new Array(F),Be=new Array(F),je=new Array(F);for(let le=0;le<F;++le)je[le]=f[d.idx[le]],J[le]=le<1?0:J[le-1]+j*K,ne[le]=new Float32Array(64),pe[le]=new Uint16Array(64),Be[le]=new Uint16Array(j*64);for(let le=0;le<K;++le){let xe=8;le==K-1&&(xe=$);let Ke=8;for(let ue=0;ue<j;++ue){ue==j-1&&(Ke=q);for(let fe=0;fe<F;++fe)pe[fe].fill(0),pe[fe][0]=M[J[fe]++],Vi(z,Q,pe[fe]),Ki(pe[fe],ne[fe]),Ji(ne[fe]);Wi(ne);for(let fe=0;fe<F;++fe)Xi(ne[fe],Be[fe],ue*64)}let Te=0;for(let ue=0;ue<F;++ue){const fe=E[d.idx[ue]].type;for(let rt=8*le;rt<8*le+xe;++rt){Te=je[ue][rt];for(let _t=0;_t<_;++_t){const $e=_t*64+(rt&7)*8;L.setUint16(Te+0*fe,Be[ue][$e+0],!0),L.setUint16(Te+2*fe,Be[ue][$e+1],!0),L.setUint16(Te+4*fe,Be[ue][$e+2],!0),L.setUint16(Te+6*fe,Be[ue][$e+3],!0),L.setUint16(Te+8*fe,Be[ue][$e+4],!0),L.setUint16(Te+10*fe,Be[ue][$e+5],!0),L.setUint16(Te+12*fe,Be[ue][$e+6],!0),L.setUint16(Te+14*fe,Be[ue][$e+7],!0),Te+=16*fe}}if(_!=j)for(let rt=8*le;rt<8*le+xe;++rt){const _t=je[ue][rt]+8*_*2*fe,$e=_*64+(rt&7)*8;for(let $t=0;$t<Ke;++$t)L.setUint16(_t+$t*2*fe,Be[ue][$e+$t],!0)}}}const Ie=new Uint16Array(P);L=new DataView(T.buffer);for(let le=0;le<F;++le){E[d.idx[le]].decoded=!0;const xe=E[d.idx[le]].type;if(E[le].type==2)for(let Ke=0;Ke<k;++Ke){const Te=je[le][Ke];for(let ue=0;ue<P;++ue)Ie[ue]=L.getUint16(Te+ue*2*xe,!0);for(let ue=0;ue<P;++ue)L.setFloat32(Te+ue*2*xe,V(Ie[ue]),!0)}}}function Vi(d,f,E){let Q,M=1;for(;M<64;)Q=f[d.value],Q==65280?M=64:Q>>8==255?M+=Q&255:(E[M]=Q,M++),d.value++}function Ki(d,f){f[0]=V(d[0]),f[1]=V(d[1]),f[2]=V(d[5]),f[3]=V(d[6]),f[4]=V(d[14]),f[5]=V(d[15]),f[6]=V(d[27]),f[7]=V(d[28]),f[8]=V(d[2]),f[9]=V(d[4]),f[10]=V(d[7]),f[11]=V(d[13]),f[12]=V(d[16]),f[13]=V(d[26]),f[14]=V(d[29]),f[15]=V(d[42]),f[16]=V(d[3]),f[17]=V(d[8]),f[18]=V(d[12]),f[19]=V(d[17]),f[20]=V(d[25]),f[21]=V(d[30]),f[22]=V(d[41]),f[23]=V(d[43]),f[24]=V(d[9]),f[25]=V(d[11]),f[26]=V(d[18]),f[27]=V(d[24]),f[28]=V(d[31]),f[29]=V(d[40]),f[30]=V(d[44]),f[31]=V(d[53]),f[32]=V(d[10]),f[33]=V(d[19]),f[34]=V(d[23]),f[35]=V(d[32]),f[36]=V(d[39]),f[37]=V(d[45]),f[38]=V(d[52]),f[39]=V(d[54]),f[40]=V(d[20]),f[41]=V(d[22]),f[42]=V(d[33]),f[43]=V(d[38]),f[44]=V(d[46]),f[45]=V(d[51]),f[46]=V(d[55]),f[47]=V(d[60]),f[48]=V(d[21]),f[49]=V(d[34]),f[50]=V(d[37]),f[51]=V(d[47]),f[52]=V(d[50]),f[53]=V(d[56]),f[54]=V(d[59]),f[55]=V(d[61]),f[56]=V(d[35]),f[57]=V(d[36]),f[58]=V(d[48]),f[59]=V(d[49]),f[60]=V(d[57]),f[61]=V(d[58]),f[62]=V(d[62]),f[63]=V(d[63])}function Ji(d){const f=.5*Math.cos(.7853975),E=.5*Math.cos(3.14159/16),Q=.5*Math.cos(3.14159/8),M=.5*Math.cos(3*3.14159/16),T=.5*Math.cos(5*3.14159/16),L=.5*Math.cos(3*3.14159/8),P=.5*Math.cos(7*3.14159/16),k=new Array(4),F=new Array(4),_=new Array(4),j=new Array(4);for(let K=0;K<8;++K){const q=K*8;k[0]=Q*d[q+2],k[1]=L*d[q+2],k[2]=Q*d[q+6],k[3]=L*d[q+6],F[0]=E*d[q+1]+M*d[q+3]+T*d[q+5]+P*d[q+7],F[1]=M*d[q+1]-P*d[q+3]-E*d[q+5]-T*d[q+7],F[2]=T*d[q+1]-E*d[q+3]+P*d[q+5]+M*d[q+7],F[3]=P*d[q+1]-T*d[q+3]+M*d[q+5]-E*d[q+7],_[0]=f*(d[q+0]+d[q+4]),_[3]=f*(d[q+0]-d[q+4]),_[1]=k[0]+k[3],_[2]=k[1]-k[2],j[0]=_[0]+_[1],j[1]=_[3]+_[2],j[2]=_[3]-_[2],j[3]=_[0]-_[1],d[q+0]=j[0]+F[0],d[q+1]=j[1]+F[1],d[q+2]=j[2]+F[2],d[q+3]=j[3]+F[3],d[q+4]=j[3]-F[3],d[q+5]=j[2]-F[2],d[q+6]=j[1]-F[1],d[q+7]=j[0]-F[0]}for(let K=0;K<8;++K)k[0]=Q*d[16+K],k[1]=L*d[16+K],k[2]=Q*d[48+K],k[3]=L*d[48+K],F[0]=E*d[8+K]+M*d[24+K]+T*d[40+K]+P*d[56+K],F[1]=M*d[8+K]-P*d[24+K]-E*d[40+K]-T*d[56+K],F[2]=T*d[8+K]-E*d[24+K]+P*d[40+K]+M*d[56+K],F[3]=P*d[8+K]-T*d[24+K]+M*d[40+K]-E*d[56+K],_[0]=f*(d[K]+d[32+K]),_[3]=f*(d[K]-d[32+K]),_[1]=k[0]+k[3],_[2]=k[1]-k[2],j[0]=_[0]+_[1],j[1]=_[3]+_[2],j[2]=_[3]-_[2],j[3]=_[0]-_[1],d[0+K]=j[0]+F[0],d[8+K]=j[1]+F[1],d[16+K]=j[2]+F[2],d[24+K]=j[3]+F[3],d[32+K]=j[3]-F[3],d[40+K]=j[2]-F[2],d[48+K]=j[1]-F[1],d[56+K]=j[0]-F[0]}function Wi(d){for(let f=0;f<64;++f){const E=d[0][f],Q=d[1][f],M=d[2][f];d[0][f]=E+1.5747*M,d[1][f]=E-.1873*Q-.4682*M,d[2][f]=E+1.8556*Q}}function Xi(d,f,E){for(let Q=0;Q<64;++Q)f[E+Q]=r.DataUtils.toHalfFloat(Zi(d[Q]))}function Zi(d){return d<=1?Math.sign(d)*Math.pow(Math.abs(d),2.2):Math.sign(d)*Math.pow(v,Math.abs(d)-1)}function gn(d){return new DataView(d.array.buffer,d.offset.value,d.size)}function $i(d){const f=d.viewer.buffer.slice(d.offset.value,d.offset.value+d.size),E=new Uint8Array(rs(f)),Q=new Uint8Array(E.length);return ot(E),xt(E,Q),new DataView(Q.buffer)}function fn(d){const f=d.array.slice(d.offset.value,d.offset.value+d.size),E=Vt(f),Q=new Uint8Array(E.length);return ot(E),xt(E,Q),new DataView(Q.buffer)}function eo(d){const f=d.viewer,E={value:d.offset.value},Q=new Uint16Array(d.columns*d.lines*(d.inputChannels.length*d.type)),M=new Uint8Array(8192);let T=0;const L=new Array(d.inputChannels.length);for(let $=0,z=d.inputChannels.length;$<z;$++)L[$]={},L[$].start=T,L[$].end=L[$].start,L[$].nx=d.columns,L[$].ny=d.lines,L[$].size=d.type,T+=L[$].nx*L[$].ny*L[$].size;const P=Dt(f,E),k=Dt(f,E);if(k>=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(P<=k)for(let $=0;$<k-P+1;$++)M[$+P]=ht(f,E);const F=new Uint16Array(65536),_=U(M,F),j=Ve(f,E);lt(d.array,f,E,j,Q,T);for(let $=0;$<d.inputChannels.length;++$){const z=L[$];for(let J=0;J<L[$].size;++J)wt(Q,z.start+J,z.nx,z.size,z.ny,z.nx*z.size,_)}mt(F,Q,T);let K=0;const q=new Uint8Array(Q.buffer.byteLength);for(let $=0;$<d.lines;$++)for(let z=0;z<d.inputChannels.length;z++){const J=L[z],ne=J.nx*J.size,pe=new Uint8Array(Q.buffer,J.end*2,ne*2);q.set(pe,K),K+=ne*2,J.end+=ne}return new DataView(q.buffer)}function to(d){const f=d.array.slice(d.offset.value,d.offset.value+d.size),E=Vt(f),Q=d.inputChannels.length*d.lines*d.columns*d.totalBytes,M=new ArrayBuffer(Q),T=new DataView(M);let L=0,P=0;const k=new Array(4);for(let F=0;F<d.lines;F++)for(let _=0;_<d.inputChannels.length;_++){let j=0;switch(d.inputChannels[_].pixelType){case 1:k[0]=L,k[1]=k[0]+d.columns,L=k[1]+d.columns;for(let q=0;q<d.columns;++q){const $=E[k[0]++]<<8|E[k[1]++];j+=$,T.setUint16(P,j,!0),P+=2}break;case 2:k[0]=L,k[1]=k[0]+d.columns,k[2]=k[1]+d.columns,L=k[2]+d.columns;for(let q=0;q<d.columns;++q){const $=E[k[0]++]<<24|E[k[1]++]<<16|E[k[2]++]<<8;j+=$,T.setUint32(P,j,!0),P+=4}break}}return T}function as(d){const f=d.viewer,E={value:d.offset.value},Q=new Uint8Array(d.columns*d.lines*(d.inputChannels.length*d.type*2)),M={version:He(f,E),unknownUncompressedSize:He(f,E),unknownCompressedSize:He(f,E),acCompressedSize:He(f,E),dcCompressedSize:He(f,E),rleCompressedSize:He(f,E),rleUncompressedSize:He(f,E),rleRawSize:He(f,E),totalAcUncompressedCount:He(f,E),totalDcUncompressedCount:He(f,E),acCompression:He(f,E)};if(M.version<2)throw new Error("EXRLoader.parse: "+It.compression+" version "+M.version+" is unsupported");const T=new Array;let L=Dt(f,E)-2;for(;L>0;){const z=Zt(f.buffer,E),J=ht(f,E),ne=J>>2&3,pe=(J>>4)-1,Be=new Int8Array([pe])[0],je=ht(f,E);T.push({name:z,index:Be,type:je,compression:ne}),L-=z.length+3}const P=It.channels,k=new Array(d.inputChannels.length);for(let z=0;z<d.inputChannels.length;++z){const J=k[z]={},ne=P[z];J.name=ne.name,J.compression=0,J.decoded=!1,J.type=ne.pixelType,J.pLinear=ne.pLinear,J.width=d.columns,J.height=d.lines}const F={idx:new Array(3)};for(let z=0;z<d.inputChannels.length;++z){const J=k[z];for(let ne=0;ne<T.length;++ne){const pe=T[ne];J.name==pe.name&&(J.compression=pe.compression,pe.index>=0&&(F.idx[pe.index]=z),J.offset=z)}}let _,j,K;if(M.acCompressedSize>0)switch(M.acCompression){case 0:_=new Uint16Array(M.totalAcUncompressedCount),lt(d.array,f,E,M.acCompressedSize,_,M.totalAcUncompressedCount);break;case 1:const z=d.array.slice(E.value,E.value+M.totalAcUncompressedCount),J=Vt(z);_=new Uint16Array(J.buffer),E.value+=M.totalAcUncompressedCount;break}if(M.dcCompressedSize>0){const z={array:d.array,offset:E,size:M.dcCompressedSize};j=new Uint16Array(fn(z).buffer),E.value+=M.dcCompressedSize}if(M.rleRawSize>0){const z=d.array.slice(E.value,E.value+M.rleCompressedSize),J=Vt(z);K=rs(J.buffer),E.value+=M.rleCompressedSize}let q=0;const $=new Array(k.length);for(let z=0;z<$.length;++z)$[z]=new Array;for(let z=0;z<d.lines;++z)for(let J=0;J<k.length;++J)$[J].push(q),q+=k[J].width*d.type*2;Yi(F,$,k,_,j,Q);for(let z=0;z<k.length;++z){const J=k[z];if(!J.decoded)switch(J.compression){case 2:let ne=0,pe=0;for(let Be=0;Be<d.lines;++Be){let je=$[z][ne];for(let Ie=0;Ie<J.width;++Ie){for(let le=0;le<2*J.type;++le)Q[je++]=K[pe+le*J.width*J.height];pe++}ne++}break;case 1:default:throw new Error("EXRLoader.parse: unsupported channel compression")}}return new DataView(Q.buffer)}function Zt(d,f){const E=new Uint8Array(d);let Q=0;for(;E[f.value+Q]!=0;)Q+=1;const M=new TextDecoder().decode(E.slice(f.value,f.value+Q));return f.value=f.value+Q+1,M}function no(d,f,E){const Q=new TextDecoder().decode(new Uint8Array(d).slice(f.value,f.value+E));return f.value=f.value+E,Q}function so(d,f){const E=Ye(d,f),Q=Ve(d,f);return[E,Q]}function io(d,f){const E=Ve(d,f),Q=Ve(d,f);return[E,Q]}function Ye(d,f){const E=d.getInt32(f.value,!0);return f.value=f.value+4,E}function Ve(d,f){const E=d.getUint32(f.value,!0);return f.value=f.value+4,E}function As(d,f){const E=d[f.value];return f.value=f.value+1,E}function ht(d,f){const E=d.getUint8(f.value);return f.value=f.value+1,E}const He=function(d,f){let E;return"getBigInt64"in DataView.prototype?E=Number(d.getBigInt64(f.value,!0)):E=d.getUint32(f.value+4,!0)+Number(d.getUint32(f.value,!0)<<32),f.value+=8,E};function _e(d,f){const E=d.getFloat32(f.value,!0);return f.value+=4,E}function oo(d,f){return r.DataUtils.toHalfFloat(_e(d,f))}function V(d){const f=(d&31744)>>10,E=d&1023;return(d>>15?-1:1)*(f?f===31?E?NaN:1/0:Math.pow(2,f-15)*(1+E/1024):6103515625e-14*(E/1024))}function Dt(d,f){const E=d.getUint16(f.value,!0);return f.value+=2,E}function ro(d,f){return V(Dt(d,f))}function ao(d,f,E,Q){const M=E.value,T=[];for(;E.value<M+Q-1;){const L=Zt(f,E),P=Ye(d,E),k=ht(d,E);E.value+=3;const F=Ye(d,E),_=Ye(d,E);T.push({name:L,pixelType:P,pLinear:k,xSampling:F,ySampling:_})}return E.value+=1,T}function Ao(d,f){const E=_e(d,f),Q=_e(d,f),M=_e(d,f),T=_e(d,f),L=_e(d,f),P=_e(d,f),k=_e(d,f),F=_e(d,f);return{redX:E,redY:Q,greenX:M,greenY:T,blueX:L,blueY:P,whiteX:k,whiteY:F}}function co(d,f){const E=["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"],Q=ht(d,f);return E[Q]}function lo(d,f){const E=Ye(d,f),Q=Ye(d,f),M=Ye(d,f),T=Ye(d,f);return{xMin:E,yMin:Q,xMax:M,yMax:T}}function ho(d,f){const E=["INCREASING_Y","DECREASING_Y","RANDOM_Y"],Q=ht(d,f);return E[Q]}function uo(d,f){const E=["ENVMAP_LATLONG","ENVMAP_CUBE"],Q=ht(d,f);return E[Q]}function po(d,f){const E=["ONE_LEVEL","MIPMAP_LEVELS","RIPMAP_LEVELS"],Q=["ROUND_DOWN","ROUND_UP"],M=Ve(d,f),T=Ve(d,f),L=ht(d,f);return{xSize:M,ySize:T,levelMode:E[L&15],roundingMode:Q[L>>4]}}function go(d,f){const E=_e(d,f),Q=_e(d,f);return[E,Q]}function fo(d,f){const E=_e(d,f),Q=_e(d,f),M=_e(d,f);return[E,Q,M]}function mo(d,f,E,Q,M){if(Q==="string"||Q==="stringvector"||Q==="iccProfile")return no(f,E,M);if(Q==="chlist")return ao(d,f,E,M);if(Q==="chromaticities")return Ao(d,E);if(Q==="compression")return co(d,E);if(Q==="box2i")return lo(d,E);if(Q==="envmap")return uo(d,E);if(Q==="tiledesc")return po(d,E);if(Q==="lineOrder")return ho(d,E);if(Q==="float")return _e(d,E);if(Q==="v2f")return go(d,E);if(Q==="v3f")return fo(d,E);if(Q==="int")return Ye(d,E);if(Q==="rational")return so(d,E);if(Q==="timecode")return io(d,E);if(Q==="preview")return E.value+=M,"skipped";E.value+=M}function Io(d,f){const E=Math.log2(d);return f=="ROUND_DOWN"?Math.floor(E):Math.ceil(E)}function bo(d,f,E){let Q=0;switch(d.levelMode){case"ONE_LEVEL":Q=1;break;case"MIPMAP_LEVELS":Q=Io(Math.max(f,E),d.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return Q}function cs(d,f,E,Q){const M=new Array(d);for(let T=0;T<d;T++){const L=1<<T;let P=f/L|0;Q=="ROUND_UP"&&P*L<f&&(P+=1);const k=Math.max(P,1);M[T]=(k+E-1)/E|0}return M}function Eo(){const d=this,f=d.offset,E={value:0};for(let Q=0;Q<d.tileCount;Q++){const M=Ye(d.viewer,f),T=Ye(d.viewer,f);f.value+=8,d.size=Ve(d.viewer,f);const L=M*d.blockWidth,P=T*d.blockHeight;d.columns=L+d.blockWidth>d.width?d.width-L:d.blockWidth,d.lines=P+d.blockHeight>d.height?d.height-P:d.blockHeight;const k=d.columns*d.totalBytes,_=d.size<d.lines*k?d.uncompress(d):gn(d);f.value+=d.size;for(let j=0;j<d.lines;j++){const K=j*d.columns*d.totalBytes;for(let q=0;q<d.inputChannels.length;q++){const $=It.channels[q].name,z=d.channelByteOffsets[$]*d.columns,J=d.decodeChannels[$];if(J===void 0)continue;E.value=K+z;const ne=(d.height-(1+P+j))*d.outLineWidth;for(let pe=0;pe<d.columns;pe++){const Be=ne+(pe+L)*d.outputChannels+J;d.byteArray[Be]=d.getter(_,E)}}}}}function Co(){const d=this,f=d.offset,E={value:0};for(let Q=0;Q<d.height/d.blockHeight;Q++){const M=Ye(d.viewer,f)-It.dataWindow.yMin;d.size=Ve(d.viewer,f),d.lines=M+d.blockHeight>d.height?d.height-M:d.blockHeight;const T=d.columns*d.totalBytes,P=d.size<d.lines*T?d.uncompress(d):gn(d);f.value+=d.size;for(let k=0;k<d.blockHeight;k++){const F=Q*d.blockHeight,_=k+d.scanOrder(F);if(_>=d.height)continue;const j=k*T,K=(d.height-1-_)*d.outLineWidth;for(let q=0;q<d.inputChannels.length;q++){const $=It.channels[q].name,z=d.channelByteOffsets[$]*d.columns,J=d.decodeChannels[$];if(J!==void 0){E.value=j+z;for(let ne=0;ne<d.columns;ne++){const pe=K+ne*d.outputChannels+J;d.byteArray[pe]=d.getter(P,E)}}}}}}function Bo(d,f,E){const Q={};if(d.getUint32(0,!0)!=20000630)throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format.");Q.version=d.getUint8(4);const M=d.getUint8(5);Q.spec={singleTile:!!(M&2),longName:!!(M&4),deepFormat:!!(M&8),multiPart:!!(M&16)},E.value=8;let T=!0;for(;T;){const L=Zt(f,E);if(L==0)T=!1;else{const P=Zt(f,E),k=Ve(d,E),F=mo(d,f,E,P,k);F===void 0?console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${P}'.`):Q[L]=F}}if((M&-7)!=0)throw console.error("THREE.EXRHeader:",Q),new Error("THREE.EXRLoader: Provided file is currently unsupported.");return Q}function yo(d,f,E,Q,M){const T={size:0,viewer:f,array:E,offset:Q,width:d.dataWindow.xMax-d.dataWindow.xMin+1,height:d.dataWindow.yMax-d.dataWindow.yMin+1,inputChannels:d.channels,channelByteOffsets:{},scanOrder:null,totalBytes:null,columns:null,lines:null,type:null,uncompress:null,getter:null,format:null,colorSpace:r.LinearSRGBColorSpace};switch(d.compression){case"NO_COMPRESSION":T.blockHeight=1,T.uncompress=gn;break;case"RLE_COMPRESSION":T.blockHeight=1,T.uncompress=$i;break;case"ZIPS_COMPRESSION":T.blockHeight=1,T.uncompress=fn;break;case"ZIP_COMPRESSION":T.blockHeight=16,T.uncompress=fn;break;case"PIZ_COMPRESSION":T.blockHeight=32,T.uncompress=eo;break;case"PXR24_COMPRESSION":T.blockHeight=16,T.uncompress=to;break;case"DWAA_COMPRESSION":T.blockHeight=32,T.uncompress=as;break;case"DWAB_COMPRESSION":T.blockHeight=256,T.uncompress=as;break;default:throw new Error("EXRLoader.parse: "+d.compression+" is unsupported")}const L={};for(const _ of d.channels)switch(_.name){case"Y":case"R":case"G":case"B":case"A":L[_.name]=!0,T.type=_.pixelType}let P=!1;if(L.R&&L.G&&L.B)P=!L.A,T.outputChannels=4,T.decodeChannels={R:0,G:1,B:2,A:3};else if(L.Y)T.outputChannels=1,T.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(T.type==1)switch(M){case r.FloatType:T.getter=ro;break;case r.HalfFloatType:T.getter=Dt;break}else if(T.type==2)switch(M){case r.FloatType:T.getter=_e;break;case r.HalfFloatType:T.getter=oo}else throw new Error("EXRLoader.parse: unsupported pixelType "+T.type+" for "+d.compression+".");T.columns=T.width;const k=T.width*T.height*T.outputChannels;switch(M){case r.FloatType:T.byteArray=new Float32Array(k),P&&T.byteArray.fill(1,0,k);break;case r.HalfFloatType:T.byteArray=new Uint16Array(k),P&&T.byteArray.fill(15360,0,k);break;default:console.error("THREE.EXRLoader: unsupported type: ",M);break}let F=0;for(const _ of d.channels)T.decodeChannels[_.name]!==void 0&&(T.channelByteOffsets[_.name]=F),F+=_.pixelType*2;if(T.totalBytes=F,T.outLineWidth=T.width*T.outputChannels,d.lineOrder==="INCREASING_Y"?T.scanOrder=_=>_:T.scanOrder=_=>T.height-1-_,T.outputChannels==4?(T.format=r.RGBAFormat,T.colorSpace=r.LinearSRGBColorSpace):(T.format=r.RedFormat,T.colorSpace=r.NoColorSpace),d.spec.singleTile){T.blockHeight=d.tiles.ySize,T.blockWidth=d.tiles.xSize;const _=bo(d.tiles,T.width,T.height),j=cs(_,T.width,d.tiles.xSize,d.tiles.roundingMode),K=cs(_,T.height,d.tiles.ySize,d.tiles.roundingMode);T.tileCount=j[0]*K[0];for(let q=0;q<_;q++)for(let $=0;$<K[q];$++)for(let z=0;z<j[q];z++)He(f,Q);T.decode=Eo.bind(T)}else{T.blockWidth=T.width;const _=Math.ceil(T.height/T.blockHeight);for(let j=0;j<_;j++)He(f,Q);T.decode=Co.bind(T)}return T}const ls={value:0},hs=new DataView(e),wo=new Uint8Array(e),It=Bo(hs,e,ls),St=yo(It,hs,wo,ls,this.type);return St.decode(),{header:It,width:St.width,height:St.height,data:St.byteArray,format:St.format,colorSpace:St.colorSpace,type:this.type}}setDataType(e){return this.type=e,this}load(e,t,s,n){function i(o,a){o.colorSpace=a.colorSpace,o.minFilter=r.LinearFilter,o.magFilter=r.LinearFilter,o.generateMipmaps=!1,o.flipY=!1,t&&t(o,a)}return super.load(e,i,s,n)}}const pa=Object.freeze(Object.defineProperty({__proto__:null,EXRLoader:Li},Symbol.toStringTag,{value:"Module"}));class ki extends r.DataTextureLoader{constructor(e){super(e),this.type=r.HalfFloatType}parse(e){const o=function(S,v){switch(S){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(v||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(v||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(v||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(v||""))}},u=function(S,v,U){v=v||1024;let H=S.pos,X=-1,N=0,Y="",O=String.fromCharCode.apply(null,new Uint16Array(S.subarray(H,H+128)));for(;0>(X=O.indexOf(`
42
37
  `))&&N<v&&H<S.byteLength;)Y+=O,N+=O.length,H+=128,O+=String.fromCharCode.apply(null,new Uint16Array(S.subarray(H,H+128)));return-1<X?(S.pos+=N+X+1,Y+O.slice(0,X)):!1},p=function(S){const v=/^#\?(\S+)/,U=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,G=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,H=/^\s*FORMAT=(\S+)\s*$/,X=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,N={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let Y,O;for((S.pos>=S.byteLength||!(Y=u(S)))&&o(1,"no header found"),(O=Y.match(v))||o(3,"bad initial token"),N.valid|=1,N.programtype=O[1],N.string+=Y+`
43
38
  `;Y=u(S),Y!==!1;){if(N.string+=Y+`
44
39
  `,Y.charAt(0)==="#"){N.comments+=Y+`