@zephyr3d/scene 0.9.26 → 0.10.0

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 (506) hide show
  1. package/README.md +60 -27
  2. package/dist/animation/animation_bank.js +634 -0
  3. package/dist/animation/animation_bank.js.map +1 -0
  4. package/dist/animation/animation_bank_gpu.js +256 -0
  5. package/dist/animation/animation_bank_gpu.js.map +1 -0
  6. package/dist/animation/animationset.js +146 -30
  7. package/dist/animation/animationset.js.map +1 -1
  8. package/dist/animation/cloth/gpu_cloth_component.js +406 -0
  9. package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
  10. package/dist/animation/cloth/gpu_cloth_system.js +332 -202
  11. package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
  12. package/dist/animation/gpu_animation_driver.js +289 -0
  13. package/dist/animation/gpu_animation_driver.js.map +1 -0
  14. package/dist/animation/joint_dynamics/collision.js +112 -1
  15. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  16. package/dist/animation/joint_dynamics/controller.js +6 -0
  17. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  18. package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
  19. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  20. package/dist/animation/joint_dynamics/solver.js +50 -12
  21. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  22. package/dist/animation/joint_dynamics/types.js.map +1 -1
  23. package/dist/animation/skeleton.js +300 -56
  24. package/dist/animation/skeleton.js.map +1 -1
  25. package/dist/animation/skin_palette_atlas.js +252 -0
  26. package/dist/animation/skin_palette_atlas.js.map +1 -0
  27. package/dist/animation/spring/multi_chain_spring_system.js +298 -38
  28. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
  29. package/dist/animation/spring/spring_chain.js +2 -0
  30. package/dist/animation/spring/spring_chain.js.map +1 -1
  31. package/dist/animation/spring/spring_collider.js +159 -21
  32. package/dist/animation/spring/spring_collider.js.map +1 -1
  33. package/dist/animation/spring/spring_particle.js +1 -0
  34. package/dist/animation/spring/spring_particle.js.map +1 -1
  35. package/dist/animation/spring/spring_solver.js +173 -0
  36. package/dist/animation/spring/spring_solver.js.map +1 -0
  37. package/dist/animation/spring/spring_system.js +249 -24
  38. package/dist/animation/spring/spring_system.js.map +1 -1
  39. package/dist/animation/spring_modifier.js +32 -1
  40. package/dist/animation/spring_modifier.js.map +1 -1
  41. package/dist/app/app.js +26 -0
  42. package/dist/app/app.js.map +1 -1
  43. package/dist/app/engine.js +86 -15
  44. package/dist/app/engine.js.map +1 -1
  45. package/dist/app/gamepad.js +191 -0
  46. package/dist/app/gamepad.js.map +1 -0
  47. package/dist/app/inputactions.js +271 -0
  48. package/dist/app/inputactions.js.map +1 -0
  49. package/dist/app/inputmgr.js +331 -22
  50. package/dist/app/inputmgr.js.map +1 -1
  51. package/dist/app/loading.js +138 -0
  52. package/dist/app/loading.js.map +1 -0
  53. package/dist/app/pipelinecache.js +209 -0
  54. package/dist/app/pipelinecache.js.map +1 -0
  55. package/dist/app/runtimescript.js +25 -0
  56. package/dist/app/runtimescript.js.map +1 -1
  57. package/dist/app/scriptingsystem.js +54 -0
  58. package/dist/app/scriptingsystem.js.map +1 -1
  59. package/dist/app/scriptregistry.js +7 -2
  60. package/dist/app/scriptregistry.js.map +1 -1
  61. package/dist/asset/asset_manifest.js +59 -0
  62. package/dist/asset/asset_manifest.js.map +1 -0
  63. package/dist/asset/asset_preload.js +258 -0
  64. package/dist/asset/asset_preload.js.map +1 -0
  65. package/dist/asset/assetmanager.js +117 -65
  66. package/dist/asset/assetmanager.js.map +1 -1
  67. package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
  68. package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  69. package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  70. package/dist/asset/loaders/ktx2/basis_location.js +17 -0
  71. package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
  72. package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
  73. package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
  74. package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
  75. package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
  76. package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
  77. package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
  78. package/dist/asset/mesh_lod_builder.js +104 -0
  79. package/dist/asset/mesh_lod_builder.js.map +1 -0
  80. package/dist/asset/mesh_settings.js +111 -0
  81. package/dist/asset/mesh_settings.js.map +1 -0
  82. package/dist/asset/meshopt_decoder.js +18 -0
  83. package/dist/asset/meshopt_decoder.js.map +1 -0
  84. package/dist/asset/meshopt_simplifier.js +26 -0
  85. package/dist/asset/meshopt_simplifier.js.map +1 -0
  86. package/dist/asset/model.js +177 -3
  87. package/dist/asset/model.js.map +1 -1
  88. package/dist/asset/texture_settings.js +231 -0
  89. package/dist/asset/texture_settings.js.map +1 -0
  90. package/dist/asset/zmsh_binary.js +131 -0
  91. package/dist/asset/zmsh_binary.js.map +1 -0
  92. package/dist/asset/zsdf_binary.js +111 -0
  93. package/dist/asset/zsdf_binary.js.map +1 -0
  94. package/dist/blitter/bilateralblur.js +1 -2
  95. package/dist/blitter/bilateralblur.js.map +1 -1
  96. package/dist/blitter/gaussianblur.js +1 -6
  97. package/dist/blitter/gaussianblur.js.map +1 -1
  98. package/dist/camera/base.js +31 -10
  99. package/dist/camera/base.js.map +1 -1
  100. package/dist/camera/camera.js +178 -200
  101. package/dist/camera/camera.js.map +1 -1
  102. package/dist/camera/follow.js +342 -0
  103. package/dist/camera/follow.js.map +1 -0
  104. package/dist/camera/fps.js +9 -7
  105. package/dist/camera/fps.js.map +1 -1
  106. package/dist/camera/orbit.js +46 -19
  107. package/dist/camera/orbit.js.map +1 -1
  108. package/dist/index.d.ts +30475 -19865
  109. package/dist/index.js +67 -12
  110. package/dist/index.js.map +1 -1
  111. package/dist/material/blinn.js +3 -0
  112. package/dist/material/blinn.js.map +1 -1
  113. package/dist/material/eye.js +1 -1
  114. package/dist/material/eye.js.map +1 -1
  115. package/dist/material/hair.js +2 -3
  116. package/dist/material/hair.js.map +1 -1
  117. package/dist/material/hairstrand.js +235 -235
  118. package/dist/material/hairstrand.js.map +1 -1
  119. package/dist/material/lambert.js +4 -1
  120. package/dist/material/lambert.js.map +1 -1
  121. package/dist/material/material.js +362 -300
  122. package/dist/material/material.js.map +1 -1
  123. package/dist/material/meshmaterial.js +118 -45
  124. package/dist/material/meshmaterial.js.map +1 -1
  125. package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
  126. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  127. package/dist/material/mixins/lightmodel/lambert.js +1 -1
  128. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  129. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
  130. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  131. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
  132. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  133. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
  134. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  135. package/dist/material/mixins/lit.js +223 -83
  136. package/dist/material/mixins/lit.js.map +1 -1
  137. package/dist/material/mixins/pbr/common.js +31 -206
  138. package/dist/material/mixins/pbr/common.js.map +1 -1
  139. package/dist/material/mtoon.js +1 -1
  140. package/dist/material/mtoon.js.map +1 -1
  141. package/dist/material/pbrmr.js +3 -0
  142. package/dist/material/pbrmr.js.map +1 -1
  143. package/dist/material/pbrsg.js +3 -0
  144. package/dist/material/pbrsg.js.map +1 -1
  145. package/dist/material/sdf_debug.js +78 -0
  146. package/dist/material/sdf_debug.js.map +1 -0
  147. package/dist/material/shader/helper.js +733 -190
  148. package/dist/material/shader/helper.js.map +1 -1
  149. package/dist/material/shader/terrain_blend.js +204 -43
  150. package/dist/material/shader/terrain_blend.js.map +1 -1
  151. package/dist/material/skin.js +331 -297
  152. package/dist/material/skin.js.map +1 -1
  153. package/dist/material/skinprofile.js +1058 -0
  154. package/dist/material/skinprofile.js.map +1 -0
  155. package/dist/material/sss.js +353 -0
  156. package/dist/material/sss.js.map +1 -0
  157. package/dist/material/sss_kernel.js +265 -0
  158. package/dist/material/sss_kernel.js.map +1 -0
  159. package/dist/material/sssprofile.js +879 -0
  160. package/dist/material/sssprofile.js.map +1 -0
  161. package/dist/material/subsurfaceprofile.js +4 -8
  162. package/dist/material/subsurfaceprofile.js.map +1 -1
  163. package/dist/material/terrain-cm.js +464 -188
  164. package/dist/material/terrain-cm.js.map +1 -1
  165. package/dist/material/unlit.js +3 -0
  166. package/dist/material/unlit.js.map +1 -1
  167. package/dist/material/water.js +2009 -201
  168. package/dist/material/water.js.map +1 -1
  169. package/dist/node_modules/meshoptimizer/LICENSE +21 -0
  170. package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
  171. package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
  172. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
  173. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
  174. package/dist/physics/character.js +226 -0
  175. package/dist/physics/character.js.map +1 -0
  176. package/dist/physics/collider.js +209 -0
  177. package/dist/physics/collider.js.map +1 -0
  178. package/dist/physics/events.js +79 -0
  179. package/dist/physics/events.js.map +1 -0
  180. package/dist/physics/joint.js +272 -0
  181. package/dist/physics/joint.js.map +1 -0
  182. package/dist/physics/node_physics.js +234 -0
  183. package/dist/physics/node_physics.js.map +1 -0
  184. package/dist/physics/part.js +91 -0
  185. package/dist/physics/part.js.map +1 -0
  186. package/dist/physics/rigid_body.js +379 -0
  187. package/dist/physics/rigid_body.js.map +1 -0
  188. package/dist/physics/vehicle.js +335 -0
  189. package/dist/physics/vehicle.js.map +1 -0
  190. package/dist/physics/world.js +25 -0
  191. package/dist/physics/world.js.map +1 -0
  192. package/dist/posteffect/bloom.js +49 -14
  193. package/dist/posteffect/bloom.js.map +1 -1
  194. package/dist/posteffect/motionblur.js +668 -63
  195. package/dist/posteffect/motionblur.js.map +1 -1
  196. package/dist/posteffect/posteffect.js +12 -1
  197. package/dist/posteffect/posteffect.js.map +1 -1
  198. package/dist/posteffect/postsss.js +572 -0
  199. package/dist/posteffect/postsss.js.map +1 -0
  200. package/dist/posteffect/sao.js +48 -50
  201. package/dist/posteffect/sao.js.map +1 -1
  202. package/dist/posteffect/skinsss.js +605 -355
  203. package/dist/posteffect/skinsss.js.map +1 -1
  204. package/dist/posteffect/ssgi.js +91 -162
  205. package/dist/posteffect/ssgi.js.map +1 -1
  206. package/dist/posteffect/ssr.js +3 -11
  207. package/dist/posteffect/ssr.js.map +1 -1
  208. package/dist/posteffect/sss.js +34 -15
  209. package/dist/posteffect/sss.js.map +1 -1
  210. package/dist/posteffect/taa.js +1 -0
  211. package/dist/posteffect/taa.js.map +1 -1
  212. package/dist/render/abuffer_oit.js +40 -39
  213. package/dist/render/abuffer_oit.js.map +1 -1
  214. package/dist/render/clipmap.js +328 -62
  215. package/dist/render/clipmap.js.map +1 -1
  216. package/dist/render/cluster_light.js +958 -224
  217. package/dist/render/cluster_light.js.map +1 -1
  218. package/dist/render/cull_visitor.js +26 -5
  219. package/dist/render/cull_visitor.js.map +1 -1
  220. package/dist/render/debug_views.js +37 -0
  221. package/dist/render/debug_views.js.map +1 -0
  222. package/dist/render/depthpass.js +5 -1
  223. package/dist/render/depthpass.js.map +1 -1
  224. package/dist/render/drawable_mixin.js +53 -6
  225. package/dist/render/drawable_mixin.js.map +1 -1
  226. package/dist/render/dualdepthpeeling_oit.js +53 -53
  227. package/dist/render/dualdepthpeeling_oit.js.map +1 -1
  228. package/dist/render/envlight.js +196 -113
  229. package/dist/render/envlight.js.map +1 -1
  230. package/dist/render/fbm_wavegenerator.js +8 -13
  231. package/dist/render/fbm_wavegenerator.js.map +1 -1
  232. package/dist/render/fft_wavegenerator.js +268 -136
  233. package/dist/render/fft_wavegenerator.js.map +1 -1
  234. package/dist/render/gerstner_wavegenerator.js +113 -28
  235. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  236. package/dist/render/gi/probe_volume.js +1334 -0
  237. package/dist/render/gi/probe_volume.js.map +1 -0
  238. package/dist/render/gi/scene_gi.js +282 -0
  239. package/dist/render/gi/scene_gi.js.map +1 -0
  240. package/dist/render/gi/voxel_atlas.js +198 -0
  241. package/dist/render/gi/voxel_atlas.js.map +1 -0
  242. package/dist/render/gi/voxel_lighting.js +652 -0
  243. package/dist/render/gi/voxel_lighting.js.map +1 -0
  244. package/dist/render/gi/voxel_scene.js +642 -0
  245. package/dist/render/gi/voxel_scene.js.map +1 -0
  246. package/dist/render/gi/voxelize_pass.js +223 -0
  247. package/dist/render/gi/voxelize_pass.js.map +1 -0
  248. package/dist/render/globalbindgroup_allocator.js +3 -2
  249. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  250. package/dist/render/gpu_picking.js +9 -36
  251. package/dist/render/gpu_picking.js.map +1 -1
  252. package/dist/render/hzb.js +80 -22
  253. package/dist/render/hzb.js.map +1 -1
  254. package/dist/render/instance_culling.js +499 -0
  255. package/dist/render/instance_culling.js.map +1 -0
  256. package/dist/render/lightpass.js +23 -9
  257. package/dist/render/lightpass.js.map +1 -1
  258. package/dist/render/lod.js +46 -0
  259. package/dist/render/lod.js.map +1 -0
  260. package/dist/render/oit.js +11 -11
  261. package/dist/render/oit.js.map +1 -1
  262. package/dist/render/primitive.js +301 -9
  263. package/dist/render/primitive.js.map +1 -1
  264. package/dist/render/primitive_readback.js +209 -0
  265. package/dist/render/primitive_readback.js.map +1 -0
  266. package/dist/render/render_queue.js +198 -11
  267. package/dist/render/render_queue.js.map +1 -1
  268. package/dist/render/renderer.js +14 -7
  269. package/dist/render/renderer.js.map +1 -1
  270. package/dist/render/rendergraph/blackboard.js +15 -1
  271. package/dist/render/rendergraph/blackboard.js.map +1 -1
  272. package/dist/render/rendergraph/executor.js +136 -0
  273. package/dist/render/rendergraph/executor.js.map +1 -1
  274. package/dist/render/rendergraph/forward_plus_builder.js +585 -59
  275. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  276. package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
  277. package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
  278. package/dist/render/rendergraph/history_resources.js +8 -1
  279. package/dist/render/rendergraph/history_resources.js.map +1 -1
  280. package/dist/render/rendergraph/scene_render_context.js +31 -2
  281. package/dist/render/rendergraph/scene_render_context.js.map +1 -1
  282. package/dist/render/rendergraph/types.js.map +1 -1
  283. package/dist/render/renderpass.js +28 -5
  284. package/dist/render/renderpass.js.map +1 -1
  285. package/dist/render/sdf/box_allocator.js +98 -0
  286. package/dist/render/sdf/box_allocator.js.map +1 -0
  287. package/dist/render/sdf/global_sdf.js +865 -0
  288. package/dist/render/sdf/global_sdf.js.map +1 -0
  289. package/dist/render/sdf/scene_sdf.js +562 -0
  290. package/dist/render/sdf/scene_sdf.js.map +1 -0
  291. package/dist/render/sdf/sdf_atlas.js +227 -0
  292. package/dist/render/sdf/sdf_atlas.js.map +1 -0
  293. package/dist/render/sdf/sdf_programs.js +42 -0
  294. package/dist/render/sdf/sdf_programs.js.map +1 -0
  295. package/dist/render/sdf/sdf_view.js +199 -0
  296. package/dist/render/sdf/sdf_view.js.map +1 -0
  297. package/dist/render/sdf/waterline.js +610 -0
  298. package/dist/render/sdf/waterline.js.map +1 -0
  299. package/dist/render/shadow_mask_pass.js +142 -25
  300. package/dist/render/shadow_mask_pass.js.map +1 -1
  301. package/dist/render/shore_wave_generator.js +1193 -0
  302. package/dist/render/shore_wave_generator.js.map +1 -0
  303. package/dist/render/sky.js +516 -86
  304. package/dist/render/sky.js.map +1 -1
  305. package/dist/render/transmission_thickness_pass.js +477 -0
  306. package/dist/render/transmission_thickness_pass.js.map +1 -0
  307. package/dist/render/underwater.js +524 -0
  308. package/dist/render/underwater.js.map +1 -0
  309. package/dist/render/virtualtexture/virtual_texture.js +1214 -0
  310. package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
  311. package/dist/render/volumetric_cloud/cloud_common.js +472 -0
  312. package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
  313. package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
  314. package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
  315. package/dist/render/volumetric_cloud/debug_view.js +131 -0
  316. package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
  317. package/dist/render/volumetric_cloud/resources.js +380 -0
  318. package/dist/render/volumetric_cloud/resources.js.map +1 -0
  319. package/dist/render/volumetric_cloud/sky_cache.js +380 -0
  320. package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
  321. package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
  322. package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
  323. package/dist/render/water_caustics.js +1195 -0
  324. package/dist/render/water_caustics.js.map +1 -0
  325. package/dist/render/water_foam.js +627 -0
  326. package/dist/render/water_foam.js.map +1 -0
  327. package/dist/render/water_interaction.js +1795 -0
  328. package/dist/render/water_interaction.js.map +1 -0
  329. package/dist/render/weightedblended_oit.js +36 -36
  330. package/dist/render/weightedblended_oit.js.map +1 -1
  331. package/dist/scene/basesprite.js +9 -4
  332. package/dist/scene/basesprite.js.map +1 -1
  333. package/dist/scene/batchgroup.js +108 -12
  334. package/dist/scene/batchgroup.js.map +1 -1
  335. package/dist/scene/environment.js +28 -7
  336. package/dist/scene/environment.js.map +1 -1
  337. package/dist/scene/foliage.js +1020 -0
  338. package/dist/scene/foliage.js.map +1 -0
  339. package/dist/scene/foliage_buckets.js +147 -0
  340. package/dist/scene/foliage_buckets.js.map +1 -0
  341. package/dist/scene/foliage_mask.js +358 -0
  342. package/dist/scene/foliage_mask.js.map +1 -0
  343. package/dist/scene/hair.js +15 -4
  344. package/dist/scene/hair.js.map +1 -1
  345. package/dist/scene/light.js +179 -13
  346. package/dist/scene/light.js.map +1 -1
  347. package/dist/scene/mesh.js +327 -45
  348. package/dist/scene/mesh.js.map +1 -1
  349. package/dist/scene/meshdrawable.js +6 -0
  350. package/dist/scene/meshdrawable.js.map +1 -1
  351. package/dist/scene/msdftext.js +9 -3
  352. package/dist/scene/msdftext.js.map +1 -1
  353. package/dist/scene/msdftextsprite.js +9 -3
  354. package/dist/scene/msdftextsprite.js.map +1 -1
  355. package/dist/scene/particlesys.js +8 -2
  356. package/dist/scene/particlesys.js.map +1 -1
  357. package/dist/scene/physics_settings.js +157 -0
  358. package/dist/scene/physics_settings.js.map +1 -0
  359. package/dist/scene/scene.js +190 -44
  360. package/dist/scene/scene.js.map +1 -1
  361. package/dist/scene/scene_node.js +147 -6
  362. package/dist/scene/scene_node.js.map +1 -1
  363. package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
  364. package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
  365. package/dist/scene/terrain-cm/grass.js +881 -42
  366. package/dist/scene/terrain-cm/grass.js.map +1 -1
  367. package/dist/scene/terrain-cm/grass_gpu.js +929 -0
  368. package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
  369. package/dist/scene/terrain-cm/grassmaterial.js +180 -9
  370. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  371. package/dist/scene/terrain-cm/terrain-cm.js +465 -36
  372. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  373. package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
  374. package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
  375. package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
  376. package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
  377. package/dist/scene/update_queue.js +54 -0
  378. package/dist/scene/update_queue.js.map +1 -0
  379. package/dist/scene/water.js +997 -96
  380. package/dist/scene/water.js.map +1 -1
  381. package/dist/scene/water_surface_sampler.js +324 -0
  382. package/dist/scene/water_surface_sampler.js.map +1 -0
  383. package/dist/scene/wind.js +317 -0
  384. package/dist/scene/wind.js.map +1 -0
  385. package/dist/shaders/atmosphere.js +388 -166
  386. package/dist/shaders/atmosphere.js.map +1 -1
  387. package/dist/shaders/fog.js +100 -32
  388. package/dist/shaders/fog.js.map +1 -1
  389. package/dist/shaders/gi.js +365 -0
  390. package/dist/shaders/gi.js.map +1 -0
  391. package/dist/shaders/ltc_rect.js +202 -0
  392. package/dist/shaders/ltc_rect.js.map +1 -0
  393. package/dist/shaders/misc.js +1 -10
  394. package/dist/shaders/misc.js.map +1 -1
  395. package/dist/shaders/noise.js +5 -1
  396. package/dist/shaders/noise.js.map +1 -1
  397. package/dist/shaders/probes.js +309 -0
  398. package/dist/shaders/probes.js.map +1 -0
  399. package/dist/shaders/sdf.js +537 -0
  400. package/dist/shaders/sdf.js.map +1 -0
  401. package/dist/shaders/shadow.js +104 -70
  402. package/dist/shaders/shadow.js.map +1 -1
  403. package/dist/shaders/skin_brdf.js +243 -0
  404. package/dist/shaders/skin_brdf.js.map +1 -0
  405. package/dist/shaders/ssr.js +6 -159
  406. package/dist/shaders/ssr.js.map +1 -1
  407. package/dist/shaders/temporal.js +38 -27
  408. package/dist/shaders/temporal.js.map +1 -1
  409. package/dist/shaders/water.js +40 -87
  410. package/dist/shaders/water.js.map +1 -1
  411. package/dist/shaders/water_medium.js +42 -0
  412. package/dist/shaders/water_medium.js.map +1 -0
  413. package/dist/shadow/dom.js +110 -19
  414. package/dist/shadow/dom.js.map +1 -1
  415. package/dist/shadow/esm.js +3 -3
  416. package/dist/shadow/esm.js.map +1 -1
  417. package/dist/shadow/pcf_opt.js +15 -48
  418. package/dist/shadow/pcf_opt.js.map +1 -1
  419. package/dist/shadow/pcf_pd.js +15 -53
  420. package/dist/shadow/pcf_pd.js.map +1 -1
  421. package/dist/shadow/pcss.js +34 -9
  422. package/dist/shadow/pcss.js.map +1 -1
  423. package/dist/shadow/shadow_impl.js +3 -8
  424. package/dist/shadow/shadow_impl.js.map +1 -1
  425. package/dist/shadow/shadow_region.js +87 -49
  426. package/dist/shadow/shadow_region.js.map +1 -1
  427. package/dist/shadow/shadowmapper.js +93 -53
  428. package/dist/shadow/shadowmapper.js.map +1 -1
  429. package/dist/shadow/ssm.js +18 -72
  430. package/dist/shadow/ssm.js.map +1 -1
  431. package/dist/shadow/vsm.js +3 -3
  432. package/dist/shadow/vsm.js.map +1 -1
  433. package/dist/shapes/shape.js +44 -1
  434. package/dist/shapes/shape.js.map +1 -1
  435. package/dist/utility/buoyancy.js +287 -0
  436. package/dist/utility/buoyancy.js.map +1 -0
  437. package/dist/utility/physical.js +10 -1
  438. package/dist/utility/physical.js.map +1 -1
  439. package/dist/utility/pmrem.js +17 -43
  440. package/dist/utility/pmrem.js.map +1 -1
  441. package/dist/utility/sdf/bake.js +435 -0
  442. package/dist/utility/sdf/bake.js.map +1 -0
  443. package/dist/utility/sdf/bvh.js +576 -0
  444. package/dist/utility/sdf/bvh.js.map +1 -0
  445. package/dist/utility/serialization/manager.js +36 -6
  446. package/dist/utility/serialization/manager.js.map +1 -1
  447. package/dist/utility/serialization/scene/animation.js +77 -7
  448. package/dist/utility/serialization/scene/animation.js.map +1 -1
  449. package/dist/utility/serialization/scene/batch.js +11 -4
  450. package/dist/utility/serialization/scene/batch.js.map +1 -1
  451. package/dist/utility/serialization/scene/camera.js +140 -279
  452. package/dist/utility/serialization/scene/camera.js.map +1 -1
  453. package/dist/utility/serialization/scene/cloth.js +25 -0
  454. package/dist/utility/serialization/scene/cloth.js.map +1 -0
  455. package/dist/utility/serialization/scene/common.js +14 -6
  456. package/dist/utility/serialization/scene/common.js.map +1 -1
  457. package/dist/utility/serialization/scene/foliage.js +821 -0
  458. package/dist/utility/serialization/scene/foliage.js.map +1 -0
  459. package/dist/utility/serialization/scene/hair.js +11 -4
  460. package/dist/utility/serialization/scene/hair.js.map +1 -1
  461. package/dist/utility/serialization/scene/light.js +115 -7
  462. package/dist/utility/serialization/scene/light.js.map +1 -1
  463. package/dist/utility/serialization/scene/material.js +388 -220
  464. package/dist/utility/serialization/scene/material.js.map +1 -1
  465. package/dist/utility/serialization/scene/mesh.js +69 -4
  466. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  467. package/dist/utility/serialization/scene/node.js +140 -5
  468. package/dist/utility/serialization/scene/node.js.map +1 -1
  469. package/dist/utility/serialization/scene/node_physics.js +1318 -0
  470. package/dist/utility/serialization/scene/node_physics.js.map +1 -0
  471. package/dist/utility/serialization/scene/particle.js +11 -4
  472. package/dist/utility/serialization/scene/particle.js.map +1 -1
  473. package/dist/utility/serialization/scene/physics.js +120 -0
  474. package/dist/utility/serialization/scene/physics.js.map +1 -0
  475. package/dist/utility/serialization/scene/primitive.js +124 -10
  476. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  477. package/dist/utility/serialization/scene/scene.js +1687 -51
  478. package/dist/utility/serialization/scene/scene.js.map +1 -1
  479. package/dist/utility/serialization/scene/sprite.js +11 -4
  480. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  481. package/dist/utility/serialization/scene/terrain.js +163 -33
  482. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  483. package/dist/utility/serialization/scene/text.js +11 -4
  484. package/dist/utility/serialization/scene/text.js.map +1 -1
  485. package/dist/utility/serialization/scene/water.js +2473 -114
  486. package/dist/utility/serialization/scene/water.js.map +1 -1
  487. package/dist/utility/serialization/types.js.map +1 -1
  488. package/dist/utility/shprojector.js +97 -109
  489. package/dist/utility/shprojector.js.map +1 -1
  490. package/dist/utility/textures/foam.js +170 -0
  491. package/dist/utility/textures/foam.js.map +1 -0
  492. package/dist/utility/textures/ggxlut.js +17 -43
  493. package/dist/utility/textures/ggxlut.js.map +1 -1
  494. package/dist/utility/textures/ltcdata.js +4 -4
  495. package/dist/utility/textures/ltcdata.js.map +1 -1
  496. package/dist/utility/textures/ltclut.js +16 -6
  497. package/dist/utility/textures/ltclut.js.map +1 -1
  498. package/dist/utility/unsupported.js +24 -0
  499. package/dist/utility/unsupported.js.map +1 -0
  500. package/dist/values.js +13 -1
  501. package/dist/values.js.map +1 -1
  502. package/package.json +25 -12
  503. package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
  504. package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  505. package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  506. package/src/asset/meshoptimizer/LICENSE +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshopt_simplifier.js","sources":["../../../node_modules/meshoptimizer/meshopt_simplifier.js"],"sourcesContent":["// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2026, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\nvar MeshoptSimplifier = (function () {\n\t// Built with clang version 22.1.0-wasi-sdk\n\t// Built from meshoptimizer 1.3\n\tvar wasm =\n\t\t'b9H79Tebbbe;veC9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gouuuuuue999Gvuuuuueu9Gzuuuuuuuuuuu99uuuub9Gquuuuuuu99uueu9GPuuuuuuuuuuu99uueu9Gquuuuuuuu99ueu9Gruuuuuu99eu9Gwuuuuuu99ueu9Giuuue999GDuuuuuuuuueu9Gkuuuuuuuu99uub9Gluuuueu9Gluuuub9Giuuueui3EdilvorlwDiqkrxmPszdHObAAbeAlve9Weiiviebeoweuecj:Gdkr:Sdmo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bw8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bD8A9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9O9v9W9K9HtWbqQ9TW79O9V9Wt9F79P9T9W29P9M959t29V9W9W95bkX9TW79O9V9Wt9F79P9T9W29P9M959qV919UWbmQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bPX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2WbsP9TW79O9V9Wt9FVW9TW79Obza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbA59TW79O9V9Wt9F9NW9UWV9HtW9q9V79Pt9P9V9U9sW9T9H9WbCl79IV9RbXDwebcekdKYq:p:1dElbzOk:Q:tekYue99iuQ99eui99Due99xue9:w998Jjjjjbcj;sb9Rgs8Kjjjjbcbhzasc:Cefcbc;Kbz:xjjjb8AdnabaeSmbabaeadcdtz:wjjjb8AkdnamcdGTmbalcrfci4cbyd;y:L:cjbHjjjjbbhHasc:Cefasyd;8egecdtfaHBdbasaecefBd;8ecbhlcbhednadTmbabheadhOinaHaeydbci4fcb86bbaeclfheaOcufgOmbkcbhlabheadhOinaHaeydbgAci4fgCaCRbbgCceaAcrGgAtV86bbaCcu7aA4ceGalfhlaeclfheaOcufgOmbkcualcdtalcFFFFi0Ehekaecbyd;y:L:cjbHjjjjbbhzasc:Cefasyd;8egecdtfazBdbasaecefBd;8ealcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd;y:L:cjbHjjjjbbhHasc:Cefasyd;8egAcdtfaHBdbasaAcefBd;8eaHcFeaOz:xjjjbhQdnadTmbaecufhLcbhKindndnaQabaKcdtfgYydbgAc:v;t;h;Ev2aLGgOcdtfgCydbgHcuSmbceheinazaHcdtfydbaASmdaOaefhHaecefheaQaHaLGgOcdtfgCydbgHcu9hmbkkazaXcdtfaABdbaCaXBdbaXhHaXcefhXkaYaHBdbaKcefgKad9hmbkkaQcbyd;C:L:cjbH:bjjjbbasasyd;8ecufBd;8ekcbh8AcualcefgecdtaecFFFFi0Ecbyd;y:L:cjbHjjjjbbhKasc:Cefasyd;8egecdtfaKBdbasaKBdNeasaecefBd;8ecuadcitadcFFFFe0Ecbyd;y:L:cjbHjjjjbbhEasc:Cefasyd;8egecdtfaEBdbasaEBd:yeasaecefBd;8eascNefabadalcbz:cjjjbcualcdtgealcFFFFi0Eg3cbyd;y:L:cjbHjjjjbbhHasc:Cefasyd;8egOcdtfaHBdbasaOcefBd;8ea3cbyd;y:L:cjbHjjjjbbhXasc:Cefasyd;8egOcdtfaXBdbasaOcefBd;8eaHaXaialavazasc:Cefz:djjjbalcbyd;y:L:cjbHjjjjbbh5asc:Cefasyd;8egOcdtfa5BdbasaOcefBd;8ea3cbyd;y:L:cjbHjjjjbbhOasc:Cefasyd;8egAcdtfaOBdbasaAcefBd;8ea3cbyd;y:L:cjbHjjjjbbhAasc:Cefasyd;8egCcdtfaABdbasaCcefBd;8eaOcFeaez:xjjjbh8EaAcFeaez:xjjjbh8FdnalTmbindnaKa8AgAcefg8AcdtfydbgCaKaAcdtgefydbgOSmbaCaO9RhYaEaOcitfhaa8Faefhha8EaefhLcbhCindndnaaaCcitfydbgQaA9hmbaLaABdbahaABdbxekdnaKaQcdtggfgeclfydbgOaeydbgeSmbaOae9RhOaEaecitfheinaeydbaASmdaecwfheaOcufgOmbkka8FagfgeaAaQaeydbcuSEBdbaLaQaAaLydbcuSEBdbkaCcefgCaY9hmbkka8Aal9hmbkaHhOaXhAa8EhQa8FhCcbheindndnaeaOydbgL9hmbdnaeaAydbgL9hmbaQydbhLdnaCydbgYcu9hmbaLcu9hmba5aefcb86bbxikdnaYcuSmbaLcuSmbaeaYSmbaHaYcdtfydbaHaLcdtfydb9hmba5aefcd86bbxika5aefhadnaeaYSmbaeaLSmbaace86bbxikaacv86bbxdkdnaeaXaLcdtgYfydb9hmbdnaCydbgacuSmbaeaaSmbaQydbggcuSmbaeagSmba8FaYfydbghcuSmbahaLSmba8EaYfydbgYcuSmbaYaLSmbaHaacdtfydbgLaHaYcdtfydb9hmbaLaHagcdtfydbgYSmbaYaHahcdtfydb9hmba5aefcd86bbxika5aefcv86bbxdka5aefcv86bbxeka5aefa5aLfRbb86bbkaOclfhOaAclfhAaQclfhQaCclfhCalaecefge9hmbkdnamcaGTmbcbh8Jindndna5a8Jfg8KRbbg8Lc9:fPlbeebekdndndnaHa8Jcdtfydbgea8J9hmbcbhYcbh8MaqTmednazTmbcbh8Ma8JheinaqazaecdtgefydbfRbbce4a8MVceGh8MaXaefydbgea8J9hmbxikkcbh8Ma8JheinaqaefRbbce4a8MVceGh8MaXaecdtfydbgea8J9hmbxdkka5aefRbbhexeka8JheindnaKaecdtg8AfgeclfydbgOaeydbgeSmbaOae9RhgaEaecitfhhaHa8AfhacbhLinahaLcitfydbgQhednindnaKaecdtgCfgeclfydbgOaeydbgeSmbaOae9RhOaEaecitfheaaydbhAdninaHaeydbcdtfydbaASmeaecwfheaOcufgOTmdxbkkcbhexdkaXaCfydbgeaQ9hmbkcehekaYaeVhYaLcefgLag9hmbkkaXa8Afydbgea8J9hmbka8LclciaYceGEa8MEheka8Kae86bbka8Jcefg8Jal9hmbkkdnaqTmbdndnazTmbazheaHhOalhAindnaqaeydbfRbbceGTmba5aOydbfcv86bbkaeclfheaOclfhOaAcufgAmbxdkkaqheaHhOalhAindnaeRbbceGTmba5aOydbfcv86bbkaecefheaOclfhOaAcufgAmbkkaHhealhAa5hOindna5aeydbfRbbcv9hmbaOcv86bbkaeclfheaOcefhOaAcufgAmbkkamceGTmba5healhOindndnaeRbbcufPlbeebekaecv86bbkaecefheaOcufgOmbkkcbh8Ncualcx2alc;v:Q;v:Qe0Ecbyd;y:L:cjbHjjjjbbh8Kasc:Cefasyd;8egecdtfa8KBdbasaecefBd;8eascbBd:qeas9cb83i1ea8Kaialavazasc1efz:ejjjbhydndnaDmbcbh8PcbhaxekcbhaawhecbhOindnaeIdbJbbbb9ETmbasaacdtfaOBdbaacefhakaeclfheaDaOcefgO9hmbkcuaaal2gecdtaecFFFFi0Ecbyd;y:L:cjbHjjjjbbh8Pasc:Cefasyd;8egecdtfa8PBdbasaecefBd;8ealTmbdnaambcbhaxekarcd4hgdnazTmbaacdthhcbhLa8PhYinaoazaLcdtfydbag2cdtfhQasheaYhOaahAinaOaQaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaOclfhOaAcufgAmbkaYahfhYaLcefgLal9hmbxdkkaacdthhcbhLa8PhYinaoaLag2cdtfhQasheaYhOaahAinaOaQaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaOclfhOaAcufgAmbkaYahfhYaLcefgLal9hmbkkcualc8S2gOalc;D;O;f8U0EgCcbyd;y:L:cjbHjjjjbbheasc:Cefasyd;8egAcdtfaeBdbasaAcefBd;8eaecbaOz:xjjjbhIcbh8RcbhgdnaaTmbcbh8NaCcbyd;y:L:cjbHjjjjbbhgasc:Cefasyd;8egecdtfagBdbasaecefBd;8eagcbaOz:xjjjb8Acuaaal2gecltgOaecFFFFb0Ecbyd;y:L:cjbHjjjjbbh8Rasc:Cefasyd;8egecdtfa8RBdbasaecefBd;8ea8RcbaOz:xjjjb8AamcjjjjdGTmbcualcltgealcFFFFb0Ecbyd;y:L:cjbHjjjjbbh8Nasc:Cefasyd;8egOcdtfa8NBdbasaOcefBd;8ea8Ncbaez:xjjjb8AkdnadTmbcbhQabhOina8KaOclfydbgLcx2fgeIdba8KaOydbgYcx2fgAIdbg8S:tgRa8KaOcwfydbghcx2fgCIdlaAIdlg8U:tg8VNaeIdla8U:tg8WaCIdba8S:tg8XN:tg8Ya8YNa8WaCIdwaAIdwg8Z:tg80NaeIdwa8Z:tg8Wa8VN:tg81a81Na8Wa8XNaRa80N:tg80a80NMMg8V:rhBa8Yh8Xa80h8Wa81hRdna8VJbbbb9EgATmba8YaB:vh8Xa80aB:vh8Wa81aB:vhRkaIaHaYcdtfydbgCc8S2fgeaRaB:rg8VaRNNg83aeIdbMUdbaea8Wa8Va8WNgUNg85aeIdlMUdlaea8Xa8Va8XNg86Ng87aeIdwMUdwaeaRaUNgUaeIdxMUdxaea86aRNg88aeIdzMUdzaea8Wa86Ng89aeIdCMUdCaeaRa8Va8Xa8ZNaRa8SNa8Ua8WNMM:mg8:Ng86NgRaeIdKMUdKaea8Wa86Ng8WaeId3MUd3aea8Xa86Ng8XaeIdaMUdaaea86a8:Ng86aeId8KMUd8Kaea8VaeIdyMUdyaIaHaLcdtfydbgLc8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdyaIaHahcdtfydbgYc8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdydna8NTmbdnaATmba8YaB:vh8Ya80aB:vh80a81aB:vh81ka8NaCcltfgeaBJbbbZNgRa80Ng8VaeIdlMUdlaeaRa8YNg8WaeIdwMUdwaeaRa81Ng8XaeIdbMUdbaeaRa8S:ma81Na8Ua80N:ta8Za8YN:tNgRaeIdxMUdxa8NaLcltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxa8NaYcltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxkaOcxfhOaQcifgQad6mbkkdnalTmbJq;x8J88J;n;m;m89J:v:;;w8ZamczGEamc;abGEh80cbhOaHhCazhQaIhea8KhAindnaOaCydb9hmbaOhLdnazTmbaQydbhLka80hRdnaqTmbJbbjZa80aqaLfRbbclGEhRkaecxfgLaLIdbJbbbbMUdbaeczfgLaLIdbJbbbbMUdbaecCfgLaLIdbJbbbbMUdbaeaRaecyfgLIdbg8YNgRaeIdbMUdbaeclfgYaRaYIdbMUdbaecwfgYaRaYIdbMUdbaecKfgYaYIdbaAIdbg8WaRN:tUdbaAcwfIdbh8Vaec3fgYaYIdbaRaAclfIdbg8XN:tUdbaecafgYaYIdbaRa8VN:tUdbaec8KfgYIdbh81aLa8YaRMUdbaYa81aRa8Va8VNa8Wa8WNa8Xa8XNMMNMUdbkaCclfhCaQclfhQaec8SfheaAcxfhAalaOcefgO9hmbkkdnadTmbcbh8AabhLinaba8AcdtfhYcbheindna5aLaefydbgCfRbbgOTmba5aYaec:G:G:cjbfydbcdtfydbgQfRbbcFeGgATmbdnaOclSghmbaOci6mbaAclSmbaAcd0mekdnaOcd0mba8EaCcdtfydbaQ9hmekdnaAcd0mba8FaQcdtfydbaC9hmekdndnahmbaAcl9hmekaOciSmeaAciSmekJbbbZJbbbZJbbacaAcdSEaOcdSEhUdna8KaYaec:K:G:cjbfydbcdtfydbcx2fgOIdwa8KaCcx2fgAIdwg86:tg8Sa8KaQcx2fghIdwa86:tg8Xa8XNahIdbaAIdbg8U:tg80a80NahIdlaAIdlg8Z:tg8Va8VNMMg81Na8Xa8Sa8XNaOIdba8U:tg83a80Na8VaOIdla8Z:tg85NMMg8WN:tg8Ya8YNa83a81Na80a8WN:tgRaRNa85a81Na8Va8WN:tg8Wa8WNMMgBJbbbb9ETmba8YaB:rgB:vh8Ya8WaB:vh8WaRaB:vhRkaUa81:rNgBa8Ya86NaRa8UNa8Za8WNMM:mg81Ng87a81Nh88a80a85Na8Va83N:tg81a81Na8Va8SNa8Xa85N:tg8Va8VNa8Xa83Na80a8SN:tg8Xa8XNMMg83:rh80a8Ya87Nh85a8Wa87Nh89aRa87Nh87a8WaBa8YNg8SNh8:a8SaRNhZaRaBa8WNgnNhca8Ya8SNh8Ya8WanNh8WaRaBaRNNh8Sdna83Jbbbb9ETmba81a80:vh81a8Xa80:vh8Xa8Va80:vh8VkaIaHaCcdtfydbc8S2fgOaOIdba8Sa8VaUa80:rNgRa8VNNMg80MUdbaOa8Wa8XaRa8XNg8SNMg83aOIdlMUdlaOa8Ya81aRa81Ng8WNMg8YaOIdwMUdwaOaca8Va8SNMg8SaOIdxMUdxaOaZa8Wa8VNMgUaOIdzMUdzaOa8:a8Xa8WNMg8WaOIdCMUdCaOa87a8VaRa81a86Na8Va8UNa8Za8XNMMg86:mNgRNMg8VaOIdKMUdKaOa89a8XaRNMg8XaOId3MUd3aOa85a81aRNMg81aOIdaMUdaaOa88a86aRN:tgRaOId8KMUd8KaOaBaOIdyMUdyaIaHaQcdtfydbc8S2fgOa80aOIdbMUdbaOa83aOIdlMUdlaOa8YaOIdwMUdwaOa8SaOIdxMUdxaOaUaOIdzMUdzaOa8WaOIdCMUdCaOa8VaOIdKMUdKaOa8XaOId3MUd3aOa81aOIdaMUdaaOaRaOId8KMUd8KaOaBaOIdyMUdykaeclfgecx9hmbkaLcxfhLa8Acifg8Aad6mbkkdnamcjeGTmbalTmbcbh9cindnaKa9cgecdtgOfydbghaKaecefg9ccdtfydbg8M9pmba8Kaecx2fhDaIaHaOfydbgCc8S2fh8AindnaHaEahcitfgeydbgLcdtfydbg8JaC0mbaeydlh8LcuhAaLheindnaKaecdtgYfgeclfydbgOaeydbgeSmbaOae9RhOaEaecitfheindnaHaeydbcdtfydbaC9hmbaAcu9hhQaLhAaQmbaeclfydbhAkaecwfheaOcufgOmbkkaXaYfydbgeaL9hmbkaAaLSmbaAcuSmba8KaLcx2fgeIdbaDIdbg81:tgRa8Ka8Lcx2fgOIdlaDIdlg80:tg8XNaeIdla80:tg8VaOIdba81:tg8YN:tg86a8KaAcx2fgAIdba81:tg8Za8VNaAIdla80:tg83aRN:tg8SNa8VaOIdwaDIdwgB:tg8UNaeIdwaB:tg8Wa8XN:tg85a83a8WNaAIdwaB:tg87a8VN:tgUNa8Wa8YNaRa8UN:tg88a87aRNa8Za8WN:tg89NMMa86a86Na85a85Na88a88NMM:rJ:A:z9z:;Na8Sa8SNaUaUNa89a89NMM:rN9Gmbdna8Ua8Wa8WNaRaRNa8Va8VNMMg8SNa8Wa8Ua8WNa8YaRNa8Va8XNMMg86N:tg8Ua8UNa8Ya8SNaRa86N:tg8Ya8YNa8Xa8SNa8Va86N:tg86a86NMMg8XJbbbb9ETmba8Ua8X:rg8X:vh8Ua86a8X:vh86a8Ya8X:vh8Yka8S:rg8Xa8UaBNa8Ya81Na80a86NMM:mgUNg85aUNhUa8Ua85Nh88a86a85Nh89a8Ya85Nh8:a86a8Xa8UNg85NhZa85a8YNhna8Ya8Xa86NgcNhJa8Ua85Nh8Ua86acNh86a8Ya8Xa8YNNh85dna87a8SNa8Wa87a8WNa8ZaRNa8Va83NMMg8YN:tg8Wa8WNa8Za8SNaRa8YN:tgRaRNa83a8SNa8Va8YN:tg8Va8VNMMg8YJbbbb9ETmba8Wa8Y:rg8Y:vh8Wa8Va8Y:vh8VaRa8Y:vhRka8Aa8AIdba85aRa8XaRNNMg8SMUdba8Aa86a8Va8Xa8VNg8ZNMg86a8AIdlMUdla8Aa8Ua8Wa8Xa8WNg8YNMg8Ua8AIdwMUdwa8AaJaRa8ZNMg8Za8AIdxMUdxa8Aana8YaRNMg83a8AIdzMUdza8AaZa8Va8YNMg85a8AIdCMUdCa8Aa8:aRa8Xa8WaBNaRa81Na80a8VNMMg81:mNg8YNMgRa8AIdKMUdKa8Aa89a8Va8YNMg8Va8AId3MUd3a8Aa88a8Wa8YNMg8Wa8AIdaMUdaa8AaUa81a8YN:tg8Ya8AId8KMUd8Ka8Aa8Xa8XMg8Xa8AIdyMUdyaIa8Jc8S2fgea8SaeIdbMUdbaea86aeIdlMUdlaea8UaeIdwMUdwaea8ZaeIdxMUdxaea83aeIdzMUdzaea85aeIdCMUdCaeaRaeIdKMUdKaea8VaeId3MUd3aea8WaeIdaMUdaaea8YaeId8KMUd8Kaea8XaeIdyMUdykahcefgha8M9hmbkka9cal9hmbkkdnadTmbaaTmbcbhYinJbbbbh80a8KabaYcdtfgeclfydbgLcx2fgOIdwa8Kaeydbghcx2fgAIdwg8Z:tg8Va8VNaOIdbaAIdbg83:tg8Wa8WNaOIdlaAIdlg85:tg8Xa8XNMMg8Sa8Kaecwfydbg8Acx2fgeIdwa8Z:tg8YNa8Va8YNa8WaeIdba83:tg81Na8XaeIdla85:tgBNMMgRa8VN:tJbbbbJbbjZa8Sa8Ya8YNa81a81NaBaBNMMg8UNaRaRN:tg86:va86Jbbbb9BEg86Nh88a8Ua8VNaRa8YN:ta86Nh89a8SaBNaRa8XN:ta86Nh8:a8Ua8XNaRaBN:ta86NhZa8Sa81NaRa8WN:ta86Nhna8Ua8WNaRa81N:ta86Nhca8WaBNa8Xa81N:tgRaRNa8Xa8YNa8VaBN:tgRaRNa8Va81Na8Wa8YN:tgRaRNMM:rJbbbZNhRa8Pahaa2g8JcdtfhOa8Pa8Aaa2g8McdtfhAa8PaLaa2gDcdtfhCa8Z:mhJa85:mh9ea83:mhTascjdfheaahQJbbbbhBJbbbbh86Jbbbbh8SJbbbbh8UJbbbbh8ZJbbbbh83Jbbbbh85Jbbbbh87JbbbbhUinaecwfaRa89aCIdbaOIdbg8Y:tg8XNa88aAIdba8Y:tg81NMg8VNUdbaeclfaRaZa8XNa8:a81NMg8WNUdbaeaRaca8XNana81NMg8XNUdbaecxfaRaJa8VNa9ea8WNa8YaTa8XNMMMg8YNUdbaRa8Va8WNNa8ZMh8ZaRa8Va8XNNa8UMh8UaRa8Wa8XNNa8SMh8SaRa8Ya8YNNaUMhUaRa8Va8YNNa87Mh87aRa8Wa8YNNa85Mh85aRa8Xa8YNNa83Mh83aRa8Va8VNNa86Mh86aRa8Wa8WNNaBMhBaRa8Xa8XNNa80Mh80aOclfhOaCclfhCaAclfhAaeczfheaQcufgQmbkagahc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyagaLc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyaga8Ac8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdya8Ra8JcltfhLcbhOaahCinaLaOfgeascjdfaOfgAIdbaeIdbMUdbaeclfgQaAclfIdbaQIdbMUdbaecwfgQaAcwfIdbaQIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaOczfhOaCcufgCmbka8RaDcltfhLcbhOaahCinaLaOfgeascjdfaOfgAIdbaeIdbMUdbaeclfgQaAclfIdbaQIdbMUdbaecwfgQaAcwfIdbaQIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaOczfhOaCcufgCmbka8Ra8McltfhLcbhOaahCinaLaOfgeascjdfaOfgAIdbaeIdbMUdbaeclfgQaAclfIdbaQIdbMUdbaecwfgQaAcwfIdbaQIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaOczfhOaCcufgCmbkaYcifgYad6mbkkcbhAdndnamcwGgSmbJbbbbh86cbh9hcbh9icbh6xekcbh9ha3cbyd;y:L:cjbHjjjjbbh6asc:Cefasyd;8egecdtfa6BdbasaecefBd;8ecua6alabadaHz:fjjjbgCcltaCcjjjjiGEcbyd;y:L:cjbHjjjjbbh9iasc:Cefasyd;8egecdtfa9iBdbasaecefBd;8ea9iaCa6a8Kalz:gjjjbJFFuuh86aCTmba9iheaChOinaeIdbgRa86a86aR9EEh86aeclfheaOcufgOmbkaCh9hkdnalTmbaKclfheaKydbhCa5hOalhQcbhAincbaeydbgLaC9RaORbbcpeGEaAfhAaOcefhOaeclfheaLhCaQcufgQmbkaAce4hAkcuadaA9Rcifg9kcx2a9kc;v:Q;v:Qe0Ecbyd;y:L:cjbHjjjjbbh0asc:Cefasyd;8egecdtfa0BdbasaecefBd;8ecua9kcdta9kcFFFFi0Ecbyd;y:L:cjbHjjjjbbh9masc:Cefasyd;8egecdtfa9mBdbasaecefBd;8ea3cbyd;y:L:cjbHjjjjbbh9nasc:Cefasyd;8egecdtfa9nBdbasaecefBd;8ealcbyd;y:L:cjbHjjjjbbh9oasc:Cefasyd;8egecdtfa9oBdbasaecefBd;8eaxaxNayJbbjZamclGEg9pa9pN:vh87JbbbbhUdnadak9nmbdna9kci6mbamcjdGh9qaaclth9ra0cwfh9sJbbbbh85JbbbbhUinascNefabadalaHz:cjjjbabh8Acbh3cbh9tinaba9tcdtfh8McbheindnaHa8AaefydbgAcdtghfydbgCaHa8Maec:W:G:cjbfydbcdtfydbgOcdtg8JfydbgQSmba5aOfRbbgYco2a5aAfRbbgLfRb;a:G:cjbg8LaLco2aYfgDRb;a:G:cjbg9cVcFeGTmbdnaQaC9nmbaDRb;W:G:cjbcFeGmekdnaLcufcFeGce0mbaYTmba8EahfydbaO9hmekdnaLTmbaYcufcFeGce0mba8Fa8JfydbaA9hmeka0a3cx2fgCaOaAa9ccFeGgQEBdlaCaAaOaQEBdbaCaQa8LGcb9hBdwa3cefh3kaeclfgecx9hmbkdna9tcifg9tad9pmba8Acxfh8Aa3cifa9k9nmekka3TmdcbhDinaIaHa0aDcx2fghydbgLcdtgCfydbg8Jc8S2fgeIdwa8KahydlgYcx2fgOIdwg8WNaeIdzaOIdbg8XNaeIdaMgRaRMMa8WNaeIdlaOIdlg8YNaeIdCa8WNaeId3MgRaRMMa8YNaeIdba8XNaeIdxa8YNaeIdKMgRaRMMa8XNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8V:va8VJbbbb9BEh8Vdndnahydwg8MmbJFFuuhBxekJbbbbJbbjZaIaHaYcdtfydbc8S2fgeIdyg81:va81Jbbbb9BEaeIdwa8KaLcx2fgOIdwg81NaeIdzaOIdbg80NaeIdaMgBaBMMa81NaeIdlaOIdlgBNaeIdCa81NaeId3Mg81a81MMaBNaeIdba80NaeIdxaBNaeIdKMg81a81MMa80NaeId8KMMM:lNhBka8VaRNh80dnaaTmbagaLc8S2fgAIdwa8WNaAIdza8XNaAIdaMgRaRMMa8WNaAIdla8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaYaa2gQcdtfhOa8RaLaa2g8AcltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbkaR:lgRa81aRa819DEaRa9qEh8Sdndna8MmbJbbbbhRxekagaYc8S2fgAIdwa8KaLcx2fgeIdwg8WNaAIdzaeIdbg8XNaAIdaMgRaRMMa8WNaAIdlaeIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Pa8AcdtfhOa8RaQcltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbkaR:lgRa81aRa819DEaRa9qEhRka80a8SMh80aBaRMhBdndndna5aLfRbbc9:fPibeedkdna8Fa8Ea8EaCfydbaYSEaXaCfydbgQcdtfydbgCcu9hmbaXaYcdtfydbhCkagaQc8S2fgAIdwa8KaCcx2fgeIdwg8WNaAIdzaeIdbg8XNaAIdaMgRaRMMa8WNaAIdlaeIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaCaa2g8AcdtfhOa8RaQaa2g8JcltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbkaR:lgRa81aRa819DEaRa9qEh8Sdndna8MmbJbbbbhRxekagaCc8S2fgAIdwa8KaQcx2fgeIdwg8WNaAIdzaeIdbg8XNaAIdaMgRaRMMa8WNaAIdlaeIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Pa8JcdtfhOa8Ra8AcltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbkaR:lgRa81aRa819DEaRa9qEhRka80a8SMh80aBaRMhBxdkaXaCfydbgCaLSmbaHaYcdtfydbh8Aindndna8EaCcdtgQfydbgecuSmbaHaecdtfydba8ASmekdna8FaQfydbgecuSmbaHaecdtfydba8ASmekaYhekagaCc8S2fgAIdwa8Kaecx2fgOIdwg8WNaAIdzaOIdbg8XNaAIdaMgRaRMMa8WNaAIdlaOIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Paeaa2cdtfhOa8RaCaa2cltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbka80aR:lgRa81aRa819DEaRa9qEMh80aXaQfydbgCaL9hmbkkdna5aYfRbbgeciSmbaecl9hmeka8MTmbaXaYcdtfydbgCaYSmbindndna8EaCcdtgQfydbgecuSmbaHaecdtfydba8JSmekdna8FaQfydbgecuSmbaHaecdtfydba8JSmekaLhekagaCc8S2fgAIdwa8Kaecx2fgOIdwg8WNaAIdzaOIdbg8XNaAIdaMgRaRMMa8WNaAIdlaOIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Paeaa2cdtfhOa8RaCaa2cltfheaAIdyh81aahAinaOIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaOclfhOaeczfheaAcufgAmbkaBaR:lgRa81aRa819DEaRa9qEMhBaXaQfydbgCaY9hmbkkahaBa80aBa809DgeEUdwahaLaYaea8Mcb9hGgeEBdlahaYaLaeEBdbaDcefgDa39hmbkascjdfcbcj;qbz:xjjjb8Aa9shea3hOinascjdfaeydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbcefBdbaecxfheaOcufgOmbkcbhecbhOinascjdfaefgAydbhCaAaOBdbaCaOfhOaeclfgecj;qb9hmbkcbhea9shOinascjdfaOydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbgAcefBdba9maAcdtfaeBdbaOcxfhOa3aecefge9hmbkadak9RgAci9Uh9udnalTmbcbhea9nhOinaOaeBdbaOclfhOalaecefge9hmbkkcbh9va9ocbalz:xjjjbh9caAcO9Uh9wa9uce4h9tcbh8Lcbh8Mdnina0a9ma8Mcdtfydbcx2fg8JIdwgRa879Emea8La9u9pmeJFFuuh8Vdna9ta39pmba0a9ma9tcdtfydbcx2fIdwJbb;aZNh8VkdnaRa8V9ETmbaRaU9ETmba8La9w0mdkdna9caHa8JydlgDcdtg9xfg8AydbgAfg9yRbba9caHa8Jydbghcdtg9zfydbgefg9ARbbVmba5ahfRbbh9BdndnaKaecdtfgOclfydbgCaOydbgOSmbaCaO9RhCa8KaAcx2fhLa8Kaecx2fhYaEaOcitfheindna9naeydbcdtfydbgOaASmba9naeclfydbcdtfydbgQaASmbaOaQSmba8KaQcx2fgQIdba8KaOcx2fgOIdbg8W:tgRaYIdlaOIdlg8X:tg80NaQIdla8X:tg8VaYIdba8W:tgBN:tg8YaRaLIdla8X:tg8SNa8VaLIdba8W:tg8UN:tg8XNa8VaYIdwaOIdwg81:tg8ZNaQIdwa81:tg8Wa80N:tg80a8VaLIdwa81:tg83Na8Wa8SN:tg8VNa8WaBNaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9FmikaecwfheaCcufgCmbkkdndna9Bc99fcFeGce0mba9na9zfaDBdbaXa9zfydbgeahSmeina8AydbhAdndna8EaecdtgOfydbgecuSmbaHaecdtfydbaASmekdna8FaOfydbgecuSmbaHaecdtfydbaASmekaDheka9naOfaeBdbaXaOfydbgeah9hmbxdkkdndna9BcFeGcdSmbaDhexekdna8Fa8Ea8Ea9zfydbaDSEaXa9zfydbghcdtfydbgecu9hmbaXa9xfydbheka9na9zfaDBdbka9nahcdtfaeBdbka9Ace86bba9yce86bba8JIdwgRaUaUaR9DEhUa9vcefh9vcecda9BcFeGceSEa8Lfh8Lxeka9tcefh9tka8Mcefg8Ma39hmbkka9vTmddnalTmbcbhLcbhhindna9nahcdtgefydbgAahSmbaHaAcdtfydbh8AdnahaHaefydb9hg8JmbaIa8Ac8S2fgeaIahc8S2fgOIdbaeIdbMUdbaeaOIdlaeIdlMUdlaeaOIdwaeIdwMUdwaeaOIdxaeIdxMUdxaeaOIdzaeIdzMUdzaeaOIdCaeIdCMUdCaeaOIdKaeIdKMUdKaeaOId3aeId3MUd3aeaOIdaaeIdaMUdaaeaOId8KaeId8KMUd8KaeaOIdyaeIdyMUdya8NTmba8Na8Acltfgea8NahcltfgOIdbaeIdbMUdbaeaOIdlaeIdlMUdlaeaOIdwaeIdwMUdwaeaOIdxaeIdxMUdxkaaTmbagaAc8S2fgeagahc8S2g8MfgOIdbaeIdbMUdbaeaOIdlaeIdlMUdlaeaOIdwaeIdwMUdwaeaOIdxaeIdxMUdxaeaOIdzaeIdzMUdzaeaOIdCaeIdCMUdCaeaOIdKaeIdKMUdKaeaOId3aeId3MUd3aeaOIdaaeIdaMUdaaeaOId8KaeId8KMUd8KaeaOIdyaeIdyMUdya9raA2hYa8RhOaahCinaOaYfgeaOaLfgAIdbaeIdbMUdbaeclfgQaAclfIdbaQIdbMUdbaecwfgQaAcwfIdbaQIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaOczfhOaCcufgCmbka8JmbJbbbbJbbjZaIa8MfgeIdygR:vaRJbbbb9BEaeIdwa8Ka8Acx2fgOIdwgRNaeIdzaOIdbg8VNaeIdaMg8Wa8WMMaRNaeIdlaOIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8VNaeIdxa8WNaeIdKMgRaRMMa8VNaeId8KMMM:lNgRa85a85aR9DEh85kaLa9rfhLahcefghal9hmbkcbhOa8EheindnaeydbgAcuSmbdnaOa9naAcdtgCfydbgA9hmbcuhAa8EaCfydbgCcuSmba9naCcdtfydbhAkaeaABdbkaeclfhealaOcefgO9hmbkcbhOa8FheindnaeydbgAcuSmbdnaOa9naAcdtgCfydbgA9hmbcuhAa8FaCfydbgCcuSmba9naCcdtfydbhAkaeaABdbkaeclfhealaOcefgO9hmbkka85aUaaEh85cbhOabhecbhAindnaHa9naeydbcdtfydbgLcdtfydbgCaHa9naeclfydbcdtfydbgYcdtfydbgQSmbaCaHa9naecwfydbcdtfydbg8AcdtfydbghSmbaQahSmbabaOcdtfgCaLBdbaCcwfa8ABdbaCclfaYBdbaOcifhOkaecxfheaAcifgAad6mbkdndnaSmbaOhdxekdnaOak0mbaOhdxekdna86a859FmbaOhdxekJFFuuh86cbhdabhecbhAindna9ia6aeydbgCcdtfydbcdtfIdbgRa859ETmbaeclf8Pdbh9CabadcdtfgQaCBdbaQclfa9C83dbaRa86a86aR9EEh86adcifhdkaecxfheaAcifgAaO6mbkkadak0mbxdkkascNefabadalaHz:cjjjbkdndnadak0mbadhYxekdnaSmbadhYxekdna86a879FmbadhYxekcehQina86Jbb;aZNgRa87aRa879DEh8WJbbbbhRdna9hTmba9ihea9hhOinaeIdbg8VaRa8Va8W9FEaRa8VaR9EEhRaeclfheaOcufgOmbkkJFFuuh86cbhYabhecbhOindna9ia6aeydbgAcdtfydbcdtfIdbg8Va8W9ETmbaeclf8Pdbh9CabaYcdtfgCaABdbaCclfa9C83dba8Va86a86a8V9EEh86aYcifhYkaecxfheaOcifgOad6mbkdnaQaYad9hVceGmbadhYxdkaRaUaUaR9DEhUaYak9nmecbhQaYhda86a879FmbkkdnamcjjjjdGTmba9ocbalz:xjjjbh8AdnaYTmbabheaYhOina8AaeydbgAfce86bba8AaHaAcdtfydbfce86bbaeclfheaOcufgOmbkkascNefabaYalaHz:cjjjbdndnalTmbcbhCindna8AaCfRbbTmbdna5aCfRbbPlbeebekdnaHaCcdtgLfydbgeaCSmba8KaCcx2fgOa8Kaecx2fgeydwBdwaOae8Pdb83dbxekaIaCc8S2fgQIdygnanJL:3;rUNgRMh87aQIdwgxaRMh8SaQIdlg9DaRMh8UaQIdbg9EaRMh81aQIdag9FaRa8KaCcx2fg8JIdwg88N:th8ZaQId3g9GaRa8JIdlg89N:th83aQIdKg9Ha8JIdbg8:aRN:th80JbbbbhZaQIdCg9IJbbbbMh85aQIdzg9JJbbbbMhBaQIdxg9KJbbbbMh86dndnaaTmbaChAinJbbbba87agaAc8S2fgOIdygR:vaRJbbbb9BEhRa8RaAaa2cltfheaOIdaa87Na8ZMh8ZaOId3a87Na83Mh83aOIdKa87Na80Mh80aOIdCa87Na85Mh85aOIdza87NaBMhBaOIdxa87Na86Mh86aOIdwa87Na8SMh8SaOIdla87Na8UMh8UaOIdba87Na81Mh81aahOina8ZaecwfIdbg8VaecxfIdbg8YNaRN:th8Za83aeclfIdbg8Wa8YNaRN:th83a85a8Wa8VNaRN:th85a81aeIdbg8Xa8XNaRN:th81a80a8Xa8YNaRN:th80aBa8Xa8VNaRN:thBa86a8Xa8WNaRN:th86a8Sa8Va8VNaRN:th8Sa8Ua8Wa8WNaRN:th8UaeczfheaOcufgOmbkaXaAcdtfydbgAaC9hmbka8NTmba8NaCcltfgeIdxhTaeIdwhcaeIdlhJaeIdbhRxekJbbbbhTJbbbbhcJbbbbhJJbbbbhRkaBa81:vg8Wa80Na8Z:ta85aBa86a81:vg8VN:tg8Za8Ua86a8VN:tg8Y:vg8Xa8Va80Na83:tg8UN:th83acaRa8WN:taJaRa8VN:tg86a8XN:tg85a8SaBa8WN:ta8Za8XN:tgB:vg8S:mh8Za86a8Y:vgc:mhJdnJbbbbaRaRa81:vg9eN:ta86acN:ta85a8SN:tg86:la87J:983:g81NgR9ETmba8Za83NaJa8UNa9ea80NaT:tMMa86:vhZka81:laR9ETmba8Y:laR9ETmbaB:laR9ETmba9e:maZNa8W:ma8ZaZNa83aB:vMgBNa8V:maJaZNa8X:maBNa8Ua8Y:vMMg85Na80:ma81:vMMMh87aKaLfgeclfydbgOaeydbge9RhhaEaecitfhLJbbbbhRdnaOaeSg8MmbJbbbbhRaLheahhAina8Kaeclfydbcx2fgOIdwa88:tg8Va8VNaOIdba8::tg8Va8VNaOIdla89:tg8Va8VNMMg8Va8Kaeydbcx2fgOIdwa88:tg8Wa8WNaOIdba8::tg8Wa8WNaOIdla89:tg8Wa8WNMMg8WaRaRa8W9DEgRaRa8V9DEhRaecwfheaAcufgAmbkaR:rgRaRNhRkaBa88:tg8Va8VNa87a8::tg8Va8VNa85a89:tg8Va8VNMMaR9EmbaQId8KhZdna8Mmbina8KaLclfydbcx2fgeIdba8KaLydbcx2fgOIdbg8W:tgRa89aOIdlg8X:tg80NaeIdla8X:tg8Va8:a8W:tg86N:tg8YaRa85a8X:tg8SNa8Va87a8W:tg8UN:tg8XNa8Va88aOIdwg81:tg8ZNaeIdwa81:tg8Wa80N:tg80a8VaBa81:tg83Na8Wa8SN:tg8VNa8Wa86NaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9FmdaLcwfhLahcufghmbkkJbbbbJbbjZan:vanJbbbb9BEgRaxaBNa9Ja87Na9FMg8Va8VMMaBNa9Da85Na9IaBNa9GMg8Va8VMMa85Na9Ea87Na9Ka85Na9HMg8Va8VMMa87NaZMMM:lNaRaxa88Na9Ja8:Na9FMg8Va8VMMa88Na9Da89Na9Ia88Na9GMg8Va8VMMa89Na9Ea8:Na9Ka89Na9HMg8Va8VMMa8:NaZMMM:lNJbb;aZNJ:983:g81M9Emba8JaBUdwa8Ja85Udla8Ja87UdbkaCcefgCal9hmbkdnaambcbhaxdkcbhQindna8AaQfRbbTmbaHaQcdtgefydbaQ9hmba5aQfhhaXaefh8Ja8KaQcx2fhAa8PaQaa2cdtfh8McbhEincuhCdnahRbbc99fcFeGce0mbaQhCa8JydbgeaQSmba8PaEcdtgOfhLa8MaOfIdbhRaQhCinaChOcuhCdnaLaeaa2cdtfIdbaR9CmbaOcuSmbaOhCagaec8S2fIdyagaOc8S2fIdy9ETmbaehCkaXaecdtfydbgeaQ9hmbkka8PaEcdtfhLa8RaEcltfhKaQheinaLaeaa2cdtfJbbbbJbbjZagaeaCaCcuSEgOc8S2fIdygR:vaRJbbbb9BEaKaOaa2cltfgOIdwaAIdwNaOIdbaAIdbNaOIdlaAIdlNMMaOIdxMNUdbaXaecdtfydbgeaQ9hmbkaEcefgEaa9hmbkkaQcefgQal9hmbxdkkaambcbhakaiavaoarawaaala8Ka8Pazasayasc1efa5a8Aaqz:hjjjbkdnamcjjjjlGTmbazmbaYTmbabhecbhLina5aeydbgAfRbbc3thQaecwfgXydbhHcjjjj94hCdna8EaAcdtgEfydbaeclfgKydbgOSmbcjjjj94cba8FaOcdtfydbaASEhCkaeaQaCVaAVBdba5aOfRbbc3thacjjjj94hCcjjjj94hQdna8EaOcdtfydbaHSmbcjjjj94cba8FaHcdtfydbaOSEhQkaKaaaQVaOVBdba5aHfRbbc3thOdna8EaHcdtfydbaASmbcjjjj94cba8FaEfydbaHSEhCkaXaOaCVaHVBdbaecxfheaLcifgLaY6mbkkdnazTmbaYTmbaYheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa9paU:rNUdbkdnasyd;8egHTmbaHcdtasc:Ceffc98fheinaeydbcbyd;C:L:cjbH:bjjjbbaec98fheaHcufgHmbkkascj;sbf8KjjjjbaYk;Yieouabydlhvabydbclfcbaicdtz:xjjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd;y:L:cjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:xjjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd;C:L:cjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkabclfhbawclfhwaiaDcefgD9hmbkkk;:odvuv998Jjjjjbca9Rgocbyd1:G:cjbBdKaocb8Pdj:G:cjb83izaocbydN:G:cjbBdwaocb8Pd:m:G:cjb83ibdnadTmbaicd4hrdnabmbdnalTmbcbhwinaealawcdtfydbar2cdtfhDcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxikkarcdthwcbhDincbhiinaoczfaifgqaeaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaeawfheaDcefgDad9hmbxdkkdnalTmbcbhwinabawcx2fgiaealawcdtfydbar2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxdkkarcdthlcbhwaehDinabawcx2fgiaeawar2cdtfgqIdbUdbaiaqIdlUdlaiaqIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaDalfhDawcefgwad9hmbkkJbbbbaoIdbaoIdzgx:tgkakJbbbb9DEgkaoIdlaoIdCgm:tgPaPak9DEgkaoIdwaoIdKgP:tgsasak9DEhsdnabTmbadTmbJbbbbJbbjZas:vasJbbbb9BEhkinabakabIdbax:tNUdbabclfgoakaoIdbam:tNUdbabcwfgoakaoIdbaP:tNUdbabcxfhbadcufgdmbkkdnavTmbavaPUdwavamUdlavaxUdbkask:WlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvyd:G:G:cjbcdtfydbcdtfydbhodnalawavfydbcdtfydbgqabaqcdtfgkydbgvSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnaoabaocdtfgkydbgvSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnaxabavfgDydbgvSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhkabhvcbhoindndnaoalydbgq9hmbdnaoavydbgq9hmbavakBdbakcefhkxdkavabaqcdtfydbBdbxekavabaqcdtfydbBdbkalclfhlavclfhvaeaocefgo9hmbkakk;jiilud99euabcbaecltz:xjjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakaqakIdlMUdlakaDakIdwMUdwakakIdxJbbjZMUdxaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhkaehrinakcxfgoIdbhDaocbBdbakakIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbakclfgoaDaoIdbNUdbakcwfgoaDaoIdbNUdbakczfhkarcufgrmbkkdnalTmbinavadydbcltfgkaicwfIdbakIdw:tgDaDNaiIdbakIdb:tgDaDNaiclfIdbakIdl:tgDaDNMMgDakIdxgqaqaD9DEUdxadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhkinabakIdbUdbakczfhkabclfhbaecufgembkkk:moerudnaoTmbaecd4hzdnavTmbaicd4hHavcdthOcbhAindnaPaAfRbbTmbaAhednaDTmbaDaAcdtfydbhekdnasTmbasaefRbbceGmekdnamaAfRbbcvSmbabaeaz2cdtfgiaraAcx2fgCIdbakNaxIdbMUdbaiaCIdlakNaxIdlMUdlaiaCIdwakNaxIdwMUdwkadaeaH2cdtfhXaqheawhiavhCinaXaeydbcdtgQfaiIdbalaQfIdb:vUdbaeclfheaiclfhiaCcufgCmbkkawaOfhwaAcefgAao9hmbxdkkdnasmbcbheaDhiindnaPaefRbbTmbaehCdnaDTmbaiydbhCkamaefRbbcvSmbabaCaz2cdtfgCarIdbakNaxIdbMUdbaCarclfIdbakNaxIdlMUdlaCarcwfIdbakNaxIdwMUdwkaiclfhiarcxfhraoaecefge9hmbxdkkdnaDTmbindnaPRbbTmbasaDydbgefRbbceGmbamRbbcvSmbabaeaz2cdtfgearIdbakNaxIdbMUdbaearclfIdbakNaxIdlMUdlaearcwfIdbakNaxIdwMUdwkaPcefhPaDclfhDamcefhmarcxfhraocufgombxdkkazcdthicbheindnaPaefRbbTmbasaefRbbceGmbamaefRbbcvSmbabarIdbakNaxIdbMUdbabclfarclfIdbakNaxIdlMUdbabcwfarcwfIdbakNaxIdwMUdbkarcxfhrabaifhbaoaecefge9hmbkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbkRbababaeadaialavaoarawaDaqakaxcjjjjdVamz:bjjjbk:vgoque99due99duq998Jjjjjbc;Wb9Rgq8Kjjjjbcbhkaqcxfcbc;Kbz:xjjjb8Aaqcualcx2alc;v:Q;v:Qe0Ecbyd;y:L:cjbHjjjjbbgxBdxaqceBd2axaialavcbcbz:ejjjb8AaqcualcdtalcFFFFi0Egmcbyd;y:L:cjbHjjjjbbgiBdzaqcdBd2dndnJFF959eJbbjZawJbbjZawJbbjZ9DE:vawJ9VO:d869DEgw:lJbbb9p9DTmbaw:OhPxekcjjjj94hPkadci9Uhsarco9UhzdndnaombaPcd9imekdnalTmbaPcuf:YhwdnaoTmbcbhvaihHaxhOindndnaoavfRbbceGTmbavcjjjjlVhAxekdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHaOcxfhOalavcefgv9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkadTmbcbhkaehvcbhOinakaiavclfydbcdtfydbgHaiavcwfydbcdtfydbgA9haiavydbcdtfydbgXaH9haXaA9hGGfhkavcxfhvaOcifgOad6mbkkarci9UhQdndnaz:Z:rJbbbZMgw:lJbbb9p9DTmbaw:Ohvxekcjjjj94hvkaQ:ZhLcbhKc:bwhzdninakaQ9pmeazaP9Rcd9imeavazcufgOavaO9iEaPcefavaP9kEhYdnalTmbaYcuf:YhwdnaoTmbcbhOaihHaxhvindndnaoaOfRbbceGTmbaOcjjjjlVhAxekdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHavcxfhvalaOcefgO9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkcbhOdnadTmbaehvcbhHinaOaiavclfydbcdtfydbgAaiavcwfydbcdtfydbgX9haiavydbcdtfydbgraA9haraX9hGGfhOavcxfhvaHcifgHad6mbkkdnas:ZgCaL:taY:Ygwaz:Y:tg8ANak:ZgEaO:Zg3:tNaEaL:tawaP:Y:tg5Na3aC:tNMg8EJbbbb9BmbaCaE:ta5a8Aa3aL:tNNNa8E:vawMhwkdndnaOaQ0mbaOhkaYhPxekaOhsaYhzkdndnaKcl0mbdnawJbbbZMgw:lJbbb9p9DTmbaw:Ohvxdkcjjjj94hvxekaPazfcd9ThvkaKcefgKcs9hmbkkdndndnakmbJbbjZhwcbhOcdhvaDmexdkalcd4alfhHcehOinaOgvcethOavaH6mbkaqcuavcdtavcFFFFi0Ecbyd;y:L:cjbHjjjjbbgYBdCaqciBd2aqamcbyd;y:L:cjbHjjjjbbgzBdKaqclBd2dnalTmbaPcuf:YhwdnaoTmbcbhOaihAaxhHindndnaoaOfRbbceGTmbaOcjjjjlVhXxekdndnaHclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqthXdndnaHcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarVhXdndnaHIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarcCtVhXkaAaXBdbaAclfhAaHcxfhHalaOcefgO9hmbxdkkaxhOaihHalhAindndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcCthXdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkarcqtaXVhXdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaHaXarVBdbaOcxfhOaHclfhHaAcufgAmbkkaqcuaYavazaialz:mjjjbgXc8S2gvaXc;D;O;f8U0Ecbyd;y:L:cjbHjjjjbbgiBd3aqcvBd2aicbavz:xjjjbhOdnadTmbcbhraehiinaxaiclfydbgocx2fgvIdbaxaiydbgPcx2fgHIdbg3:tgCaxaicwfydbgYcx2fgAIdlaHIdlg8A:tgwNavIdla8A:tgEaAIdba3:tg8EN:tgLaLNaEaAIdwaHIdwg5:tg8FNavIdwa5:tgEawN:tgwawNaEa8ENaCa8FN:tgCaCNMMg8E:rhEJbbnnJbbjZazaPcdtfydbgvazaocdtfydbgASavazaYcdtfydbgoSGgHEh8Fdna8EJbbbb9ETmbaLaE:vhLaCaE:vhCawaE:vhwkaOavc8S2fgvavIdbawa8FaE:rNgEawNNg8FMUdbavaCaEaCNgaNghavIdlMUdlavaLaEaLNg8ENggavIdwMUdwavawaaNgaavIdxMUdxava8EawNg8JavIdzMUdzavaCa8ENg8EavIdCMUdCavawaEaLa5Nawa3Na8AaCNMM:mg8ANg3NgwavIdKMUdKavaCa3NgCavId3MUd3avaLa3NgLavIdaMUdaava3a8ANg3avId8KMUd8KavaEavIdyMUdydnaHmbaOaAc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdyaOaoc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdykaicxfhiarcifgrad6mbkkcbhAaqcuaXcdtgvaXcFFFFi0Egicbyd;y:L:cjbHjjjjbbgHBdaaqcoBd2aqaicbyd;y:L:cjbHjjjjbbgiBd8KaqcrBd2aHcFeavz:xjjjbhPdnalTmbazhHinJbbbbJbbjZaOaHydbgrc8S2fgvIdygw:vawJbbbb9BEavIdwaxcwfIdbgwNavIdzaxIdbgCNavIdaMgLaLMMawNavIdlaxclfIdbgLNavIdCawNavId3MgwawMMaLNavIdbaCNavIdxaLNavIdKMgwawMMaCNavId8KMMM:lNhwdndnaParcdtgvfgrydbcuSmbaiavfIdbaw9ETmekaraABdbaiavfawUdbkaHclfhHaxcxfhxalaAcefgA9hmbkkdndnaXmbJbbbbhwxekJbbbbhwinaiIdbgCawawaC9DEhwaiclfhiaXcufgXmbkaw:rhwkakcd4akfhOcehiinaigvcethiavaO6mbkcbhOaqcuavcdtgiavcFFFFi0Ecbyd;y:L:cjbHjjjjbbgHBdyaHcFeaiz:xjjjbhXdnadTmbavcufhrcbhkcbhxindnazaeaxcdtfgvydbcdtfydbgiazavclfydbcdtfydbgOSmbaiazavcwfydbcdtfydbgvSmbaOavSmbaPavcdtfydbhAdndnaPaOcdtfydbgvaPaicdtfydbgi9pmbavaA9pmbaAhlaihoavhAxekdnaAai9pmbaAav9pmbaihlavhoxekavhlaAhoaihAkabakcx2fgvaABdbavcwfaoBdbavclfalBdbdnaXaoc:3F;N8N2alc:F:b:DD27aAc;D;O:B8J27arGgOcdtfgvydbgicuSmbcehHinaHhvdnabaicx2fgiydbaA9hmbaiydlal9hmbaiydwaoSmikavcefhHaXaOavfarGgOcdtfgvydbgicu9hmbkkavakBdbakcefhkkaxcifgxad6mbkakci2hOkcwhvaDTmekaDawUdbkavcdthvaqcxfc98fhiinaiavfydbcbyd;C:L:cjbH:bjjjbbavc98fgvmbkaqc;Wbf8KjjjjbaOk:0iewuabcFeaecdtz:xjjjbhbdnalmbcbskaecufhvdndnaiTmbcbhocbhrindndndnabaiarcdtgwfydbgDcm4aD7c:v;t;h;Ev2gecs4ae7avGgqcdtfgkydbgxcuSmbceheinaiaxcdtgxfydbaDSmdaqaefhxaecefheabaxavGgqcdtfgkydbgxcu9hmbkkakarBdbaoheaocefhoxekadaxfydbhekadawfaeBdbarcefgral9hmbxdkkcbhocbhDindnabaDcm4aD7c:v;t;h;Ev2gecs4ae7avGgqcdtfgkydbgxcuSmbaxaDSmbceheinabaqaefavGgqcdtfgkydbgxcuSmeaecefheaxaD9hmbkkdndnaxcu9hmbakaDBdbaoheaocefhoxekadaxcdtfydbhekadaDcdtfaeBdbaDcefgDal9hmbkkaok:3ldrue9:8Jjjjjbc;Wb9Rgr8Kjjjjbcbhwarcxfcbc;Kbz:xjjjb8AdnabaeSmbabaeadcdtz:wjjjb8AkarcualcdtalcFFFFi0EgDcbyd;y:L:cjbHjjjjbbgqBdxarceBd2aqcbaialavcbarcxfz:djjjbcualcx2alc;v:Q;v:Qe0Ecbyd;y:L:cjbHjjjjbbhkarcxfaryd2gxcdtfakBdbaraxcefgmBd2akaialavcbcbz:ejjjb8AarcxfamcdtfaDcbyd;y:L:cjbHjjjjbbgiBdbaraxcdfgvBd2arcxfavcdtfcuaialaeadaqz:fjjjbgecltaecjjjjiGEcbyd;y:L:cjbHjjjjbbgqBdbaqaeaiakalz:gjjjbaxcifhkdnadTmbaoaoNhocbhwabhlcbheindnaqaialydbgvcdtfydbcdtfIdbao9ETmbalclf8PdbhPabawcdtfgDavBdbaDclfaP83dbawcifhwkalcxfhlaecifgead6mbkkdnakTmbaxcdtarcxffcwfhlinalydbcbyd;C:L:cjbH:bjjjbbalc98fhlakcufgkmbkkarc;Wbf8Kjjjjbawk;lOoDud99oue99vuv998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:xjjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd;y:L:cjbHjjjjbbgqBdxawceBd2aqaeadaicbcbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd;y:L:cjbHjjjjbbgxBdzawcdBd2adcd4adfhecehiinaigmcethiamae6mbkcbhPawcuamcdtgsamcFFFFi0Ecbyd;y:L:cjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohixekcjjjj94hikamcufhAc:bwhCcbhXadhQcbhLinaiaCcufgeaiae9iEaPcefaiaP9kEhDdndnadTmbaDcuf:YhOaqhiaxheadhKindndnaiIdbaONJbbbZMgY:lJbbb9p9DTmbaY:Oh8Axekcjjjj94h8Aka8AcCth8AdndnaiclfIdbaONJbbbZMgY:lJbbb9p9DTmbaY:OhExekcjjjj94hEkaEcqta8AVh8AdndnaicwfIdbaONJbbbZMgY:lJbbb9p9DTmbaY:OhExekcjjjj94hEkaea8AaEVBdbaicxfhiaeclfheaKcufgKmbkazcFeasz:xjjjbh3cbh5cbh8Eindna3axa8Ecdtfydbg8Acm4a8A7c:v;t;h;Ev2gics4ai7aAGgKcdtfgEydbgecuSmbaea8ASmbcehiina3aKaifaAGgKcdtfgEydbgecuSmeaicefhiaea8A9hmbkkaEa8ABdba5aecuSfh5a8Ecefg8Ead9hmbxdkkazcFeasz:xjjjb8Acbh5kdnaQ:ZgYaH:taD:YgOaC:Y:tg8FNaX:Zgaa5:Zgh:tNaaaH:taOaP:Y:tggNahaY:tNMg8JJbbbb9BmbaYaa:taga8FahaH:tNNNa8J:vaOMhOkaPaDa5ar0geEhPaXa5aeEhXdna5arSmbaDaCaeEgCaP9Rcd9imbdndnaLcl0mbdnaOJbbbZMgO:lJbbb9p9DTmbaO:Ohixdkcjjjj94hixekaPaCfcd9Thika5aQaeEhQaLcefgLcs9hmekkdndnaXmbcihicbhDxekawakcbyd;y:L:cjbHjjjjbbg8ABdKawclBd2aPcuf:YhYdnadTmbaqhiaxheadhKindndnaiIdbaYNJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcCthEdndnaiclfIdbaYNJbbbZMgO:lJbbb9p9DTmbaO:Oh3xekcjjjj94h3ka3cqtaEVhEdndnaicwfIdbaYNJbbbZMgO:lJbbb9p9DTmbaO:Oh3xekcjjjj94h3kaeaEa3VBdbaicxfhiaeclfheaKcufgKmbkkawcuazama8Aaxadz:mjjjbgDc32giaDc;j:KM;jb0Ecbyd;y:L:cjbHjjjjbbgeBd3awcvBd2aecbaiz:xjjjbh3avcd4hxdnadTmbdnalTmbaxcdth8Ea8AhEaqhealhKadhAina3aEydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaKIdbaiIdxMUdxaiaKclfIdbaiIdzMUdzaiaKcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaEclfhEaecxfheaKa8EfhKaAcufgAmbxdkka8AhKaqheadhEina3aKydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKaKclfhKaecxfheaEcufgEmbkkdnaDTmba3hiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgKaOaKIdbNUdbaicwfgKaOaKIdbNUdbaicxfgKaOaKIdbNUdbaiczfgKaOaKIdbNUdbaicCfgKaOaKIdbNUdbaic3fhiaecufgembkkcbhEawcuaDcdtgCaDcFFFFi0Egicbyd;y:L:cjbHjjjjbbgeBdaawcoBd2awaicbyd;y:L:cjbHjjjjbbg8EBd8KaecFeaCz:xjjjbh5dnadTmbaoJbbjZJbbjZaY:vaPceSENgOaONhYaxcdthxalheinaYaecN:H:cjbalEgKIdwa3a8AydbgAc32fgiIdC:tgOaONaKIdbaiIdx:tgOaONaKIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna5aAcdtgifgKydbcuSmba8EaifIdbaO9ETmekaKaEBdba8EaifaOUdbka8Aclfh8AaqcxfhqaeaxfheadaEcefgE9hmbkkaba5aCz:wjjjb8Acrhikaicdthiawcxfc98fheinaeaifydbcbyd;C:L:cjbH:bjjjbbaic98fgimbkkawc;Wbf8KjjjjbaDk:Pdidui99ducbhi8Jjjjjbca9Rglcbyd1:G:cjbBdKalcb8Pdj:G:cjb83izalcbydN:G:cjbBdwalcb8Pd:m:G:cjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk:H8Modui99lud99Aus998Jjjjjbcji9RgD8KjjjjbcbhqaDcxfcbc;Kbz:xjjjb8AaDcbBdwaD9cb83ibaDcbyd;i:L:cjbBd1eaDcb8Pd;a:L:cjb83ijeaDcbyd;u:L:cjbBd94aDcb8Pd;m:L:cjb83i9WdndnavmbJbbjFhkJbbjFhxJbbjFhmxekaocd4cdthPalhsincbhzinaDcjefazfgHasazfIdbgkaHIdbgxaxak9EEUdbaDc;WbfazfgHakaHIdbgxaxak9DEUdbazclfgzcx9hmbkasaPfhsaqcefgqav9hmbkaDId94aDId1e:thmaDIdtaDId:ee:thxaDId9WaDIdje:thkkJbbbbhOdnar:YgAJq;x8J88MaA:vJbbbbakakJbbbb9DEgkaxaxak9DEgkamamak9DENgxJbbbb9Bmbarc9:f:Yax:vhOkaDcCfhCaDcxfcxfhXcbhzinaDazfaDcjefazfIdbgkaxaDc;WbfazfIdbak:t:tJbbb:;NMUdbazclfgzcx9hmbkcbhQaDarar2gLar2gzcbyd;y:L:cjbHjjjjbbgHBdxaDceBd2aHcbazz:xjjjbgKcbcbadaialaoaraOaDawz:rjjjbcdhYaDcuaLcdtaLcFFFFi0Eg8Acbyd;y:L:cjbHjjjjbbgEBdzaDcdBd2aDcjefcbarz:xjjjb8Acbh3dnaLTmbdnarcb9kmbaKhzaEhHaLhsincbh3aHcbcuazaDcjefarz:AjjjbEBdbazarfhzaHclfhHascufgsmbxdkkaKhPcbh3cbhvindndnaKavar2faDcjefarz:AjjjbTmbcbhHaPhzarhsinazaHazRbbgqfgHcbaqE86bbazcefhzascufgsmbkaEavcdtfa3BdbaHa3fh3xekaEavcdtfcuBdbkaParfhPavcefgvaL9hmbkkdnabTmbaDcua3cotgza3cFFF8F0Ecbyd;y:L:cjbHjjjjbbgQBdCcihYaDciBd2aQcbazz:xjjjb8AaXhCkdnawceGmbaCa8Acbyd;y:L:cjbHjjjjbbg5BdbaDaYcefgzBd2aDcxfazcdtfaLcbyd;y:L:cjbHjjjjbbgzBdbaDaYcdfgYBd2azcbaLz:xjjjbh8EarcufhXdnarci9imbarc9:fhCararcef2aKfcefh8Aceh8Fina8Far2hPa8AhvcehqindnaEaqaPfcdtfydbcuSmbavhzaChHinazazRbbgscuasE86bbazcefhzaHcufgHmbkkavarfhvaqcefgqaX9hmbka8AaLfh8Aa8Fcefg8FaX9hmbkkarce9imbcbh8Acbhqcbhvina8EaqfhscbhzindnasazfgHRbbmbaHce86bba5a8AcdtfaqazfBdba8Acefh8Akarazcefgz9hmbkaqarfhqavcefgvar9hmbka8ATmbaKcefhaaKc9:fhharc9:fhgarci9ih8Jina8Ea5a8Acufg8Acdtfydbgvfcb86bbavar2hPdna8JmbaEavcdtfydbcuSmbaKaPfhHaghqindnaHcefgzRbbgscFe9hmbaHRbbmbcbhskazas86bbazhHaqcufgqmbkaharavcef2fhzaXhsindnazRbbgHcFe9hmbazcefRbbmbcbhHkazaH86bbazcufhzascufgsce9kmbkkaaaPfh8Kavavar9Ug8Lar29Rh8FcbhCindnaCceScuaCEa8Ffgzce9imbazaX9ombcuaCciSaCcdSEa8LfgHce9imbaHaX9ombaEaHar2azfg8McdtfydbcuSmba8Jmbaaa8Mar2fhzcbhqa8KhsaghvinazazRbbgHcbaHaHcFeSEasRbbEgP86bbascefhsazcefhzaPaH7aqVhqavcufgvmbkaqcFeGTmba8Ea8MfgzRbbmbazce86bba5a8Acdtfa8MBdba8Acefh8AkaCcefgCcl9hmbka8AmbkkdnaQTmbaKaEaQadaialaoaraOaDawz:rjjjba3TmbJbbjZaO:vhkawcjjjjlGhPdnawcdGTmbJbbnnaOaON:vh8NakJbbbZNhyaQhzinazczfgsIdbg8PazcCfIdbgx:vhmazcxfgqIdbgIax:vhAazcwfgvIdbg8Rax:vh8SakazydbgHcFrG:ZNhRakaHcq4cFrG:ZNh8UakaHcC4cFrG:ZNh8VdnaxJ:p;c;188Ng8WazcKfIdbMg8X:laxJ:983:g81Ngx9ETmba8Wazc3fIdbMazc8KfIdbg8Ya8Ya8X:vg8YN:tg8Z:lax9ETmba8WazcafIdbMazcyfIdbg8Wa8Wa8X:vg80N:tazc8SfIdba8Wa8YN:tg8Wa8Wa8Z:vg8WN:tg81:lax9ETmba8PJ:p;c;188NazcUfIdb:ta80a8RJ:p;c;188Nazc8WfIdb:tg8PN:ta8WaIJ:p;c;188Nazc80fIdb:ta8Ya8PN:tgIN:ta81:vgxam:tg8Ra8RNa8Pa8X:va8YaIa8Z:va8WaxN:tg8XN:ta80axN:tg8Wa8S:tg8Ya8YNa8XaA:tg8Ya8YNMMa8N9DTmbaxaRaxaR9EEgxakaRMgmaxam9DEhma8Xa8Ua8Xa8U9EEgxaka8UMgAaxaA9DEhAa8Wa8Va8Wa8V9EEgxaka8VMg8Saxa8S9DEh8SkdnaPTmbayaRMhmaya8UMhAaya8VMh8SkasamUdbaqaAUdbava8SUdbazc;abfhza3cufg3mbxdkkdnaPTmbakJbbbZNhxaQhzinazczfaxakazydbgHcFrG:ZNMUdbazcxfaxakaHcq4cFrG:ZNMUdbazcwfaxakaHcC4cFrG:ZNMUdbazc;abfhza3cufg3mbxdkkaQcCfhzinazc98fgHaHIdbazIdbgk:vUdbazc94fgHaHIdbak:vUdbazctfgHaHIdbak:vUdbazc;abfhza3cufg3mbkkcbhsdndnarcd9imbarcufh3aEarcdtfhadnabmbaKcefg8Mararcefgz2fh8JaKazfhba8MaLfh8Ecbhscbh8Kina8Kar2h8La8Mheabh8Aa8Eh8Fa8Jh5cbhXindnaEaXa8LfgqcdtgzfgHclfydbaHydbGaaazfgzydbGazclfydbGcuSmbclcbaKaqar2fgzarfRbbEazRbbcb9hVczcbazaLfgzRbbEVc;abcbazarfRbbEVhPaehza8AhHa8Fhqa5hva3hQindnaPclcbaHRbbEazRbbcb9hVczcbaqRbbEVc;abcbavRbbEVgPcetVgCTmbaCcFeSmbasaCRb;W;p:cjbfhskazcefhzaHcefhHaqcefhqavcefhvaQcufgQmbkkaearfhea8Aarfh8Aa8Farfh8Fa5arfh5aXcefgXa39hmbka8MaLfh8MabaLfhba8EaLfh8Ea8JaLfh8Ja8Kcefg8Ka39hmbxdkkJbbjZaO:vgkakJk;x8J88NNh8RawcdGh8EaDIdwhkaDIdlhxaDIdbhmcbhscbhPinaPar2h8KcbhvindnaEava8KfgqcdtgzfgHclfydbaHydbGaaazfgzydbGazclfydbGcuSmbcbh8AclcbaKaqar2fgYarfRbbEaYRbbcb9hVczcbaYaLfg8JRbbEVc;abcba8JarfRbbEVh8Lindna8LclcbaYa8Ag8Mcefg8AfgzarfRbbEazRbbcb9hVczcba8Ja8AfgzRbbEVc;abcbazarfRbbEVg8LcetVgCTmbaCcFeSmbcbhqdndndnaCRb;W;n:cjbcufPdebdka8ETmeaCcC2gz8Ve;W:L:cjbcltaz8Ve;Y:L:cjbcsGVh8FaKa8Mfh5cxhzaDcjefhHinaHaQaEa8Faz4gqce4ceGavfaqcd4ceGaPfar2fgXcdtfydbcotfa5aqceGfaXar2fRbbcotfcnfBdbaHclfhHazc98fgzc989hmbkaDydjegzIdyaDyd:megHIdyMaDyd:eegqIdyaDyd1egXIdyMMg8XaqIdwaXIdwMJbbbZNgANazIdUaHIdUMaqIdUaXIdUMMg8WMg8Sa8SMazIdaaHIdaMaqIdaaXIdaMMg8YaqIdzaXIdzMJbbbZNg8SNMa8SNazId8SaHId8SMaqId8SaXId8SMMgRa8SNazId80aHId80MaqId80aXId80MMg8UMg8Sa8SMazId3aHId3MaqId3aXId3MMg8VaqIdxaXIdxMJbbbZNg8SNMa8SNazId8KaHId8KMaqId8KaXId8KMMg8Za8SNazId8WaHId8WMaqId8WaXId8WMMg80Mg8Sa8SMazIdKaHIdKMaqIdKaXIdKMMgyaANMaANazId88aHId88MaqId88aXId88MMg8PMMM:lgIa8RazIdCaHIdCMaqIdCaXIdCMMN9Ea8XazIdwaHIdwMJbbbZNgANa8WMg8Sa8SMa8YazIdzaHIdzMJbbbZNg8SNMa8SNaRa8SNa8UMg8Sa8SMa8VazIdxaHIdxMJbbbZNg8SNMa8SNa8Za8SNa80Mg8Sa8SMayaANMaANa8PMMM:laIJ;d;1UZN9DGhqxekaKa8Mfh8FcbhzcrhHindnaCaz4ceGTmba8FazceGfazce4ceGavfazcd4aPfar2fgqar2fRbbgXcFeSmbaQaEaqcdtfydbcotfaXcotfc9efRbbaH4ceGTmbcbhqxdkaHcufhHcehqazcefgzcw9hmbkkaCcC2aqcq2fgH8Ve;W:L:cjbgzTmbaHc;Y:L:cjbfhqaKa8MfhCabasc8K2fhHindnasae9pmbaHaQaEazcD4ceGavfazcq4ceGaPfar2fgXcdtfydbcotfaCazcw4ceGfaXar2fRbbcotfgXc9ifIdbamMUdbaHclfaXc9mfIdbaxMUdbaHcwfaXc9qfIdbakMUdbaHcxfamaQaEazcv4ceGavfazco4ceGaPfar2fgXcdtfydbcotfaCazcl4ceGfaXar2fRbbcotfgXc9ifIdbMUdbaHczfaxaXc9mfIdbMUdbaHcCfakaXc9qfIdbMUdbaHcKfamaQaEazce4ceGavfazcd4ceGaPfar2fgXcdtfydbcotfaCazceGfaXar2fRbbcotfgzc9ifIdbMUdbaHc3faxazc9mfIdbMUdbaHcafakazc9qfIdbMUdbkaHc8KfhHascefhsaq8Vebhzaqcdfhqazmbkka8Aa39hmbkkavcefgva39hmbkaPcefgPa39hmbkaDyd2gYTmekaYcdtaDcxffc98fhzinazydbcbyd;C:L:cjbH:bjjjbbazc98fhzaYcufgYmbkkaDcjif8Kjjjjbask;Kxmiue99due99euz99eui99eud99dud99oudnalTmbaocd4hkaqcdGhxarc99fhqarcethmawawMhPcbhsindndnawavaiascdtfgoclfydbak2cdtfgzIdwgHavaoydbak2cdtfgOIdwgA:tgCaCNazIdbgXaOIdbgQ:tgLaLNazIdlgKaOIdlgY:tg8Aa8ANMMgEavaocwfydbak2cdtfgoIdwg3aA:tg5a5NaoIdbg8EaQ:tg8Fa8FNaoIdlgaaY:tghahNMMggaEag9EEgEa3aH:tgHaHNa8EaX:tgHaHNaaaK:tgHaHNMMgHaEaH9EE:rNgHaHMgH:lJbbb9p9DTmbaH:Ohoxekcjjjj94hokdnaLahNa8Aa8FN:tgHaHNa8Aa5NaCahN:tgXaXNaCa8FNaLa5N:tgKaKNMMg3Jbbbb9BmbJbbjZhEdnaoceaoce9kEgoamaoam9iEg8Jcd9imbJbbjZa8J:Z:vhEkarcb9imbaAaDIdw:th8KaYaDIdl:th8LaQaDIdb:th8Ma8Jcba8Jcb9kEh8NdnadTmbaHJbbjZa3:rgA:vgQNg3aAa8Jcefa8Jcdf2:Y:vgANh8EaKaQNgKaANhyaXaQNgXaXaANNh8PcbhIina8Jcba8Jcb9kEcefh8RaEaI:ZNgQaCNa8KMhgaQa8ANa8LMh8SaQaLNa8MMhRcbhzindndnaPaEaz:ZNgQahNa8SMgYNgH:lJbbb9p9DTmbaH:OhOxekcjjjj94hOkaOce91goaqaoaq6Eh8UdndnaPaQa5NagMgHNga:lJbbb9p9DTmbaa:Oh8Vxekcjjjj94h8Vka8Ua8Vce91goaqaoaq6Eg8Wcefar2fcefgoar2h8XdndnaPaQa8FNaRMgQNga:lJbbb9p9DTmbaa:Oh8Yxekcjjjj94h8Ykadaeaocdtfydbcotfaba8Yce91goaqaoaq6Eg8Zfa8XfcefRbbcotfgocnfa8Ucqta8ZcCtVa8WVBdbaoc9efg8Ua8URbbcea8YceGaOcetcdGVa8VcdtclGVtV86bbaoc9ifgOaQaANaOIdbMUdbaoc9mfgOaYaANaOIdbMUdbaoc9qfgOaHaANaOIdbMUdbaoc9ufgOaAaOIdbMUdbdnaxTmbaoc9yfgOa8PaOIdbMUdbaoc9CfgOaKayNaOIdbMUdbaoc9GfgOa3a8ENaOIdbMUdbaoc9KfgOaXayNaOIdbMUdbaoc9OfgOaXa8ENaOIdbMUdbaoc2fgOaKa8ENaOIdbMUdbaoc9WfgOaXaAa3aHNaXaQNaKaYNMMgY:mNgQNaOIdbMUdbaoctfgOaKaQNaOIdbMUdbaoc94fgOa3aQNaOIdbMUdbaoc98fgoaoIdbaYaQN:tUdbka8Razcefgz9hmbka8Jcufh8JaIa8NShoaIcefhIaoTmbxdkkcbh8Vina8Jcba8Jcb9kEcefh8UaEa8V:ZNgAaCNa8KMhYaAa8ANa8LMhHaAaLNa8MMhXcbhoindndnaPaEao:ZNgAahNaHMNgQ:lJbbb9p9DTmbaQ:Ohzxekcjjjj94hzkazce91gzaqazaq6EhzdndnaPaAa5NaYMNgQ:lJbbb9p9DTmbaQ:OhOxekcjjjj94hOkazaOce91gOaqaOaq6Ecefar2fcefar2hzdndnaPaAa8FNaXMNgA:lJbbb9p9DTmbaA:OhOxekcjjjj94hOkabaOce91gOaqaOaq6Efazfcefce86bba8Uaocefgo9hmbka8Jcufh8Ja8Va8NShoa8Vcefh8VaoTmbkkascifgsal6mbkkk:Nvezu8Jjjjjbcjd9Rgb8Kjjjjbcbheabcbcjdz:xjjjbhdc:W:H:cjbhbinabRbbgicC2glabcqf8Veb87e;4:L:cjbalabcdfgv8Peb83e;W:L:cjbaiabcefRbb86b;W;n:cjbadaifce86bbalavabcxfceaetc:F:d;avGEgi8Peb83e;6:L:cjbalai8Vew87e:c:M:cjbabcQfhbaecefgecK9hmbkcbhoinc;Y:L:cjbhrcbhvindnadavfgwRbbce9hmbavcC2c;W:L:cjbfhDcbhbcehqavc;W;n:cjbfhkinabcitc:G:H:cjbfhlcbhbcbheinaeavab4ceGalabfRbbtVheabcefgbcw9hmbkdnadaecFeGgxfgmRbbmbaxcC2c;W:L:cjbfhPcbhbcehsindnaDabcq2gif8VebgbTmbaraifheaPaifhiinaialabcl4csGfRbbcltalabcw4csGfRbbcwtValabcsGfRbbV87ebaicdfhiae8VebhbaecdfheabmbkkcehbasceGhecbhsaembkamce86bbaxakRbb86b;W;n:cjbkcehbaqceGhlcbhqalmbkawcd86bbkarcCfhravcefgvcjd9hmbkaocefgoci9hmbkcbhic;W:L:cjbhvincuhlavhbinalcefhlab8Vebheabcdfhbaembkaial86b;W;p:cjbavcCfhvaicefgicjd9hmbkadcjdf8Kjjjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Bidqui998Jjjjjbc;Wb9Rgl8Kjjjjbalcxfcbc;Kbz:xjjjb8Aadcd4adfhvcehoinaogrcethoarav6mbkalcuarcdtgoarcFFFFi0Ecbyd;y:L:cjbHjjjjbbgvBdxavcFeaoz:xjjjbhwdnadTmbaicd4hDarcufhqcbhkindndnawcbaeakaD2cdtfgrydlgiaicjjjj94SEgocH4ao7c:F:b:DD2cbarydbgxaxcjjjj94SEgocH4ao7c;D;O:B8J27cbarydwgmamcjjjj94SEgrcH4ar7c:3F;N8N27aqGgvcdtfgrydbgocuSmbam::hPai::hsax::hzcehiinaihrdnaeaoaD2cdtfgiIdbaz9CmbaiIdlas9CmbaiIdwaP9BmikarcefhiawavarfaqGgvcdtfgrydbgocu9hmbkkarakBdbakhokabakcdtfaoBdbakcefgkad9hmbkkalydxcbyd;C:L:cjbH:bjjjbbalc;Wbf8Kjjjjbk9teiucbcbyd;G:L:cjbgeabcifc98GfgbBd;G:L:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;G:L:cjbgeabcrfc94GfgbBd;G:L:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd;G:L:cjbge9Rcifc98GaefgbBd;G:L:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk;0vdbcj:Gdk;yvFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeeebebbeebbebbebbbeeebbbbebbbbbbbbbbbbbbbbbbbeeeeeeebebbbeeebbeebbbbbebbbbbebebbbbbbbbbbbbbbbdiorbelvlbodveribbbbbbbbbbbbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbbibbbbbbbbbbbbbbbbbbbbbobbbbbbbbbbbbbbbbbbbbbrbaebbbbbbbbbbbbbbbbbbsd8We8YbbbbbbbhiaebbbbbbQe8Ke9cebbbbbbbbbbbbbbbbLb8KebbbbbbbbbbbbbbbbbbKbbbbbbbbbbbbbbbbbbbbbYeJbilbbbbbbbbbbbbbbbbEe80e8WlbbbbbbzlAbbbbbbb5eJdnibbbbbbai8Kbbbbbbb8Ee9ce8Ylcibbbb8Yebbbbbbbb8FdOlAdbbbbbb80e8Ylbbbbbb88eTi8KiJv8Jlbbbbbbbbbbbb89e9td8Kv9qibbbbndlvaibbbbZd8Li8KvbbbbbbJdTibbbbbb9Pe81b9GvoiBvbbbbbbbbbbbb9Re9JbvoWibbbbvibbbbbbbb9VeWi9Gvbbbbbb8WvBbbbbbbb9:b9ceBvbbbbbbbbbbbbbbbbubWibbbbbbbbbbbbbbbbbb;Wd9hvSrbbbbbbWl9NvbbbbbbFbbbbbbbbbbbbbbbbbbbbbFFuuFFuuFFuuFFuFFFuFFFuFbc;y:Ldkxebbbdbbb;W:Obb'; // embed! wasm\n\n\tvar wasmpack = new Uint8Array([\n\t\t32, 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,\n\t\t24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115,\n\t]);\n\n\tif (typeof WebAssembly !== 'object') {\n\t\treturn {\n\t\t\tsupported: false,\n\t\t};\n\t}\n\n\tvar instance;\n\n\tvar ready = WebAssembly.instantiate(unpack(wasm), {}).then(function (result) {\n\t\tinstance = result.instance;\n\t\tinstance.exports.__wasm_call_ctors();\n\t});\n\n\tfunction unpack(data) {\n\t\tvar result = new Uint8Array(data.length);\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tvar ch = data.charCodeAt(i);\n\t\t\tresult[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;\n\t\t}\n\t\tvar write = 0;\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tresult[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n\t\t}\n\t\treturn result.buffer.slice(0, write);\n\t}\n\n\tfunction assert(cond) {\n\t\tif (!cond) {\n\t\t\tthrow new Error('Assertion failed');\n\t\t}\n\t}\n\n\tfunction bytes(view) {\n\t\treturn new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n\t}\n\n\tfunction genremap(fun, positions, vertices, stride) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar rp = sbrk(vertices * 4);\n\t\tvar sp = sbrk(vertices * stride * 4);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(positions), sp);\n\t\tfun(rp, sp, vertices, stride * 4);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar remap = new Uint32Array(vertices);\n\t\tnew Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));\n\t\tsbrk(rp - sbrk(0));\n\t\treturn remap;\n\t}\n\n\tfunction reorder(fun, indices, vertices) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar ip = sbrk(indices.length * 4);\n\t\tvar rp = sbrk(vertices * 4);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar indices8 = bytes(indices);\n\t\theap.set(indices8, ip);\n\t\tvar unique = fun(rp, ip, indices.length, vertices);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar remap = new Uint32Array(vertices);\n\t\tnew Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));\n\t\tsbrk(ip - sbrk(0));\n\n\t\tfor (var i = 0; i < indices.length; ++i) indices[i] = remap[indices[i]];\n\n\t\treturn [remap, unique];\n\t}\n\n\tfunction maxindex(source) {\n\t\tvar result = 0;\n\t\tfor (var i = 0; i < source.length; ++i) {\n\t\t\tvar index = source[i];\n\t\t\tresult = result < index ? index : result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction simplify(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_index_count, target_error, options) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar te = sbrk(4);\n\t\tvar ti = sbrk(index_count * 4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar si = sbrk(index_count * 4);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(indices), si);\n\t\tvar result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_index_count, target_error, options, te);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Uint32Array(result);\n\t\tbytes(target).set(heap.subarray(ti, ti + result * 4));\n\t\tvar error = new Float32Array(1);\n\t\tbytes(error).set(heap.subarray(te, te + 4));\n\t\tsbrk(te - sbrk(0));\n\t\treturn [target, error[0]];\n\t}\n\n\tfunction simplifyAttr(\n\t\tfun,\n\t\tindices,\n\t\tindex_count,\n\t\tvertex_positions,\n\t\tvertex_count,\n\t\tvertex_positions_stride,\n\t\tvertex_attributes,\n\t\tvertex_attributes_stride,\n\t\tattribute_weights,\n\t\tvertex_lock,\n\t\ttarget_index_count,\n\t\ttarget_error,\n\t\toptions\n\t) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar te = sbrk(4);\n\t\tvar ti = sbrk(index_count * 4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar sa = sbrk(vertex_count * vertex_attributes_stride);\n\t\tvar sw = sbrk(attribute_weights.length * 4);\n\t\tvar si = sbrk(index_count * 4);\n\t\tvar vl = vertex_lock ? sbrk(vertex_count) : 0;\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(vertex_attributes), sa);\n\t\theap.set(bytes(attribute_weights), sw);\n\t\theap.set(bytes(indices), si);\n\t\tif (vertex_lock) {\n\t\t\theap.set(bytes(vertex_lock), vl);\n\t\t}\n\t\tvar result = fun(\n\t\t\tti,\n\t\t\tsi,\n\t\t\tindex_count,\n\t\t\tsp,\n\t\t\tvertex_count,\n\t\t\tvertex_positions_stride,\n\t\t\tsa,\n\t\t\tvertex_attributes_stride,\n\t\t\tsw,\n\t\t\tattribute_weights.length,\n\t\t\tvl,\n\t\t\ttarget_index_count,\n\t\t\ttarget_error,\n\t\t\toptions,\n\t\t\tte\n\t\t);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Uint32Array(result);\n\t\tbytes(target).set(heap.subarray(ti, ti + result * 4));\n\t\tvar error = new Float32Array(1);\n\t\tbytes(error).set(heap.subarray(te, te + 4));\n\t\tsbrk(te - sbrk(0));\n\t\treturn [target, error[0]];\n\t}\n\n\tfunction simplifyUpdate(\n\t\tfun,\n\t\tindices,\n\t\tindex_count,\n\t\tvertex_positions,\n\t\tvertex_count,\n\t\tvertex_positions_stride,\n\t\tvertex_attributes,\n\t\tvertex_attributes_stride,\n\t\tattribute_weights,\n\t\tvertex_lock,\n\t\ttarget_index_count,\n\t\ttarget_error,\n\t\toptions\n\t) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar te = sbrk(4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar sa = sbrk(vertex_count * vertex_attributes_stride);\n\t\tvar sw = sbrk(attribute_weights.length * 4);\n\t\tvar si = sbrk(index_count * 4);\n\t\tvar vl = vertex_lock ? sbrk(vertex_count) : 0;\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(vertex_attributes), sa);\n\t\theap.set(bytes(attribute_weights), sw);\n\t\theap.set(bytes(indices), si);\n\t\tif (vertex_lock) {\n\t\t\theap.set(bytes(vertex_lock), vl);\n\t\t}\n\t\tvar result = fun(\n\t\t\tsi,\n\t\t\tindex_count,\n\t\t\tsp,\n\t\t\tvertex_count,\n\t\t\tvertex_positions_stride,\n\t\t\tsa,\n\t\t\tvertex_attributes_stride,\n\t\t\tsw,\n\t\t\tattribute_weights.length,\n\t\t\tvl,\n\t\t\ttarget_index_count,\n\t\t\ttarget_error,\n\t\t\toptions,\n\t\t\tte\n\t\t);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tbytes(indices).set(heap.subarray(si, si + result * 4));\n\t\tbytes(vertex_positions).set(heap.subarray(sp, sp + vertex_count * vertex_positions_stride));\n\t\tbytes(vertex_attributes).set(heap.subarray(sa, sa + vertex_count * vertex_attributes_stride));\n\t\tvar error = new Float32Array(1);\n\t\tbytes(error).set(heap.subarray(te, te + 4));\n\t\tsbrk(te - sbrk(0));\n\t\treturn [result, error[0]];\n\t}\n\n\tfunction simplifyScale(fun, vertex_positions, vertex_count, vertex_positions_stride) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\tvar result = fun(sp, vertex_count, vertex_positions_stride);\n\t\tsbrk(sp - sbrk(0));\n\t\treturn result;\n\t}\n\n\tfunction simplifyPoints(\n\t\tfun,\n\t\tvertex_positions,\n\t\tvertex_count,\n\t\tvertex_positions_stride,\n\t\tvertex_colors,\n\t\tvertex_colors_stride,\n\t\tcolor_weight,\n\t\ttarget_vertex_count\n\t) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar ti = sbrk(target_vertex_count * 4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar sc = vertex_colors ? sbrk(vertex_count * vertex_colors_stride) : 0;\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\tif (vertex_colors) {\n\t\t\theap.set(bytes(vertex_colors), sc);\n\t\t}\n\t\tvar result = fun(ti, sp, vertex_count, vertex_positions_stride, sc, vertex_colors_stride, color_weight, target_vertex_count);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Uint32Array(result);\n\t\tbytes(target).set(heap.subarray(ti, ti + result * 4));\n\t\tsbrk(ti - sbrk(0));\n\t\treturn target;\n\t}\n\n\tfunction simplifySloppy(\n\t\tfun,\n\t\tindices,\n\t\tindex_count,\n\t\tvertex_positions,\n\t\tvertex_count,\n\t\tvertex_positions_stride,\n\t\tvertex_lock,\n\t\ttarget_index_count,\n\t\ttarget_error\n\t) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar te = sbrk(4);\n\t\tvar ti = sbrk(index_count * 4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar si = sbrk(index_count * 4);\n\t\tvar vl = vertex_lock ? sbrk(vertex_count) : 0;\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(indices), si);\n\t\tif (vertex_lock) {\n\t\t\theap.set(bytes(vertex_lock), vl);\n\t\t}\n\t\tvar result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, vl, target_index_count, target_error, te);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Uint32Array(result);\n\t\tbytes(target).set(heap.subarray(ti, ti + result * 4));\n\t\tvar error = new Float32Array(1);\n\t\tbytes(error).set(heap.subarray(te, te + 4));\n\t\tsbrk(te - sbrk(0));\n\t\treturn [target, error[0]];\n\t}\n\n\tfunction simplifyPrune(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_error) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar ti = sbrk(index_count * 4);\n\t\tvar sp = sbrk(vertex_count * vertex_positions_stride);\n\t\tvar si = sbrk(index_count * 4);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(indices), si);\n\t\tvar result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_error);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Uint32Array(result);\n\t\tbytes(target).set(heap.subarray(ti, ti + result * 4));\n\t\tsbrk(ti - sbrk(0));\n\t\treturn target;\n\t}\n\n\tfunction remesh(fun, indices, vertex_positions, vertex_positions_stride, resolution, options) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar sp = sbrk(vertex_positions.byteLength);\n\t\tvar si = sbrk(indices.byteLength);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(bytes(vertex_positions), sp);\n\t\theap.set(bytes(indices), si);\n\t\tvar vertex_count = vertex_positions.byteLength / vertex_positions_stride;\n\t\tvar capacity = fun(0, 0, si, indices.length, sp, vertex_count, vertex_positions_stride, resolution, options);\n\t\tvar tp = sbrk(capacity * 9 * 4);\n\t\tvar count = fun(tp, capacity, si, indices.length, sp, vertex_count, vertex_positions_stride, resolution, options);\n\t\tassert(count <= capacity);\n\t\t// heap may have grown\n\t\theap = new Uint8Array(instance.exports.memory.buffer);\n\t\tvar target = new Float32Array(count * 9);\n\t\tbytes(target).set(heap.subarray(tp, tp + target.byteLength));\n\t\tsbrk(sp - sbrk(0));\n\t\treturn target;\n\t}\n\n\tvar simplifyOptions = {\n\t\tLockBorder: 1,\n\t\tSparse: 2,\n\t\tErrorAbsolute: 4,\n\t\tPrune: 8,\n\t\tRegularize: 16,\n\t\tPermissive: 32,\n\t\tRegularizeLight: 64,\n\t\tPreserveFolds: 128,\n\t\tErrorClamped: 256,\n\t\t_InternalDebug: 1 << 30, // internal, don't use!\n\t};\n\n\tvar remeshOptions = {\n\t\tShell: 1,\n\t\tSolve: 2,\n\t\tThicken: 0, // currently a no-op but may be re-added in the future\n\t\t_InternalDebug: 1 << 30, // internal, don't use!\n\t};\n\n\treturn {\n\t\tready: ready,\n\t\tsupported: true,\n\n\t\tcompactMesh: function (indices) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = reorder(instance.exports.meshopt_optimizeVertexFetchRemap, indices32, maxindex(indices) + 1);\n\t\t\tif (indices !== indices32) {\n\t\t\t\t// copy back indices if they were converted to Uint32Array\n\t\t\t\tfor (var i = 0; i < indices32.length; ++i) {\n\t\t\t\t\tindices[i] = indices32[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\tgeneratePositionRemap: function (vertex_positions, vertex_positions_stride) {\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\n\t\t\treturn genremap(\n\t\t\t\tinstance.exports.meshopt_generatePositionRemap,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride\n\t\t\t);\n\t\t},\n\n\t\tsimplify: function (indices, vertex_positions, vertex_positions_stride, target_index_count, target_error, flags) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(target_index_count >= 0 && target_index_count <= indices.length);\n\t\t\tassert(target_index_count % 3 == 0);\n\t\t\tassert(target_error >= 0);\n\n\t\t\tvar options = 0;\n\t\t\tfor (var i = 0; i < (flags ? flags.length : 0); ++i) {\n\t\t\t\tassert(flags[i] in simplifyOptions);\n\t\t\t\toptions |= simplifyOptions[flags[i]];\n\t\t\t}\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = simplify(\n\t\t\t\tinstance.exports.meshopt_simplify,\n\t\t\t\tindices32,\n\t\t\t\tindices.length,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\ttarget_index_count,\n\t\t\t\ttarget_error,\n\t\t\t\toptions\n\t\t\t);\n\t\t\tresult[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tsimplifyWithAttributes: function (\n\t\t\tindices,\n\t\t\tvertex_positions,\n\t\t\tvertex_positions_stride,\n\t\t\tvertex_attributes,\n\t\t\tvertex_attributes_stride,\n\t\t\tattribute_weights,\n\t\t\tvertex_lock,\n\t\t\ttarget_index_count,\n\t\t\ttarget_error,\n\t\t\tflags\n\t\t) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(vertex_attributes instanceof Float32Array);\n\t\t\tassert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));\n\t\t\tassert(vertex_attributes_stride >= 0);\n\t\t\tassert(vertex_lock == null || vertex_lock instanceof Uint8Array);\n\t\t\tassert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);\n\t\t\tassert(target_index_count >= 0 && target_index_count <= indices.length);\n\t\t\tassert(target_index_count % 3 == 0);\n\t\t\tassert(target_error >= 0);\n\t\t\tassert(Array.isArray(attribute_weights));\n\t\t\tassert(vertex_attributes_stride >= attribute_weights.length);\n\t\t\tassert(attribute_weights.length <= 32);\n\t\t\tfor (var i = 0; i < attribute_weights.length; ++i) {\n\t\t\t\tassert(attribute_weights[i] >= 0);\n\t\t\t}\n\n\t\t\tvar options = 0;\n\t\t\tfor (var i = 0; i < (flags ? flags.length : 0); ++i) {\n\t\t\t\tassert(flags[i] in simplifyOptions);\n\t\t\t\toptions |= simplifyOptions[flags[i]];\n\t\t\t}\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = simplifyAttr(\n\t\t\t\tinstance.exports.meshopt_simplifyWithAttributes,\n\t\t\t\tindices32,\n\t\t\t\tindices.length,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\tvertex_attributes,\n\t\t\t\tvertex_attributes_stride * 4,\n\t\t\t\tnew Float32Array(attribute_weights),\n\t\t\t\tvertex_lock,\n\t\t\t\ttarget_index_count,\n\t\t\t\ttarget_error,\n\t\t\t\toptions\n\t\t\t);\n\t\t\tresult[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tsimplifyWithUpdate: function (\n\t\t\tindices,\n\t\t\tvertex_positions,\n\t\t\tvertex_positions_stride,\n\t\t\tvertex_attributes,\n\t\t\tvertex_attributes_stride,\n\t\t\tattribute_weights,\n\t\t\tvertex_lock,\n\t\t\ttarget_index_count,\n\t\t\ttarget_error,\n\t\t\tflags\n\t\t) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(vertex_attributes instanceof Float32Array);\n\t\t\tassert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));\n\t\t\tassert(vertex_attributes_stride >= 0);\n\t\t\tassert(vertex_lock == null || vertex_lock instanceof Uint8Array);\n\t\t\tassert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);\n\t\t\tassert(target_index_count >= 0 && target_index_count <= indices.length);\n\t\t\tassert(target_index_count % 3 == 0);\n\t\t\tassert(target_error >= 0);\n\t\t\tassert(Array.isArray(attribute_weights));\n\t\t\tassert(vertex_attributes_stride >= attribute_weights.length);\n\t\t\tassert(attribute_weights.length <= 32);\n\t\t\tfor (var i = 0; i < attribute_weights.length; ++i) {\n\t\t\t\tassert(attribute_weights[i] >= 0);\n\t\t\t}\n\n\t\t\tvar options = 0;\n\t\t\tfor (var i = 0; i < (flags ? flags.length : 0); ++i) {\n\t\t\t\tassert(flags[i] in simplifyOptions);\n\t\t\t\toptions |= simplifyOptions[flags[i]];\n\t\t\t}\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = simplifyUpdate(\n\t\t\t\tinstance.exports.meshopt_simplifyWithUpdate,\n\t\t\t\tindices32,\n\t\t\t\tindices.length,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\tvertex_attributes,\n\t\t\t\tvertex_attributes_stride * 4,\n\t\t\t\tnew Float32Array(attribute_weights),\n\t\t\t\tvertex_lock,\n\t\t\t\ttarget_index_count,\n\t\t\t\ttarget_error,\n\t\t\t\toptions\n\t\t\t);\n\t\t\tif (indices !== indices32) {\n\t\t\t\t// copy back indices if they were converted to Uint32Array\n\t\t\t\tfor (var i = 0; i < result[0]; ++i) {\n\t\t\t\t\tindices[i] = indices32[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\tgetScale: function (vertex_positions, vertex_positions_stride) {\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\treturn simplifyScale(\n\t\t\t\tinstance.exports.meshopt_simplifyScale,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4\n\t\t\t);\n\t\t},\n\n\t\tsimplifyPoints: function (vertex_positions, vertex_positions_stride, target_vertex_count, vertex_colors, vertex_colors_stride, color_weight) {\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(target_vertex_count >= 0 && target_vertex_count <= vertex_positions.length / vertex_positions_stride);\n\t\t\tif (vertex_colors) {\n\t\t\t\tassert(vertex_colors instanceof Float32Array);\n\t\t\t\tassert(vertex_colors.length % vertex_colors_stride == 0);\n\t\t\t\tassert(vertex_colors_stride >= 3);\n\t\t\t\tassert(vertex_positions.length / vertex_positions_stride == vertex_colors.length / vertex_colors_stride);\n\t\t\t\treturn simplifyPoints(\n\t\t\t\t\tinstance.exports.meshopt_simplifyPoints,\n\t\t\t\t\tvertex_positions,\n\t\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\t\tvertex_colors,\n\t\t\t\t\tvertex_colors_stride * 4,\n\t\t\t\t\tcolor_weight || 0,\n\t\t\t\t\ttarget_vertex_count\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn simplifyPoints(\n\t\t\t\t\tinstance.exports.meshopt_simplifyPoints,\n\t\t\t\t\tvertex_positions,\n\t\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\t\tundefined,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\ttarget_vertex_count\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\tsimplifySloppy: function (indices, vertex_positions, vertex_positions_stride, vertex_lock, target_index_count, target_error) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(vertex_lock == null || vertex_lock instanceof Uint8Array);\n\t\t\tassert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);\n\t\t\tassert(target_index_count >= 0 && target_index_count <= indices.length);\n\t\t\tassert(target_index_count % 3 == 0);\n\t\t\tassert(target_error >= 0);\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = simplifySloppy(\n\t\t\t\tinstance.exports.meshopt_simplifySloppy,\n\t\t\t\tindices32,\n\t\t\t\tindices.length,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\tvertex_lock,\n\t\t\t\ttarget_index_count,\n\t\t\t\ttarget_error\n\t\t\t);\n\t\t\tresult[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tsimplifyPrune: function (indices, vertex_positions, vertex_positions_stride, target_error) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(target_error >= 0);\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\tvar result = simplifyPrune(\n\t\t\t\tinstance.exports.meshopt_simplifyPrune,\n\t\t\t\tindices32,\n\t\t\t\tindices.length,\n\t\t\t\tvertex_positions,\n\t\t\t\tvertex_positions.length / vertex_positions_stride,\n\t\t\t\tvertex_positions_stride * 4,\n\t\t\t\ttarget_error\n\t\t\t);\n\t\t\tresult = indices instanceof Uint32Array ? result : new indices.constructor(result);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tremesh: function (indices, vertex_positions, vertex_positions_stride, resolution, flags) {\n\t\t\tassert(\n\t\t\t\tindices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array\n\t\t\t);\n\t\t\tassert(indices.length % 3 == 0);\n\t\t\tassert(vertex_positions instanceof Float32Array);\n\t\t\tassert(vertex_positions.length % vertex_positions_stride == 0);\n\t\t\tassert(vertex_positions_stride >= 3);\n\t\t\tassert(resolution >= 4 && resolution <= 256);\n\n\t\t\tvar options = 0;\n\t\t\tfor (var i = 0; i < (flags ? flags.length : 0); ++i) {\n\t\t\t\tassert(flags[i] in remeshOptions);\n\t\t\t\toptions |= remeshOptions[flags[i]];\n\t\t\t}\n\n\t\t\tvar indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);\n\t\t\treturn remesh(instance.exports.meshopt_remesh, indices32, vertex_positions, vertex_positions_stride * 4, resolution, options);\n\t\t},\n\t};\n})();\n\nexport { MeshoptSimplifier };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,226 @@
1
+ import { Vector3 } from '@zephyr3d/base';
2
+ import { Collider } from './collider.js';
3
+ import { PhysicsPart } from './part.js';
4
+ import { RigidBody } from './rigid_body.js';
5
+
6
+ /**
7
+ * Moves a character - a player, a creature - through the world without
8
+ * passing through things: sliding along walls, walking up slopes and steps,
9
+ * staying on the ground going down.
10
+ *
11
+ * @remarks
12
+ * Brings its own collision shape: an upright capsule of {@link
13
+ * CharacterController.height} and {@link CharacterController.radius} standing
14
+ * on the node's origin, so a model whose origin is at its feet needs nothing
15
+ * else. Do not add a {@link RigidBody} or {@link Collider} for it.
16
+ *
17
+ * Call {@link CharacterController.move} with how far the character should go;
18
+ * it moves the node at once. Gravity is up to the caller, as are jumping and
19
+ * control in the air: keep a vertical speed and add gravity to it each update.
20
+ * On the ground, keep a small downward speed rather than none - it is what
21
+ * keeps the character pressed to the ground, and what makes it slide off
22
+ * slopes steeper than {@link CharacterController.slideSlope}:
23
+ *
24
+ * ```ts
25
+ * onFixedUpdate(dt: number) {
26
+ * this.vy = this.controller.isGrounded ? -1 : this.vy - 9.81 * dt;
27
+ * this.controller.move(new Vector3(this.walk.x * dt, this.vy * dt, this.walk.z * dt));
28
+ * }
29
+ * ```
30
+ *
31
+ * Moving from `onFixedUpdate` keeps the result the same at any frame rate;
32
+ * from `onUpdate` works too, but follows the frame rate. Like every query, a
33
+ * move sees other objects as the last simulation step left them.
34
+ *
35
+ * It pushes dynamic bodies it walks into, and raises trigger events like any
36
+ * physics object. Contacts between it and static things may not be reported,
37
+ * depending on the physics implementation (`@zephyr3d/physics-rapier` reports
38
+ * none), so what it ran into comes from the move result instead.
39
+ *
40
+ * @public
41
+ */ class CharacterController extends PhysicsPart {
42
+ /** The kinematic body standing in for the character. */ _ownedBody;
43
+ /** Its capsule. */ _ownedCollider;
44
+ _height;
45
+ _radius;
46
+ _skinWidth;
47
+ _slopeLimit;
48
+ _slideSlope;
49
+ _stepHeight;
50
+ _stepMinWidth;
51
+ _snapToGround;
52
+ _pushBodies;
53
+ _characterMass;
54
+ _grounded;
55
+ _groundNormal;
56
+ constructor(){
57
+ super();
58
+ this._height = 1.8;
59
+ this._radius = 0.3;
60
+ this._skinWidth = 0.02;
61
+ this._slopeLimit = 45;
62
+ this._slideSlope = 30;
63
+ this._stepHeight = 0.3;
64
+ this._stepMinWidth = 0.2;
65
+ this._snapToGround = 0.2;
66
+ this._pushBodies = true;
67
+ this._characterMass = 70;
68
+ this._grounded = false;
69
+ this._groundNormal = null;
70
+ this._ownedBody = new RigidBody();
71
+ this._ownedBody.motionType = 'kinematic';
72
+ this._ownedCollider = new Collider();
73
+ this._ownedCollider.shape = 'capsule';
74
+ this._syncShape();
75
+ }
76
+ /** Total height of the capsule, from the feet at the node's origin. Default 1.8. */ get height() {
77
+ return this._height;
78
+ }
79
+ set height(value) {
80
+ this._height = Math.max(0, value);
81
+ this._syncShape();
82
+ }
83
+ /** Radius of the capsule. Default 0.3. */ get radius() {
84
+ return this._radius;
85
+ }
86
+ set radius(value) {
87
+ this._radius = Math.max(0, value);
88
+ this._syncShape();
89
+ }
90
+ /** Collision layer of the capsule, 0 to 15. Default 0. */ get layer() {
91
+ return this._ownedCollider.layer;
92
+ }
93
+ set layer(value) {
94
+ this._ownedCollider.layer = value;
95
+ }
96
+ /**
97
+ * Gap kept between the character and what it walks against. Too small and it
98
+ * gets stuck in corners, too large and it visibly hovers. Default 0.02.
99
+ */ get skinWidth() {
100
+ return this._skinWidth;
101
+ }
102
+ set skinWidth(value) {
103
+ this._skinWidth = Math.max(0, value);
104
+ this._configure();
105
+ }
106
+ /** Steepest slope it can walk up, in degrees. Default 45. */ get slopeLimit() {
107
+ return this._slopeLimit;
108
+ }
109
+ set slopeLimit(value) {
110
+ this._slopeLimit = value;
111
+ this._configure();
112
+ }
113
+ /**
114
+ * Slopes steeper than this, in degrees, make it slide down - when it is
115
+ * moving downwards, as it always is with gravity applied. Default 30.
116
+ */ get slideSlope() {
117
+ return this._slideSlope;
118
+ }
119
+ set slideSlope(value) {
120
+ this._slideSlope = value;
121
+ this._configure();
122
+ }
123
+ /** Highest step it walks up without jumping; 0 turns stepping off. Default 0.3. */ get stepHeight() {
124
+ return this._stepHeight;
125
+ }
126
+ set stepHeight(value) {
127
+ this._stepHeight = Math.max(0, value);
128
+ this._configure();
129
+ }
130
+ /** Narrowest step top it steps onto. Default 0.2. */ get stepMinWidth() {
131
+ return this._stepMinWidth;
132
+ }
133
+ set stepMinWidth(value) {
134
+ this._stepMinWidth = Math.max(0, value);
135
+ this._configure();
136
+ }
137
+ /**
138
+ * How far down it reaches to stay on the ground going down slopes and steps;
139
+ * 0 turns it off. Default 0.2.
140
+ */ get snapToGround() {
141
+ return this._snapToGround;
142
+ }
143
+ set snapToGround(value) {
144
+ this._snapToGround = Math.max(0, value);
145
+ this._configure();
146
+ }
147
+ /** Whether it pushes dynamic bodies it walks into. Default true. */ get pushBodies() {
148
+ return this._pushBodies;
149
+ }
150
+ set pushBodies(value) {
151
+ this._pushBodies = !!value;
152
+ this._configure();
153
+ }
154
+ /** Mass it pushes with, in kilograms. Default 70. */ get characterMass() {
155
+ return this._characterMass;
156
+ }
157
+ set characterMass(value) {
158
+ this._characterMass = Math.max(0, value);
159
+ this._configure();
160
+ }
161
+ /** Whether the last move ended on the ground. */ get isGrounded() {
162
+ return this._grounded;
163
+ }
164
+ /** Direction of the ground under it after the last move, or null. */ get groundNormal() {
165
+ return this._groundNormal;
166
+ }
167
+ /**
168
+ * Moves the character by `displacement` (world space) as far as it can go,
169
+ * and moves its node there at once.
170
+ */ move(displacement) {
171
+ const result = this.world?._moveCharacter(this, displacement);
172
+ if (result) {
173
+ this._grounded = result.grounded;
174
+ this._groundNormal = result.groundNormal;
175
+ return result;
176
+ }
177
+ // Not simulated (no scene, or physics not loaded): nothing to collide with.
178
+ const host = this.node;
179
+ if (host) {
180
+ host.setWorldPose(Vector3.add(host.getWorldPosition(), displacement, new Vector3()));
181
+ }
182
+ return {
183
+ movement: displacement.clone(),
184
+ grounded: false,
185
+ groundNormal: null,
186
+ collisions: []
187
+ };
188
+ }
189
+ _settings() {
190
+ const toRad = Math.PI / 180;
191
+ return {
192
+ skinWidth: this._skinWidth,
193
+ slopeLimit: this._slopeLimit * toRad,
194
+ slideSlope: this._slideSlope * toRad,
195
+ stepHeight: this._stepHeight,
196
+ stepMinWidth: this._stepMinWidth,
197
+ snapToGround: this._snapToGround,
198
+ pushBodies: this._pushBodies,
199
+ characterMass: this._characterMass
200
+ };
201
+ }
202
+ _syncShape() {
203
+ const c = this._ownedCollider;
204
+ c.radius = this._radius;
205
+ c.height = this._height;
206
+ // Feet on the node's origin.
207
+ c.offset = new Vector3(0, this._height / 2, 0);
208
+ }
209
+ _configure() {
210
+ this.world?._configureCharacter(this);
211
+ }
212
+ _join(world) {
213
+ world._registerCharacter(this);
214
+ // Its body and capsule join with it, on its node.
215
+ this._ownedBody._setOwnerNode(this.node);
216
+ this._ownedCollider._setOwnerNode(this.node);
217
+ }
218
+ _leave(world) {
219
+ this._ownedCollider._setOwnerNode(null);
220
+ this._ownedBody._setOwnerNode(null);
221
+ world._unregisterCharacter(this);
222
+ }
223
+ }
224
+
225
+ export { CharacterController };
226
+ //# sourceMappingURL=character.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character.js","sources":["../../src/physics/character.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport type { CharacterMoveResult } from './types';\r\nimport { Collider } from './collider';\r\nimport { PhysicsPart } from './part';\r\nimport { RigidBody } from './rigid_body';\r\nimport type { PhysicsWorld } from './world';\r\n\r\n/**\r\n * Settings of a character controller as a physics implementation takes them;\r\n * angles in radians.\r\n *\r\n * @public\r\n */\r\nexport interface CharacterSettings {\r\n skinWidth: number;\r\n slopeLimit: number;\r\n slideSlope: number;\r\n stepHeight: number;\r\n stepMinWidth: number;\r\n snapToGround: number;\r\n pushBodies: boolean;\r\n characterMass: number;\r\n}\r\n\r\n/**\r\n * Moves a character - a player, a creature - through the world without\r\n * passing through things: sliding along walls, walking up slopes and steps,\r\n * staying on the ground going down.\r\n *\r\n * @remarks\r\n * Brings its own collision shape: an upright capsule of {@link\r\n * CharacterController.height} and {@link CharacterController.radius} standing\r\n * on the node's origin, so a model whose origin is at its feet needs nothing\r\n * else. Do not add a {@link RigidBody} or {@link Collider} for it.\r\n *\r\n * Call {@link CharacterController.move} with how far the character should go;\r\n * it moves the node at once. Gravity is up to the caller, as are jumping and\r\n * control in the air: keep a vertical speed and add gravity to it each update.\r\n * On the ground, keep a small downward speed rather than none - it is what\r\n * keeps the character pressed to the ground, and what makes it slide off\r\n * slopes steeper than {@link CharacterController.slideSlope}:\r\n *\r\n * ```ts\r\n * onFixedUpdate(dt: number) {\r\n * this.vy = this.controller.isGrounded ? -1 : this.vy - 9.81 * dt;\r\n * this.controller.move(new Vector3(this.walk.x * dt, this.vy * dt, this.walk.z * dt));\r\n * }\r\n * ```\r\n *\r\n * Moving from `onFixedUpdate` keeps the result the same at any frame rate;\r\n * from `onUpdate` works too, but follows the frame rate. Like every query, a\r\n * move sees other objects as the last simulation step left them.\r\n *\r\n * It pushes dynamic bodies it walks into, and raises trigger events like any\r\n * physics object. Contacts between it and static things may not be reported,\r\n * depending on the physics implementation (`@zephyr3d/physics-rapier` reports\r\n * none), so what it ran into comes from the move result instead.\r\n *\r\n * @public\r\n */\r\nexport class CharacterController extends PhysicsPart {\r\n /** The kinematic body standing in for the character. */\r\n readonly _ownedBody: RigidBody;\r\n /** Its capsule. */\r\n readonly _ownedCollider: Collider;\r\n private _height: number;\r\n private _radius: number;\r\n private _skinWidth: number;\r\n private _slopeLimit: number;\r\n private _slideSlope: number;\r\n private _stepHeight: number;\r\n private _stepMinWidth: number;\r\n private _snapToGround: number;\r\n private _pushBodies: boolean;\r\n private _characterMass: number;\r\n private _grounded: boolean;\r\n private _groundNormal: Vector3 | null;\r\n\r\n constructor() {\r\n super();\r\n this._height = 1.8;\r\n this._radius = 0.3;\r\n this._skinWidth = 0.02;\r\n this._slopeLimit = 45;\r\n this._slideSlope = 30;\r\n this._stepHeight = 0.3;\r\n this._stepMinWidth = 0.2;\r\n this._snapToGround = 0.2;\r\n this._pushBodies = true;\r\n this._characterMass = 70;\r\n this._grounded = false;\r\n this._groundNormal = null;\r\n this._ownedBody = new RigidBody();\r\n this._ownedBody.motionType = 'kinematic';\r\n this._ownedCollider = new Collider();\r\n this._ownedCollider.shape = 'capsule';\r\n this._syncShape();\r\n }\r\n\r\n /** Total height of the capsule, from the feet at the node's origin. Default 1.8. */\r\n get height() {\r\n return this._height;\r\n }\r\n set height(value: number) {\r\n this._height = Math.max(0, value);\r\n this._syncShape();\r\n }\r\n /** Radius of the capsule. Default 0.3. */\r\n get radius() {\r\n return this._radius;\r\n }\r\n set radius(value: number) {\r\n this._radius = Math.max(0, value);\r\n this._syncShape();\r\n }\r\n /** Collision layer of the capsule, 0 to 15. Default 0. */\r\n get layer() {\r\n return this._ownedCollider.layer;\r\n }\r\n set layer(value: number) {\r\n this._ownedCollider.layer = value;\r\n }\r\n /**\r\n * Gap kept between the character and what it walks against. Too small and it\r\n * gets stuck in corners, too large and it visibly hovers. Default 0.02.\r\n */\r\n get skinWidth() {\r\n return this._skinWidth;\r\n }\r\n set skinWidth(value: number) {\r\n this._skinWidth = Math.max(0, value);\r\n this._configure();\r\n }\r\n /** Steepest slope it can walk up, in degrees. Default 45. */\r\n get slopeLimit() {\r\n return this._slopeLimit;\r\n }\r\n set slopeLimit(value: number) {\r\n this._slopeLimit = value;\r\n this._configure();\r\n }\r\n /**\r\n * Slopes steeper than this, in degrees, make it slide down - when it is\r\n * moving downwards, as it always is with gravity applied. Default 30.\r\n */\r\n get slideSlope() {\r\n return this._slideSlope;\r\n }\r\n set slideSlope(value: number) {\r\n this._slideSlope = value;\r\n this._configure();\r\n }\r\n /** Highest step it walks up without jumping; 0 turns stepping off. Default 0.3. */\r\n get stepHeight() {\r\n return this._stepHeight;\r\n }\r\n set stepHeight(value: number) {\r\n this._stepHeight = Math.max(0, value);\r\n this._configure();\r\n }\r\n /** Narrowest step top it steps onto. Default 0.2. */\r\n get stepMinWidth() {\r\n return this._stepMinWidth;\r\n }\r\n set stepMinWidth(value: number) {\r\n this._stepMinWidth = Math.max(0, value);\r\n this._configure();\r\n }\r\n /**\r\n * How far down it reaches to stay on the ground going down slopes and steps;\r\n * 0 turns it off. Default 0.2.\r\n */\r\n get snapToGround() {\r\n return this._snapToGround;\r\n }\r\n set snapToGround(value: number) {\r\n this._snapToGround = Math.max(0, value);\r\n this._configure();\r\n }\r\n /** Whether it pushes dynamic bodies it walks into. Default true. */\r\n get pushBodies() {\r\n return this._pushBodies;\r\n }\r\n set pushBodies(value: boolean) {\r\n this._pushBodies = !!value;\r\n this._configure();\r\n }\r\n /** Mass it pushes with, in kilograms. Default 70. */\r\n get characterMass() {\r\n return this._characterMass;\r\n }\r\n set characterMass(value: number) {\r\n this._characterMass = Math.max(0, value);\r\n this._configure();\r\n }\r\n /** Whether the last move ended on the ground. */\r\n get isGrounded() {\r\n return this._grounded;\r\n }\r\n /** Direction of the ground under it after the last move, or null. */\r\n get groundNormal() {\r\n return this._groundNormal;\r\n }\r\n\r\n /**\r\n * Moves the character by `displacement` (world space) as far as it can go,\r\n * and moves its node there at once.\r\n */\r\n move(displacement: Vector3): CharacterMoveResult {\r\n const result = this.world?._moveCharacter(this, displacement);\r\n if (result) {\r\n this._grounded = result.grounded;\r\n this._groundNormal = result.groundNormal;\r\n return result;\r\n }\r\n // Not simulated (no scene, or physics not loaded): nothing to collide with.\r\n const host = this.node;\r\n if (host) {\r\n host.setWorldPose(Vector3.add(host.getWorldPosition(), displacement, new Vector3()));\r\n }\r\n return { movement: displacement.clone(), grounded: false, groundNormal: null, collisions: [] };\r\n }\r\n\r\n _settings(): CharacterSettings {\r\n const toRad = Math.PI / 180;\r\n return {\r\n skinWidth: this._skinWidth,\r\n slopeLimit: this._slopeLimit * toRad,\r\n slideSlope: this._slideSlope * toRad,\r\n stepHeight: this._stepHeight,\r\n stepMinWidth: this._stepMinWidth,\r\n snapToGround: this._snapToGround,\r\n pushBodies: this._pushBodies,\r\n characterMass: this._characterMass\r\n };\r\n }\r\n\r\n private _syncShape() {\r\n const c = this._ownedCollider;\r\n c.radius = this._radius;\r\n c.height = this._height;\r\n // Feet on the node's origin.\r\n c.offset = new Vector3(0, this._height / 2, 0);\r\n }\r\n private _configure() {\r\n this.world?._configureCharacter(this);\r\n }\r\n protected _join(world: PhysicsWorld) {\r\n world._registerCharacter(this);\r\n // Its body and capsule join with it, on its node.\r\n this._ownedBody._setOwnerNode(this.node);\r\n this._ownedCollider._setOwnerNode(this.node);\r\n }\r\n protected _leave(world: PhysicsWorld) {\r\n this._ownedCollider._setOwnerNode(null);\r\n this._ownedBody._setOwnerNode(null);\r\n world._unregisterCharacter(this);\r\n }\r\n}\r\n"],"names":["CharacterController","PhysicsPart","_height","_radius","_skinWidth","_slopeLimit","_slideSlope","_stepHeight","_stepMinWidth","_snapToGround","_pushBodies","_characterMass","_grounded","_groundNormal","_ownedBody","RigidBody","motionType","_ownedCollider","Collider","shape","_syncShape","height","value","Math","max","radius","layer","skinWidth","_configure","slopeLimit","slideSlope","stepHeight","stepMinWidth","snapToGround","pushBodies","characterMass","isGrounded","groundNormal","move","displacement","result","world","_moveCharacter","grounded","host","node","setWorldPose","Vector3","add","getWorldPosition","movement","clone","collisions","_settings","toRad","PI","c","offset","_configureCharacter","_join","_registerCharacter","_setOwnerNode","_leave","_unregisterCharacter"],"mappings":"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"}