@rtzh/engine 0.0.11 → 0.0.13

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 (518) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +656 -518
  2. package/Build/Workers/{chunk-7QPQGSS3.js → chunk-2J26NSQJ.js} +5 -5
  3. package/Build/Workers/{chunk-23CHWHW6.js → chunk-2QUYHF2A.js} +4 -4
  4. package/Build/Workers/{chunk-F7IITURY.js → chunk-2ZWJOYYZ.js} +3 -3
  5. package/Build/Workers/{chunk-DLRIAMQF.js → chunk-3ENHMKKX.js} +2 -2
  6. package/Build/Workers/{chunk-DHWZGIOA.js → chunk-3J7LZYZG.js} +5 -5
  7. package/Build/Workers/{chunk-F4Q3VOCC.js → chunk-3KDCIRQI.js} +7 -7
  8. package/Build/Workers/{chunk-IVDXHQYL.js → chunk-3M6XQXJL.js} +5 -5
  9. package/Build/Workers/{chunk-K6PDZWHZ.js → chunk-3P5AO3U5.js} +5 -5
  10. package/Build/Workers/{chunk-3L7XBXFS.js → chunk-47CWFJX6.js} +5 -5
  11. package/Build/Workers/{chunk-FUFHIXPT.js → chunk-4DH5OOWE.js} +4 -4
  12. package/Build/Workers/{chunk-GDHDJK32.js → chunk-4G6JR2MZ.js} +10 -10
  13. package/Build/Workers/{chunk-EDFDPOY6.js → chunk-4VAD4BJM.js} +1 -1
  14. package/Build/Workers/{chunk-5WKGRIN6.js → chunk-4VMTI2WC.js} +6 -6
  15. package/Build/Workers/{chunk-5D3ECYS3.js → chunk-55JFCPW4.js} +4 -4
  16. package/Build/Workers/{chunk-3CD4WIF4.js → chunk-5CVGPIDD.js} +2 -2
  17. package/Build/Workers/{chunk-IXM65GBF.js → chunk-5DTY5JIA.js} +4 -4
  18. package/Build/Workers/{chunk-CTARL7CY.js → chunk-623LOZW5.js} +13 -13
  19. package/Build/Workers/{chunk-FYW5UQ24.js → chunk-6JO3MGIQ.js} +12 -12
  20. package/Build/Workers/{chunk-HAR6Y2HP.js → chunk-6SYRFK5R.js} +2 -2
  21. package/Build/Workers/{chunk-ATC2WXI4.js → chunk-6TITDWW4.js} +17 -17
  22. package/Build/Workers/{chunk-MJVNNURF.js → chunk-6WNAMM2J.js} +12 -12
  23. package/Build/Workers/{chunk-7EU3DIKZ.js → chunk-6ZPTOV5S.js} +18 -18
  24. package/Build/Workers/{chunk-QDNIPHD7.js → chunk-74FGX7I7.js} +12 -12
  25. package/Build/Workers/{chunk-KMZXZUA7.js → chunk-7DG7QQQ6.js} +5 -5
  26. package/Build/Workers/{chunk-4BJHO56J.js → chunk-7DUCNF2V.js} +6 -6
  27. package/Build/Workers/{chunk-I3VVEQQ6.js → chunk-7IJ6YJDR.js} +9 -9
  28. package/Build/Workers/{chunk-LSGHTNF5.js → chunk-A3KVKXRR.js} +13 -13
  29. package/Build/Workers/{chunk-6HB2DMC2.js → chunk-A3OQ66NS.js} +16 -16
  30. package/Build/Workers/{chunk-APOATHFZ.js → chunk-A44RSIOC.js} +4 -4
  31. package/Build/Workers/{chunk-5SVTAJRH.js → chunk-ADOJA3C4.js} +12 -12
  32. package/Build/Workers/{chunk-CGAHG2LR.js → chunk-ALHM5LNB.js} +2 -2
  33. package/Build/Workers/{chunk-DKJMD2HX.js → chunk-AM7WOPMS.js} +6 -6
  34. package/Build/Workers/{chunk-3ZDA3MBK.js → chunk-ASKKSAO2.js} +6 -6
  35. package/Build/Workers/{chunk-5UKR42KW.js → chunk-AUOSJ7RD.js} +14 -14
  36. package/Build/Workers/{chunk-6RUDXAFC.js → chunk-AUWAGN3U.js} +16 -16
  37. package/Build/Workers/{chunk-AEURJQ3B.js → chunk-B3SSRLUO.js} +2 -2
  38. package/Build/Workers/{chunk-ET7LWDHA.js → chunk-B7PKU4HH.js} +2 -2
  39. package/Build/Workers/{chunk-GPWELPVQ.js → chunk-B7SQOHFY.js} +7 -7
  40. package/Build/Workers/{chunk-4SZJ3KRD.js → chunk-BGIF6VMP.js} +3 -3
  41. package/Build/Workers/{chunk-72YPCD72.js → chunk-BHYR5M4Y.js} +17 -17
  42. package/Build/Workers/{chunk-243UEBJF.js → chunk-BIPYGVES.js} +10 -10
  43. package/Build/Workers/{chunk-4GPHI5UY.js → chunk-BLMLQN3N.js} +10 -10
  44. package/Build/Workers/{chunk-KGQGZ7PF.js → chunk-BLPBGSIN.js} +12 -12
  45. package/Build/Workers/{chunk-6BIU5AL4.js → chunk-BU5W4J4F.js} +10 -10
  46. package/Build/Workers/{chunk-2LMIHR6B.js → chunk-BVMMZTO2.js} +2 -2
  47. package/Build/Workers/{chunk-3SVEN5QG.js → chunk-C3DT73MC.js} +10 -10
  48. package/Build/Workers/{chunk-DVTKM7FF.js → chunk-CD2WSWPY.js} +4 -4
  49. package/Build/Workers/{chunk-HFCJLXTG.js → chunk-CHAPQYGD.js} +1 -1
  50. package/Build/Workers/{chunk-2UNHFFAZ.js → chunk-CXC4JSSY.js} +5 -5
  51. package/Build/Workers/{chunk-6MYDYE24.js → chunk-DB2NML4I.js} +1 -1
  52. package/Build/Workers/{chunk-32ZGDYJY.js → chunk-DKP3PVXJ.js} +18 -18
  53. package/Build/Workers/{chunk-CV5JLCHF.js → chunk-DLNCIAY5.js} +13 -13
  54. package/Build/Workers/{chunk-FD62YGTB.js → chunk-DMQ2K2CH.js} +7 -7
  55. package/Build/Workers/{chunk-J766O3PA.js → chunk-DN54YAFV.js} +4 -4
  56. package/Build/Workers/{chunk-7BQLJI3P.js → chunk-DQLCJMOH.js} +10 -10
  57. package/Build/Workers/{chunk-565HBO3F.js → chunk-DU24KQOE.js} +6 -6
  58. package/Build/Workers/{chunk-7AS3X42P.js → chunk-E3YEHNIJ.js} +10 -10
  59. package/Build/Workers/{chunk-45SKJP37.js → chunk-EAXGQLHV.js} +4 -4
  60. package/Build/Workers/{chunk-4NAHNN5G.js → chunk-ECYQUWGD.js} +10 -10
  61. package/Build/Workers/{chunk-FARHIBOA.js → chunk-EPAJ4UIR.js} +1 -1
  62. package/Build/Workers/{chunk-54AFUJNV.js → chunk-EUE3UD5F.js} +11 -11
  63. package/Build/Workers/{chunk-DAYNPAVN.js → chunk-EXMUTZB4.js} +2 -2
  64. package/Build/Workers/{chunk-CQB3KRGK.js → chunk-F2MK22SO.js} +7 -7
  65. package/Build/Workers/{chunk-IYAZCFAC.js → chunk-F4XSN4LN.js} +6 -6
  66. package/Build/Workers/{chunk-54LZ6OUD.js → chunk-F5SRLVVZ.js} +17 -17
  67. package/Build/Workers/{chunk-LGMONS4O.js → chunk-FAVFRMK5.js} +7 -7
  68. package/Build/Workers/{chunk-EWDHM5NC.js → chunk-FBSLGF4L.js} +1 -1
  69. package/Build/Workers/{chunk-IY53MZW2.js → chunk-FKKXVIQS.js} +2 -2
  70. package/Build/Workers/{chunk-FRUZKVBP.js → chunk-FNX2KJDD.js} +6 -6
  71. package/Build/Workers/{chunk-J2S3WMUZ.js → chunk-FPEAW6NQ.js} +6 -6
  72. package/Build/Workers/{chunk-ADQVXDEJ.js → chunk-FQBOVVHM.js} +16 -16
  73. package/Build/Workers/{chunk-CQ5PWUMS.js → chunk-GAZENUEZ.js} +1 -1
  74. package/Build/Workers/{chunk-7BOVULMD.js → chunk-GBB5VIA3.js} +2 -2
  75. package/Build/Workers/{chunk-7R74V5Z3.js → chunk-HTMJEEON.js} +8 -8
  76. package/Build/Workers/{chunk-B3FJJGCH.js → chunk-HTTTEW64.js} +4 -4
  77. package/Build/Workers/{chunk-I5JHYEIE.js → chunk-HZ4N44YJ.js} +8 -8
  78. package/Build/Workers/{chunk-IEEHNZ36.js → chunk-HZQONEX2.js} +8 -8
  79. package/Build/Workers/{chunk-5W4ISZGQ.js → chunk-I4CJV4A3.js} +14 -14
  80. package/Build/Workers/{chunk-OBQVOEPZ.js → chunk-IB22JEKK.js} +5 -5
  81. package/Build/Workers/{chunk-F6JVBOM5.js → chunk-IG64RWHT.js} +11 -11
  82. package/Build/Workers/{chunk-6AUSOZOL.js → chunk-IK5A56IF.js} +7 -7
  83. package/Build/Workers/{chunk-JUJONRWD.js → chunk-ILNFTW5Z.js} +11 -11
  84. package/Build/Workers/{chunk-7X6CLAD2.js → chunk-IMC7L6CL.js} +9 -9
  85. package/Build/Workers/{chunk-JRPAFYGJ.js → chunk-IPBVNANG.js} +17 -17
  86. package/Build/Workers/{chunk-6J63N735.js → chunk-IUIXI2XJ.js} +6 -6
  87. package/Build/Workers/{chunk-2ZXYLPPT.js → chunk-J3WRL2GC.js} +2 -2
  88. package/Build/Workers/{chunk-HKSICPYV.js → chunk-J6DW5QIM.js} +1 -1
  89. package/Build/Workers/{chunk-2ZR6KBRW.js → chunk-JCJRAI2M.js} +8 -8
  90. package/Build/Workers/{chunk-E7SFSMUX.js → chunk-JEFN4ZPU.js} +2 -2
  91. package/Build/Workers/{chunk-AMJRLIO3.js → chunk-JF6HRK66.js} +11 -11
  92. package/Build/Workers/{chunk-7KOMCIWI.js → chunk-JFOADEL2.js} +8 -8
  93. package/Build/Workers/{chunk-56MKFDJH.js → chunk-JNSU4PGT.js} +12 -12
  94. package/Build/Workers/{chunk-6ZF4QOFM.js → chunk-JPORXJB2.js} +6 -6
  95. package/Build/Workers/{chunk-6YSUD2OH.js → chunk-JTH56QYP.js} +7 -7
  96. package/Build/Workers/{chunk-G7PGTG3P.js → chunk-K5QIQSHR.js} +13 -13
  97. package/Build/Workers/{chunk-H33FCT5U.js → chunk-KN3RXSGH.js} +9 -9
  98. package/Build/Workers/{chunk-4SC4KVID.js → chunk-KTUWGLXR.js} +10 -10
  99. package/Build/Workers/{chunk-E3NHG3TR.js → chunk-KWI3TOQ3.js} +5 -5
  100. package/Build/Workers/{chunk-553BNJPP.js → chunk-L63MA7DS.js} +8 -8
  101. package/Build/Workers/{chunk-CXDJ7YNS.js → chunk-LBVC3PWG.js} +4 -4
  102. package/Build/Workers/{chunk-32GOIUYC.js → chunk-LKCPP73L.js} +5 -5
  103. package/Build/Workers/{chunk-6YT2LZ3Z.js → chunk-LKUMU7VD.js} +4 -4
  104. package/Build/Workers/{chunk-DPTYP7J3.js → chunk-LUA5G72O.js} +1 -1
  105. package/Build/Workers/{chunk-3NSMZ3XW.js → chunk-MBKDVX63.js} +17 -17
  106. package/Build/Workers/{chunk-GYIGOBV2.js → chunk-MSYP7LPX.js} +9 -9
  107. package/Build/Workers/{chunk-EJVGOIOW.js → chunk-MZWPVY6R.js} +7 -7
  108. package/Build/Workers/{chunk-7RAUHLDW.js → chunk-N557LIW2.js} +3 -3
  109. package/Build/Workers/{chunk-BQRZMSMM.js → chunk-NGTONEWG.js} +4 -4
  110. package/Build/Workers/{chunk-6F4HKBHD.js → chunk-NLAR3AKL.js} +6 -6
  111. package/Build/Workers/{chunk-4IXXMXPJ.js → chunk-ODIGZZ3R.js} +10 -10
  112. package/Build/Workers/{chunk-BIJHMMCD.js → chunk-OF3WIS5R.js} +4 -4
  113. package/Build/Workers/{chunk-EFHDO3L2.js → chunk-OHWONB5E.js} +4 -4
  114. package/Build/Workers/{chunk-EE4T7VKT.js → chunk-OTYYR4HA.js} +12 -12
  115. package/Build/Workers/{chunk-GCZNJHST.js → chunk-OVJADFWR.js} +5 -5
  116. package/Build/Workers/{chunk-MPHEIDPB.js → chunk-OWR6KGDV.js} +1 -1
  117. package/Build/Workers/{chunk-FNI64UKI.js → chunk-PEZ2F4AC.js} +5 -5
  118. package/Build/Workers/{chunk-5T4DXPEL.js → chunk-PJEU2YDM.js} +8 -8
  119. package/Build/Workers/{chunk-4GZLJPDW.js → chunk-PNJB4ARY.js} +8 -8
  120. package/Build/Workers/{chunk-2CZLDPAQ.js → chunk-PSGQHI7V.js} +2 -2
  121. package/Build/Workers/{chunk-37WPNI52.js → chunk-PTBF7YWH.js} +1 -1
  122. package/Build/Workers/{chunk-HHUKBKWS.js → chunk-Q2GNXOAO.js} +11 -11
  123. package/Build/Workers/{chunk-2Y2KA6PM.js → chunk-QCRUW3OJ.js} +13 -13
  124. package/Build/Workers/{chunk-4CQDMEZY.js → chunk-QG2AN7NK.js} +6 -6
  125. package/Build/Workers/{chunk-D3FNWB3Q.js → chunk-QICSE57I.js} +4 -4
  126. package/Build/Workers/{chunk-2VN5W6HA.js → chunk-QM26UZ4G.js} +5 -5
  127. package/Build/Workers/{chunk-4C4UR2S6.js → chunk-QMUEVSBY.js} +10 -10
  128. package/Build/Workers/{chunk-IRG63TBY.js → chunk-QNTU5YFH.js} +1 -1
  129. package/Build/Workers/{chunk-FHM3HFYM.js → chunk-RGAJSVVU.js} +10 -10
  130. package/Build/Workers/{chunk-6KA3AJM6.js → chunk-RJJMDQTR.js} +6 -6
  131. package/Build/Workers/{chunk-HBL3QZ2L.js → chunk-RLMDD7LI.js} +6 -6
  132. package/Build/Workers/{chunk-5L3PEFKO.js → chunk-RMYM65KX.js} +1 -1
  133. package/Build/Workers/{chunk-5VWFNSLF.js → chunk-RWZLJD75.js} +2 -2
  134. package/Build/Workers/{chunk-3JPA6GA3.js → chunk-S3QVNBQ2.js} +12 -12
  135. package/Build/Workers/{chunk-4UBPBH32.js → chunk-SCDH4DI7.js} +5 -5
  136. package/Build/Workers/{chunk-HC6DDPFU.js → chunk-SKWZGTC6.js} +7 -7
  137. package/Build/Workers/{chunk-GZMTBQM2.js → chunk-SL6RUOEJ.js} +4 -4
  138. package/Build/Workers/{chunk-763Q2YKY.js → chunk-SUTV4NUG.js} +14 -14
  139. package/Build/Workers/{chunk-J2CUNLQP.js → chunk-T3CBEYZZ.js} +9 -9
  140. package/Build/Workers/{chunk-4FEDW3WT.js → chunk-T6IEXU63.js} +8 -8
  141. package/Build/Workers/{chunk-FYZVCB32.js → chunk-TBIPO5CH.js} +1 -1
  142. package/Build/Workers/{chunk-74HENCNJ.js → chunk-TDP5NGTP.js} +6 -6
  143. package/Build/Workers/{chunk-KWFCDTXS.js → chunk-TDQUDFAH.js} +9 -9
  144. package/Build/Workers/{chunk-FCSN7XOU.js → chunk-TEAYSUTK.js} +1 -1
  145. package/Build/Workers/{chunk-O5QH7XD5.js → chunk-TSB4I6D6.js} +1 -1
  146. package/Build/Workers/{chunk-H2MM7FMU.js → chunk-TVCOYHIQ.js} +17 -17
  147. package/Build/Workers/{chunk-5DPCF65K.js → chunk-TVVFCSTW.js} +5 -5
  148. package/Build/Workers/{chunk-27JI7F7B.js → chunk-UCLPK6WA.js} +2 -2
  149. package/Build/Workers/{chunk-JM4TFRYQ.js → chunk-ULWGQGIU.js} +2 -2
  150. package/Build/Workers/{chunk-42I3QSKJ.js → chunk-UR5UUI2S.js} +1 -1
  151. package/Build/Workers/{chunk-HEKLTOOR.js → chunk-UTAFOZR6.js} +4 -4
  152. package/Build/Workers/{chunk-6TWMNB7Q.js → chunk-V4BLFYXZ.js} +6 -6
  153. package/Build/Workers/{chunk-6GNLKYQO.js → chunk-VH4ZDU2H.js} +6 -6
  154. package/Build/Workers/{chunk-3PWX65TL.js → chunk-VH6ZXWXV.js} +14 -14
  155. package/Build/Workers/{chunk-ASGXCLGL.js → chunk-VU5DFAMV.js} +4 -4
  156. package/Build/Workers/{chunk-MEFWVMG6.js → chunk-WAJ236EA.js} +11 -11
  157. package/Build/Workers/{chunk-AFZVC5JN.js → chunk-WDTR5ZPN.js} +12 -12
  158. package/Build/Workers/{chunk-3ZJ6X3BW.js → chunk-WJ74Z47X.js} +5 -5
  159. package/Build/Workers/{chunk-ET7K6FSD.js → chunk-WKYBYW6H.js} +14 -14
  160. package/Build/Workers/{chunk-54SSO7NS.js → chunk-WMSJG24O.js} +5 -5
  161. package/Build/Workers/{chunk-G6PDJHNG.js → chunk-WTKUVRNG.js} +7 -7
  162. package/Build/Workers/{chunk-3YO7HM5H.js → chunk-X7RJMQRF.js} +7 -7
  163. package/Build/Workers/{chunk-5UHIRI2A.js → chunk-XH535OLG.js} +2 -2
  164. package/Build/Workers/{chunk-MHEKNHOF.js → chunk-XMN6BU5T.js} +13 -13
  165. package/Build/Workers/{chunk-LVU4AZC6.js → chunk-XOKZRQNH.js} +7 -7
  166. package/Build/Workers/{chunk-73EGVDOC.js → chunk-Y6KZOXMR.js} +14 -14
  167. package/Build/Workers/{chunk-53AFSDGM.js → chunk-YF767F7T.js} +1 -1
  168. package/Build/Workers/{chunk-72Q33KL6.js → chunk-YGPS3DPM.js} +1 -1
  169. package/Build/Workers/{chunk-BCYABDWF.js → chunk-YLNURUBI.js} +18 -18
  170. package/Build/Workers/{chunk-5MCUZL44.js → chunk-YMGBVMJH.js} +6 -6
  171. package/Build/Workers/{chunk-ENIF6OQ5.js → chunk-ZESIYF5P.js} +5 -5
  172. package/Build/Workers/{chunk-BHTWF7UG.js → chunk-ZSDJVMQL.js} +2 -2
  173. package/Build/Workers/combineGeometry.js +24 -24
  174. package/Build/Workers/createBoxGeometry.js +18 -18
  175. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  176. package/Build/Workers/createCircleGeometry.js +26 -26
  177. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  178. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  179. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  180. package/Build/Workers/createCorridorGeometry.js +29 -29
  181. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  182. package/Build/Workers/createCylinderGeometry.js +20 -20
  183. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  184. package/Build/Workers/createEllipseGeometry.js +26 -26
  185. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  187. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  188. package/Build/Workers/createFrustumGeometry.js +18 -18
  189. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  190. package/Build/Workers/createGeometry.js +24 -24
  191. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  192. package/Build/Workers/createPlaneGeometry.js +16 -16
  193. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  194. package/Build/Workers/createPolygonGeometry.js +32 -32
  195. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  196. package/Build/Workers/createPolylineGeometry.js +25 -25
  197. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  198. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  199. package/Build/Workers/createRectangleGeometry.js +27 -27
  200. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  201. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  202. package/Build/Workers/createSphereGeometry.js +19 -19
  203. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  204. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  205. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  206. package/Build/Workers/createVectorTileGeometries.js +24 -24
  207. package/Build/Workers/createVectorTilePoints.js +13 -13
  208. package/Build/Workers/createVectorTilePolygons.js +22 -22
  209. package/Build/Workers/createVectorTilePolylines.js +14 -14
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  212. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  214. package/Build/Workers/createWallGeometry.js +24 -24
  215. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  216. package/Build/Workers/decodeDraco.js +10 -10
  217. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  218. package/Build/Workers/decodeI3S.js +10 -10
  219. package/Build/Workers/gaussianSplatSorter.js +4 -4
  220. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  221. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  222. package/Build/Workers/transcodeKTX2.js +6 -6
  223. package/Build/Workers/transferTypedArrayTest.js +1 -1
  224. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  225. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  226. package/README.md +69 -69
  227. package/Source/Scene/Model/CPUStylingPipelineStage.js +4 -1
  228. package/Source/Scene/Model/CustomShader.js +26 -4
  229. package/Source/Scene/Model/CustomShaderPipelineStage.js +20 -5
  230. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +8 -0
  231. package/Source/Scene/Model/MaterialPipelineStage.js +919 -919
  232. package/Source/Scene/Model/ModelDrawCommand.js +58 -3
  233. package/Source/Shaders/Model/CPUStylingStageFS.glsl +3 -0
  234. package/Source/Shaders/Model/CPUStylingStageFS.js +3 -0
  235. package/Source/Shaders/Model/CPUStylingStageVS.glsl +3 -0
  236. package/Source/Shaders/Model/CPUStylingStageVS.js +3 -0
  237. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  238. package/Source/Shaders/Model/ModelFS.js +15 -0
  239. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  240. package/index.d.ts +15 -1
  241. package/index.js +27 -27
  242. package/package.json +1 -1
  243. package/Build/Workers/chunk-2B7VLWK3.js +0 -58
  244. package/Build/Workers/chunk-2OWEFNS4.js +0 -97
  245. package/Build/Workers/chunk-2YAONTGQ.js +0 -476
  246. package/Build/Workers/chunk-324L25HV.js +0 -352
  247. package/Build/Workers/chunk-3EZBCDBK.js +0 -439
  248. package/Build/Workers/chunk-3QLIXW6V.js +0 -778
  249. package/Build/Workers/chunk-3WRJXCJS.js +0 -497
  250. package/Build/Workers/chunk-3WT5VKYM.js +0 -101
  251. package/Build/Workers/chunk-4DIL24GG.js +0 -1460
  252. package/Build/Workers/chunk-4DQ3ODGO.js +0 -629
  253. package/Build/Workers/chunk-52UUGJQ6.js +0 -288
  254. package/Build/Workers/chunk-5A4OWIAY.js +0 -511
  255. package/Build/Workers/chunk-5IOA3NCI.js +0 -8366
  256. package/Build/Workers/chunk-5RMI6LFO.js +0 -692
  257. package/Build/Workers/chunk-5VDZEVQX.js +0 -788
  258. package/Build/Workers/chunk-5WAMP6Z4.js +0 -299
  259. package/Build/Workers/chunk-5ZMMQ7HE.js +0 -37
  260. package/Build/Workers/chunk-64VDO4BW.js +0 -114
  261. package/Build/Workers/chunk-664SI23B.js +0 -368
  262. package/Build/Workers/chunk-6BNIWSFA.js +0 -940
  263. package/Build/Workers/chunk-7C2MOK27.js +0 -57
  264. package/Build/Workers/chunk-7EFYX4FL.js +0 -642
  265. package/Build/Workers/chunk-7MMYV5PM.js +0 -288
  266. package/Build/Workers/chunk-AVNHAFMV.js +0 -114
  267. package/Build/Workers/chunk-AWMYTHW4.js +0 -101
  268. package/Build/Workers/chunk-B5ZUBUPB.js +0 -398
  269. package/Build/Workers/chunk-BGG3BP2R.js +0 -280
  270. package/Build/Workers/chunk-BJHSYHOQ.js +0 -97
  271. package/Build/Workers/chunk-BLZILZWF.js +0 -2719
  272. package/Build/Workers/chunk-BM6ZG63T.js +0 -171
  273. package/Build/Workers/chunk-BYTLHM7N.js +0 -414
  274. package/Build/Workers/chunk-C3G2NDXM.js +0 -162
  275. package/Build/Workers/chunk-CCPKBCZD.js +0 -171
  276. package/Build/Workers/chunk-CMAG5O53.js +0 -1483
  277. package/Build/Workers/chunk-CR6BZUQC.js +0 -1443
  278. package/Build/Workers/chunk-DBM2NHJ5.js +0 -352
  279. package/Build/Workers/chunk-DIA4J2DB.js +0 -497
  280. package/Build/Workers/chunk-E5BSDIGY.js +0 -139
  281. package/Build/Workers/chunk-EDVAQGDJ.js +0 -2719
  282. package/Build/Workers/chunk-EPVJ5OOH.js +0 -8366
  283. package/Build/Workers/chunk-ERYOZBVC.js +0 -171
  284. package/Build/Workers/chunk-F2BQY3GT.js +0 -1317
  285. package/Build/Workers/chunk-FRF5LWIM.js +0 -299
  286. package/Build/Workers/chunk-FSYQE5XE.js +0 -55
  287. package/Build/Workers/chunk-FTHCZAWE.js +0 -44
  288. package/Build/Workers/chunk-FTXEOX64.js +0 -1067
  289. package/Build/Workers/chunk-G2KELS4I.js +0 -138
  290. package/Build/Workers/chunk-GAQXLBFJ.js +0 -1483
  291. package/Build/Workers/chunk-GCPD37SU.js +0 -1054
  292. package/Build/Workers/chunk-GEH53ULL.js +0 -299
  293. package/Build/Workers/chunk-GJFIEALZ.js +0 -387
  294. package/Build/Workers/chunk-GLA2PT5T.js +0 -476
  295. package/Build/Workers/chunk-GMOKUODV.js +0 -352
  296. package/Build/Workers/chunk-GNGGEDZK.js +0 -352
  297. package/Build/Workers/chunk-GNGZG6C6.js +0 -162
  298. package/Build/Workers/chunk-GWLEBUVI.js +0 -2058
  299. package/Build/Workers/chunk-H3BSU65R.js +0 -1067
  300. package/Build/Workers/chunk-HEFUSHA6.js +0 -3514
  301. package/Build/Workers/chunk-HHN2M3ES.js +0 -682
  302. package/Build/Workers/chunk-HKII76UV.js +0 -1800
  303. package/Build/Workers/chunk-HLIXASKN.js +0 -476
  304. package/Build/Workers/chunk-HM4MH5IG.js +0 -138
  305. package/Build/Workers/chunk-HWUHUN7Z.js +0 -387
  306. package/Build/Workers/chunk-I7LWED3Z.js +0 -101
  307. package/Build/Workers/chunk-IB2XQV6U.js +0 -101
  308. package/Build/Workers/chunk-IC2JHDCI.js +0 -114
  309. package/Build/Workers/chunk-IEBTKCMB.js +0 -497
  310. package/Build/Workers/chunk-IHOM6QXV.js +0 -439
  311. package/Build/Workers/chunk-IK4D64GY.js +0 -439
  312. package/Build/Workers/chunk-IKMU6YHA.js +0 -288
  313. package/Build/Workers/chunk-IYXLSOLF.js +0 -692
  314. package/Build/Workers/chunk-J4PNHKWO.js +0 -2719
  315. package/Build/Workers/chunk-JFLJS4QU.js +0 -1443
  316. package/Build/Workers/chunk-JJD7S2CV.js +0 -3514
  317. package/Build/Workers/chunk-JJWMDUOJ.js +0 -44
  318. package/Build/Workers/chunk-JNNIPGJU.js +0 -163
  319. package/Build/Workers/chunk-JOQFYJZ2.js +0 -692
  320. package/Build/Workers/chunk-JQ7IQ56G.js +0 -837
  321. package/Build/Workers/chunk-JWEZXKBE.js +0 -73
  322. package/Build/Workers/chunk-K2PUGKEO.js +0 -2058
  323. package/Build/Workers/chunk-KFOT2YV5.js +0 -138
  324. package/Build/Workers/chunk-KMJD5APO.js +0 -162
  325. package/Build/Workers/chunk-KOVKY3HB.js +0 -198
  326. package/Build/Workers/chunk-KQ4ET526.js +0 -163
  327. package/Build/Workers/chunk-KWX3CJFT.js +0 -198
  328. package/Build/Workers/chunk-L2QIVAZV.js +0 -3514
  329. package/Build/Workers/chunk-L33HPENB.js +0 -75
  330. package/Build/Workers/chunk-LENXRROQ.js +0 -398
  331. package/Build/Workers/chunk-LFQ63ZU4.js +0 -455
  332. package/Build/Workers/chunk-LHJDLAZT.js +0 -1483
  333. package/Build/Workers/chunk-LJHG4PJQ.js +0 -305
  334. package/Build/Workers/chunk-LNS36LUZ.js +0 -2058
  335. package/Build/Workers/chunk-LPJHTJDQ.js +0 -305
  336. package/Build/Workers/chunk-LRW2QXMW.js +0 -352
  337. package/Build/Workers/chunk-LUUEGFLT.js +0 -305
  338. package/Build/Workers/chunk-LW2VGHDM.js +0 -1800
  339. package/Build/Workers/chunk-LXM2ZC4V.js +0 -288
  340. package/Build/Workers/chunk-LXMLERGC.js +0 -1067
  341. package/Build/Workers/chunk-LXOUU2I5.js +0 -219
  342. package/Build/Workers/chunk-M7EEEKQE.js +0 -476
  343. package/Build/Workers/chunk-MB2ZJQR3.js +0 -55
  344. package/Build/Workers/chunk-MCJRXFRL.js +0 -102
  345. package/Build/Workers/chunk-MCNY7SPD.js +0 -139
  346. package/Build/Workers/chunk-MLL4AAXV.js +0 -1460
  347. package/Build/Workers/chunk-MPCZC3G6.js +0 -414
  348. package/Build/Workers/chunk-MRLJERN3.js +0 -114
  349. package/Build/Workers/chunk-MWN26ZEM.js +0 -280
  350. package/Build/Workers/chunk-MXKQUDTP.js +0 -55
  351. package/Build/Workers/chunk-NEF7XO5W.js +0 -940
  352. package/Build/Workers/chunk-NIWB6UMY.js +0 -198
  353. package/Build/Workers/chunk-NJEG7WRW.js +0 -387
  354. package/Build/Workers/chunk-NL7US44X.js +0 -171
  355. package/Build/Workers/chunk-NOJAQPXU.js +0 -102
  356. package/Build/Workers/chunk-NSRZZEHH.js +0 -455
  357. package/Build/Workers/chunk-NUMQ72QV.js +0 -55
  358. package/Build/Workers/chunk-NXZJKIYD.js +0 -97
  359. package/Build/Workers/chunk-O224ZEA5.js +0 -58
  360. package/Build/Workers/chunk-O4MZOV3C.js +0 -414
  361. package/Build/Workers/chunk-O5ICO3AS.js +0 -682
  362. package/Build/Workers/chunk-O6T3T3V3.js +0 -97
  363. package/Build/Workers/chunk-OAFZ26QL.js +0 -837
  364. package/Build/Workers/chunk-OBM2JYMG.js +0 -75
  365. package/Build/Workers/chunk-OC63Z35M.js +0 -280
  366. package/Build/Workers/chunk-OD7UYXFV.js +0 -352
  367. package/Build/Workers/chunk-ODZZZGXK.js +0 -219
  368. package/Build/Workers/chunk-OEAC5XUG.js +0 -73
  369. package/Build/Workers/chunk-OFTWEOW2.js +0 -1483
  370. package/Build/Workers/chunk-OIJH6LAY.js +0 -497
  371. package/Build/Workers/chunk-OJFVD5ZS.js +0 -778
  372. package/Build/Workers/chunk-OJNPKCEL.js +0 -73
  373. package/Build/Workers/chunk-OOIZ7CHP.js +0 -114
  374. package/Build/Workers/chunk-OQK27J4J.js +0 -139
  375. package/Build/Workers/chunk-OTDNJAYJ.js +0 -55
  376. package/Build/Workers/chunk-OX4DGIUJ.js +0 -788
  377. package/Build/Workers/chunk-PEEYBEL5.js +0 -2058
  378. package/Build/Workers/chunk-PEUDXOFI.js +0 -241
  379. package/Build/Workers/chunk-PGYA2CMO.js +0 -642
  380. package/Build/Workers/chunk-PKXFFIEZ.js +0 -57
  381. package/Build/Workers/chunk-PQLZOYZE.js +0 -642
  382. package/Build/Workers/chunk-PSDWIJMU.js +0 -219
  383. package/Build/Workers/chunk-PU44PXY2.js +0 -75
  384. package/Build/Workers/chunk-PW3GQAXA.js +0 -3514
  385. package/Build/Workers/chunk-Q2X2Z7JH.js +0 -241
  386. package/Build/Workers/chunk-Q2YRPH7V.js +0 -1067
  387. package/Build/Workers/chunk-Q36VXWGP.js +0 -57
  388. package/Build/Workers/chunk-Q4XPVYXJ.js +0 -476
  389. package/Build/Workers/chunk-QEGQDFX2.js +0 -1045
  390. package/Build/Workers/chunk-QFN5B75P.js +0 -1054
  391. package/Build/Workers/chunk-QGXE4VZ3.js +0 -55
  392. package/Build/Workers/chunk-QIEHP7O4.js +0 -280
  393. package/Build/Workers/chunk-QOLOPE4O.js +0 -1317
  394. package/Build/Workers/chunk-QY55DT53.js +0 -97
  395. package/Build/Workers/chunk-R2AFDOIY.js +0 -778
  396. package/Build/Workers/chunk-R3PTQZ6H.js +0 -44
  397. package/Build/Workers/chunk-R5U3MYPS.js +0 -198
  398. package/Build/Workers/chunk-RBLCJVK6.js +0 -73
  399. package/Build/Workers/chunk-RGD6RGTH.js +0 -138
  400. package/Build/Workers/chunk-RJ564LVX.js +0 -398
  401. package/Build/Workers/chunk-RJIH4MDC.js +0 -241
  402. package/Build/Workers/chunk-RJVB3K2X.js +0 -511
  403. package/Build/Workers/chunk-RNZ5L3W4.js +0 -387
  404. package/Build/Workers/chunk-RO7SDGOD.js +0 -352
  405. package/Build/Workers/chunk-RORZNBGJ.js +0 -299
  406. package/Build/Workers/chunk-RRBGLANL.js +0 -55
  407. package/Build/Workers/chunk-RT7PY6BH.js +0 -2719
  408. package/Build/Workers/chunk-RTJ6L5O4.js +0 -163
  409. package/Build/Workers/chunk-SAD42JSM.js +0 -102
  410. package/Build/Workers/chunk-SBR7MW44.js +0 -139
  411. package/Build/Workers/chunk-SCF2OVAZ.js +0 -219
  412. package/Build/Workers/chunk-SCNCHSTQ.js +0 -642
  413. package/Build/Workers/chunk-SFM3GNS2.js +0 -682
  414. package/Build/Workers/chunk-SG56ZOPD.js +0 -788
  415. package/Build/Workers/chunk-SHQEATE2.js +0 -1045
  416. package/Build/Workers/chunk-SJX7UJNW.js +0 -241
  417. package/Build/Workers/chunk-SKXE77AM.js +0 -139
  418. package/Build/Workers/chunk-SLYUIIFB.js +0 -455
  419. package/Build/Workers/chunk-SPL7JK6K.js +0 -1054
  420. package/Build/Workers/chunk-SPPYSEH2.js +0 -1460
  421. package/Build/Workers/chunk-SQSWONTJ.js +0 -241
  422. package/Build/Workers/chunk-SRLJWNU2.js +0 -368
  423. package/Build/Workers/chunk-SSE2O2SB.js +0 -1460
  424. package/Build/Workers/chunk-SX6GJD6B.js +0 -837
  425. package/Build/Workers/chunk-SXISWCV7.js +0 -58
  426. package/Build/Workers/chunk-SYCWSSRX.js +0 -1443
  427. package/Build/Workers/chunk-SZELHE7Q.js +0 -163
  428. package/Build/Workers/chunk-SZQC2TUH.js +0 -368
  429. package/Build/Workers/chunk-T4LDJBKR.js +0 -124
  430. package/Build/Workers/chunk-TAWVKT4B.js +0 -58
  431. package/Build/Workers/chunk-TBASKFFL.js +0 -124
  432. package/Build/Workers/chunk-TBEKWAR5.js +0 -73
  433. package/Build/Workers/chunk-TDGGEIZE.js +0 -398
  434. package/Build/Workers/chunk-TE277WT3.js +0 -280
  435. package/Build/Workers/chunk-TEZGNCXH.js +0 -8366
  436. package/Build/Workers/chunk-TFL2ZV77.js +0 -692
  437. package/Build/Workers/chunk-THWXTO7B.js +0 -57
  438. package/Build/Workers/chunk-TIQZUI5N.js +0 -44
  439. package/Build/Workers/chunk-TKJHRY4V.js +0 -511
  440. package/Build/Workers/chunk-TLXEQ5QY.js +0 -778
  441. package/Build/Workers/chunk-TQ63SH2Z.js +0 -352
  442. package/Build/Workers/chunk-TSNKYHSC.js +0 -305
  443. package/Build/Workers/chunk-TYQ7MNMK.js +0 -37
  444. package/Build/Workers/chunk-U267N6IJ.js +0 -299
  445. package/Build/Workers/chunk-U3VI26GL.js +0 -162
  446. package/Build/Workers/chunk-U77FLUQF.js +0 -368
  447. package/Build/Workers/chunk-UIMHSWDJ.js +0 -455
  448. package/Build/Workers/chunk-UIYQEJ5H.js +0 -1054
  449. package/Build/Workers/chunk-UJ72JOGF.js +0 -511
  450. package/Build/Workers/chunk-ULWO6TCN.js +0 -352
  451. package/Build/Workers/chunk-UO3AWZR3.js +0 -352
  452. package/Build/Workers/chunk-UQSQNTEF.js +0 -368
  453. package/Build/Workers/chunk-USWXYJRX.js +0 -1045
  454. package/Build/Workers/chunk-UTDSEOTC.js +0 -288
  455. package/Build/Workers/chunk-UTXXZ7XH.js +0 -940
  456. package/Build/Workers/chunk-UUKLWTJC.js +0 -2719
  457. package/Build/Workers/chunk-UY7I27VQ.js +0 -1800
  458. package/Build/Workers/chunk-UZXJSLDO.js +0 -3514
  459. package/Build/Workers/chunk-V2TRFTCU.js +0 -1317
  460. package/Build/Workers/chunk-V4I3IKAK.js +0 -1460
  461. package/Build/Workers/chunk-V7QHEF6O.js +0 -1317
  462. package/Build/Workers/chunk-VFC54WB7.js +0 -940
  463. package/Build/Workers/chunk-VG7NX64T.js +0 -37
  464. package/Build/Workers/chunk-VIMRGSM5.js +0 -256
  465. package/Build/Workers/chunk-VL4QTEZC.js +0 -138
  466. package/Build/Workers/chunk-VLB25GGE.js +0 -439
  467. package/Build/Workers/chunk-VP2OAU4C.js +0 -124
  468. package/Build/Workers/chunk-VVKDT4J7.js +0 -837
  469. package/Build/Workers/chunk-VXDOONLH.js +0 -162
  470. package/Build/Workers/chunk-W2EK42GB.js +0 -75
  471. package/Build/Workers/chunk-W2OMUTYA.js +0 -1800
  472. package/Build/Workers/chunk-W3LNGBJU.js +0 -44
  473. package/Build/Workers/chunk-W4DV7TAL.js +0 -8366
  474. package/Build/Workers/chunk-WDMHDACX.js +0 -1800
  475. package/Build/Workers/chunk-WF224D4A.js +0 -642
  476. package/Build/Workers/chunk-WFTPZ3ZX.js +0 -788
  477. package/Build/Workers/chunk-WHOEQFL4.js +0 -682
  478. package/Build/Workers/chunk-WLIQ26XU.js +0 -455
  479. package/Build/Workers/chunk-WOEPS2UA.js +0 -171
  480. package/Build/Workers/chunk-WWLWTSMV.js +0 -55
  481. package/Build/Workers/chunk-WX2ZANQC.js +0 -940
  482. package/Build/Workers/chunk-WZJEAPEP.js +0 -629
  483. package/Build/Workers/chunk-XEB4GEXW.js +0 -629
  484. package/Build/Workers/chunk-XFKTM6GN.js +0 -2058
  485. package/Build/Workers/chunk-XHGB5IOL.js +0 -1045
  486. package/Build/Workers/chunk-XHNWVOIJ.js +0 -219
  487. package/Build/Workers/chunk-XKBR7TJB.js +0 -398
  488. package/Build/Workers/chunk-XMIENZET.js +0 -256
  489. package/Build/Workers/chunk-XNKQLSHI.js +0 -629
  490. package/Build/Workers/chunk-XOXF37BU.js +0 -1317
  491. package/Build/Workers/chunk-XXD3TQVI.js +0 -837
  492. package/Build/Workers/chunk-XYRT4RDI.js +0 -1045
  493. package/Build/Workers/chunk-XZINQPR6.js +0 -124
  494. package/Build/Workers/chunk-XZN7KCY3.js +0 -1054
  495. package/Build/Workers/chunk-YC6PFDXQ.js +0 -8366
  496. package/Build/Workers/chunk-YCTK62TY.js +0 -1483
  497. package/Build/Workers/chunk-YFJB3US4.js +0 -102
  498. package/Build/Workers/chunk-YLKTSY65.js +0 -414
  499. package/Build/Workers/chunk-YLSZYTTO.js +0 -102
  500. package/Build/Workers/chunk-YMXATXRN.js +0 -57
  501. package/Build/Workers/chunk-YQXKIGXX.js +0 -414
  502. package/Build/Workers/chunk-YR3LX3PR.js +0 -497
  503. package/Build/Workers/chunk-YVRD2PO5.js +0 -124
  504. package/Build/Workers/chunk-YWPKCFKZ.js +0 -1443
  505. package/Build/Workers/chunk-YWSB7PZP.js +0 -511
  506. package/Build/Workers/chunk-Z24A5EMJ.js +0 -387
  507. package/Build/Workers/chunk-Z4IW5XUY.js +0 -788
  508. package/Build/Workers/chunk-Z5MHVJGN.js +0 -778
  509. package/Build/Workers/chunk-ZBRVFEGF.js +0 -256
  510. package/Build/Workers/chunk-ZCPCQJBX.js +0 -198
  511. package/Build/Workers/chunk-ZEEVOFG2.js +0 -256
  512. package/Build/Workers/chunk-ZFHCP7RN.js +0 -692
  513. package/Build/Workers/chunk-ZHHEFNHL.js +0 -37
  514. package/Build/Workers/chunk-ZI5GDNEV.js +0 -305
  515. package/Build/Workers/chunk-ZS7KQSEM.js +0 -439
  516. package/Build/Workers/chunk-ZVXETFPZ.js +0 -1067
  517. package/Build/Workers/chunk-ZXZTWDTN.js +0 -682
  518. package/Build/Workers/chunk-ZYTMDBCR.js +0 -1443
@@ -1,3514 +0,0 @@
1
- /**
2
- * @license
3
- * Cesium - https://github.com/CesiumGS/cesium
4
- * Version 0.0.9
5
- *
6
- * Copyright 2011-2022 Cesium Contributors
7
- *
8
- * Licensed under the Apache License, Version 2.0 (the "License");
9
- * you may not use this file except in compliance with the License.
10
- * You may obtain a copy of the License at
11
- *
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
- *
14
- * Unless required by applicable law or agreed to in writing, software
15
- * distributed under the License is distributed on an "AS IS" BASIS,
16
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- * See the License for the specific language governing permissions and
18
- * limitations under the License.
19
- *
20
- * Columbus View (Pat. Pend.)
21
- *
22
- * Portions licensed separately.
23
- * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
24
- */
25
-
26
- import {
27
- TerrainProvider_default
28
- } from "./chunk-GMOKUODV.js";
29
- import {
30
- EllipsoidalOccluder_default,
31
- TerrainEncoding_default,
32
- VerticalExaggeration_default
33
- } from "./chunk-OX4DGIUJ.js";
34
- import {
35
- WebMercatorProjection_default
36
- } from "./chunk-3ZDA3MBK.js";
37
- import {
38
- OrientedBoundingBox_default
39
- } from "./chunk-SX6GJD6B.js";
40
- import {
41
- AttributeCompression_default
42
- } from "./chunk-IK4D64GY.js";
43
- import {
44
- AxisAlignedBoundingBox_default
45
- } from "./chunk-KMJD5APO.js";
46
- import {
47
- IntersectionTests_default,
48
- Ray_default
49
- } from "./chunk-QOLOPE4O.js";
50
- import {
51
- BoundingSphere_default,
52
- Interval_default
53
- } from "./chunk-NEF7XO5W.js";
54
- import {
55
- Event_default,
56
- Rectangle_default,
57
- Resource_default,
58
- Transforms_default,
59
- binarySearch_default,
60
- buildModuleUrl_default,
61
- isCrossOriginUrl_default,
62
- require_URI
63
- } from "./chunk-5IOA3NCI.js";
64
- import {
65
- Matrix4_default
66
- } from "./chunk-K2PUGKEO.js";
67
- import {
68
- ComponentDatatype_default
69
- } from "./chunk-ZEEVOFG2.js";
70
- import {
71
- RuntimeError_default
72
- } from "./chunk-2B7VLWK3.js";
73
- import {
74
- Cartesian2_default,
75
- Cartographic_default,
76
- Ellipsoid_default,
77
- FeatureDetection_default
78
- } from "./chunk-SPPYSEH2.js";
79
- import {
80
- Cartesian3_default,
81
- Frozen_default,
82
- Matrix3_default
83
- } from "./chunk-CR6BZUQC.js";
84
- import {
85
- Math_default
86
- } from "./chunk-4SZJ3KRD.js";
87
- import {
88
- Check_default,
89
- DeveloperError_default
90
- } from "./chunk-JM4TFRYQ.js";
91
- import {
92
- __toESM,
93
- defined_default
94
- } from "./chunk-L33HPENB.js";
95
-
96
- // node_modules/meshoptimizer/meshopt_encoder.module.js
97
- var MeshoptEncoder = (function() {
98
- var wasm = "b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiE8AdilveoveovrrwrrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:PlCo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxY9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVJ9V29VVbmE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9WbHa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbOK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbAl79IV9RbXDwebcekdKYq;i28Adbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:xjjjb8AdnaiTmbarc;adfadalz:wjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:xjjjb8Aarc;abfarc;adfalz:wjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:xjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:wjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:xjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:xjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:xjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:wjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:xjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:wjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:xjjjbawfhokaoarc;adfalz:wjjjbalfhodnaDTmbaoaraez:wjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:xjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk:Ylvdud99due99iudnaeTmbceaicufgvthocuaitcu7:Zhrcuavtcu7:Zhwcbhvadcl9hhDcbhqindndnalcwfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikdndnalIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9TgxaifhidndnalclfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9ThddndnalcxfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEawNJbbbZMgk:lJbbb9p9DTmbak:Ohmxekcjjjj94hmkadaifhiaoamVhmdndnaDmbabavfgPai86bbaPcifam86bbaPcdfad86bbaPcefax86bbxekabaqfgPai87ebaPcofam87ebaPclfad87ebaPcdfax87ebkalczfhlavclfhvaqcwfhqaecufgembkkk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:xjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;q:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:wjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:pjjjbavyd:GehDadci9Ugqcbyd;q:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:xjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;q:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;q:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;u:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;q:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:xjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:ojjjbkQbabaeadaic;m:jjjbz:ojjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:xjjjb8AalcuadcitgoadcFFFFe0Ecbyd;q:kjjbHjjjjbbgrBdxalceBd2araeadaicezNjjjbalcuaoadcjjjjoGEcbyd;q:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:xjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;u:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb";
99
- var wasmpack = new Uint8Array([
100
- 32,
101
- 0,
102
- 65,
103
- 2,
104
- 1,
105
- 106,
106
- 34,
107
- 33,
108
- 3,
109
- 128,
110
- 11,
111
- 4,
112
- 13,
113
- 64,
114
- 6,
115
- 253,
116
- 10,
117
- 7,
118
- 15,
119
- 116,
120
- 127,
121
- 5,
122
- 8,
123
- 12,
124
- 40,
125
- 16,
126
- 19,
127
- 54,
128
- 20,
129
- 9,
130
- 27,
131
- 255,
132
- 113,
133
- 17,
134
- 42,
135
- 67,
136
- 24,
137
- 23,
138
- 146,
139
- 148,
140
- 18,
141
- 14,
142
- 22,
143
- 45,
144
- 70,
145
- 69,
146
- 56,
147
- 114,
148
- 101,
149
- 21,
150
- 25,
151
- 63,
152
- 75,
153
- 136,
154
- 108,
155
- 28,
156
- 118,
157
- 29,
158
- 73,
159
- 115
160
- ]);
161
- if (typeof WebAssembly !== "object") {
162
- return {
163
- supported: false
164
- };
165
- }
166
- var instance;
167
- var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
168
- instance = result.instance;
169
- instance.exports.__wasm_call_ctors();
170
- instance.exports.meshopt_encodeVertexVersion(0);
171
- instance.exports.meshopt_encodeIndexVersion(1);
172
- });
173
- function unpack(data) {
174
- var result = new Uint8Array(data.length);
175
- for (var i = 0; i < data.length; ++i) {
176
- var ch = data.charCodeAt(i);
177
- result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
178
- }
179
- var write = 0;
180
- for (var i = 0; i < data.length; ++i) {
181
- result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
182
- }
183
- return result.buffer.slice(0, write);
184
- }
185
- function assert(cond) {
186
- if (!cond) {
187
- throw new Error("Assertion failed");
188
- }
189
- }
190
- function bytes(view) {
191
- return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
192
- }
193
- function reorder(fun, indices, vertices, optf) {
194
- var sbrk = instance.exports.sbrk;
195
- var ip = sbrk(indices.length * 4);
196
- var rp = sbrk(vertices * 4);
197
- var heap = new Uint8Array(instance.exports.memory.buffer);
198
- var indices8 = bytes(indices);
199
- heap.set(indices8, ip);
200
- if (optf) {
201
- optf(ip, ip, indices.length, vertices);
202
- }
203
- var unique = fun(rp, ip, indices.length, vertices);
204
- heap = new Uint8Array(instance.exports.memory.buffer);
205
- var remap = new Uint32Array(vertices);
206
- new Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));
207
- indices8.set(heap.subarray(ip, ip + indices.length * 4));
208
- sbrk(ip - sbrk(0));
209
- for (var i = 0; i < indices.length; ++i) indices[i] = remap[indices[i]];
210
- return [remap, unique];
211
- }
212
- function spatialsort(fun, positions, count, stride) {
213
- var sbrk = instance.exports.sbrk;
214
- var ip = sbrk(count * 4);
215
- var sp = sbrk(count * stride);
216
- var heap = new Uint8Array(instance.exports.memory.buffer);
217
- heap.set(bytes(positions), sp);
218
- fun(ip, sp, count, stride);
219
- heap = new Uint8Array(instance.exports.memory.buffer);
220
- var remap = new Uint32Array(count);
221
- new Uint8Array(remap.buffer).set(heap.subarray(ip, ip + count * 4));
222
- sbrk(ip - sbrk(0));
223
- return remap;
224
- }
225
- function encode(fun, bound, source, count, size, level, version) {
226
- var sbrk = instance.exports.sbrk;
227
- var tp = sbrk(bound);
228
- var sp = sbrk(count * size);
229
- var heap = new Uint8Array(instance.exports.memory.buffer);
230
- heap.set(bytes(source), sp);
231
- var res = fun(tp, bound, sp, count, size, level, version);
232
- var target = new Uint8Array(res);
233
- target.set(heap.subarray(tp, tp + res));
234
- sbrk(tp - sbrk(0));
235
- return target;
236
- }
237
- function maxindex(source) {
238
- var result = 0;
239
- for (var i = 0; i < source.length; ++i) {
240
- var index = source[i];
241
- result = result < index ? index : result;
242
- }
243
- return result;
244
- }
245
- function index32(source, size) {
246
- assert(size == 2 || size == 4);
247
- if (size == 4) {
248
- return new Uint32Array(source.buffer, source.byteOffset, source.byteLength / 4);
249
- } else {
250
- var view = new Uint16Array(source.buffer, source.byteOffset, source.byteLength / 2);
251
- return new Uint32Array(view);
252
- }
253
- }
254
- function filter(fun, source, count, stride, bits, insize, mode) {
255
- var sbrk = instance.exports.sbrk;
256
- var tp = sbrk(count * stride);
257
- var sp = sbrk(count * insize);
258
- var heap = new Uint8Array(instance.exports.memory.buffer);
259
- heap.set(bytes(source), sp);
260
- fun(tp, count, stride, bits, sp, mode);
261
- var target = new Uint8Array(count * stride);
262
- target.set(heap.subarray(tp, tp + count * stride));
263
- sbrk(tp - sbrk(0));
264
- return target;
265
- }
266
- return {
267
- ready,
268
- supported: true,
269
- reorderMesh: function(indices, triangles, optsize) {
270
- var optf = triangles ? optsize ? instance.exports.meshopt_optimizeVertexCacheStrip : instance.exports.meshopt_optimizeVertexCache : void 0;
271
- return reorder(instance.exports.meshopt_optimizeVertexFetchRemap, indices, maxindex(indices) + 1, optf);
272
- },
273
- reorderPoints: function(positions, positions_stride) {
274
- assert(positions instanceof Float32Array);
275
- assert(positions.length % positions_stride == 0);
276
- assert(positions_stride >= 3);
277
- return spatialsort(instance.exports.meshopt_spatialSortRemap, positions, positions.length / positions_stride, positions_stride * 4);
278
- },
279
- encodeVertexBuffer: function(source, count, size) {
280
- assert(size > 0 && size <= 256);
281
- assert(size % 4 == 0);
282
- var bound = instance.exports.meshopt_encodeVertexBufferBound(count, size);
283
- return encode(instance.exports.meshopt_encodeVertexBuffer, bound, source, count, size);
284
- },
285
- encodeVertexBufferLevel: function(source, count, size, level, version) {
286
- assert(size > 0 && size <= 256);
287
- assert(size % 4 == 0);
288
- assert(level >= 0 && level <= 3);
289
- assert(version === void 0 || version == 0 || version == 1);
290
- var bound = instance.exports.meshopt_encodeVertexBufferBound(count, size);
291
- return encode(instance.exports.meshopt_encodeVertexBufferLevel, bound, source, count, size, level, version || 0);
292
- },
293
- encodeIndexBuffer: function(source, count, size) {
294
- assert(size == 2 || size == 4);
295
- assert(count % 3 == 0);
296
- var indices = index32(source, size);
297
- var bound = instance.exports.meshopt_encodeIndexBufferBound(count, maxindex(indices) + 1);
298
- return encode(instance.exports.meshopt_encodeIndexBuffer, bound, indices, count, 4);
299
- },
300
- encodeIndexSequence: function(source, count, size) {
301
- assert(size == 2 || size == 4);
302
- var indices = index32(source, size);
303
- var bound = instance.exports.meshopt_encodeIndexSequenceBound(count, maxindex(indices) + 1);
304
- return encode(instance.exports.meshopt_encodeIndexSequence, bound, indices, count, 4);
305
- },
306
- encodeGltfBuffer: function(source, count, size, mode) {
307
- var table = {
308
- ATTRIBUTES: this.encodeVertexBuffer,
309
- TRIANGLES: this.encodeIndexBuffer,
310
- INDICES: this.encodeIndexSequence
311
- };
312
- assert(table[mode]);
313
- return table[mode](source, count, size);
314
- },
315
- encodeFilterOct: function(source, count, stride, bits) {
316
- assert(stride == 4 || stride == 8);
317
- assert(bits >= 1 && bits <= 16);
318
- return filter(instance.exports.meshopt_encodeFilterOct, source, count, stride, bits, 16);
319
- },
320
- encodeFilterQuat: function(source, count, stride, bits) {
321
- assert(stride == 8);
322
- assert(bits >= 4 && bits <= 16);
323
- return filter(instance.exports.meshopt_encodeFilterQuat, source, count, stride, bits, 16);
324
- },
325
- encodeFilterExp: function(source, count, stride, bits, mode) {
326
- assert(stride > 0 && stride % 4 == 0);
327
- assert(bits >= 1 && bits <= 24);
328
- var table = {
329
- Separate: 0,
330
- SharedVector: 1,
331
- SharedComponent: 2,
332
- Clamped: 3
333
- };
334
- return filter(instance.exports.meshopt_encodeFilterExp, source, count, stride, bits, stride, mode ? table[mode] : 1);
335
- },
336
- encodeFilterColor: function(source, count, stride, bits) {
337
- assert(stride == 4 || stride == 8);
338
- assert(bits >= 2 && bits <= 16);
339
- return filter(instance.exports.meshopt_encodeFilterColor, source, count, stride, bits, 16);
340
- }
341
- };
342
- })();
343
-
344
- // node_modules/meshoptimizer/meshopt_decoder.module.js
345
- var MeshoptDecoder = (function() {
346
- var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuec:W:Odkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;BZkdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb";
347
- var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuec:q:6dkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq;Ctklbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:2Pliur97eue978Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskaipxFubbFubbFubbFubbgxpklbdnalTmbcbhvabhdinadczfgmampbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblbaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbaiaxpkladnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblaaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk;Iwllue97euo978Jjjjjbca9Rhidnaec98GglTmbcbhvabhoinaocKfpxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81ZaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qp;6ep;NegxaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meaxarczp:Sep;6ep;Megmamp;Meaxaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgxp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgPp9oamaxp;Mearp;Keczp:Rep9qgmaDaxp;Mearp;KeaPp9oaqaxp;Mearp;Keczp:Rep9qgrpmwDKYqk8AExm35Ps8E8FgDp5eakclp:RegxpEi:T:j83ibawaDp5baxpEd:T:j83ibaocwfamarpmbezHdiOAlvCXorQLgrp5eaxpEe:T:j83ibaoarp5baxpEb:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgxpklbaiaxpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81ZaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qp;6ep;NegxaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meaxarczp:Sep;6ep;Megmamp;Meaxaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgxp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgPp9oamaxp;Mearp;Keczp:Rep9qgmaDaxp;Mearp;KeaPp9oaqaxp;Mearp;Keczp:Rep9qgrpmwDKYqk8AExm35Ps8E8FgDp5eakclp:RegxpEi:T:j83iKaiaDp5baxpEd:T:j83izaiamarpmbezHdiOAlvCXorQLgrp5eaxpEe:T:j83iwaiarp5baxpEb:T:j83ibkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk:CPvdue97euw97eu8Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadpbbbhradpxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpkbbadczfhdaoclfgoal6mbkkalaeSmeaiavpklaaicafabalcdtfgdaeciGglcdtgo;8qbbaiavpklbdnalTmbaipblahraipxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpklakadaicafao;8qbbskaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadczfgspxbFu9hbFu9hbFu9hbFu9hadpbbbgDaspbbbgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblbp9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpkbbadaxarpmbezHdiOAlvCXorQLpkbbadcafhdaoclfgoal6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgrpklbaiarpklbaiabalcitfgdaeciGglcitgo;8qbbaiavpkladnalTmbaipxbFu9hbFu9hbFu9hbFu9haipblbgDaipblzgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblap9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpklzaiaxarpmbezHdiOAlvCXorQLpklbkadaiao;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb";
348
- var detector = new Uint8Array([
349
- 0,
350
- 97,
351
- 115,
352
- 109,
353
- 1,
354
- 0,
355
- 0,
356
- 0,
357
- 1,
358
- 4,
359
- 1,
360
- 96,
361
- 0,
362
- 0,
363
- 3,
364
- 3,
365
- 2,
366
- 0,
367
- 0,
368
- 5,
369
- 3,
370
- 1,
371
- 0,
372
- 1,
373
- 12,
374
- 1,
375
- 0,
376
- 10,
377
- 22,
378
- 2,
379
- 12,
380
- 0,
381
- 65,
382
- 0,
383
- 65,
384
- 0,
385
- 65,
386
- 0,
387
- 252,
388
- 10,
389
- 0,
390
- 0,
391
- 11,
392
- 7,
393
- 0,
394
- 65,
395
- 0,
396
- 253,
397
- 15,
398
- 26,
399
- 11
400
- ]);
401
- var wasmpack = new Uint8Array([
402
- 32,
403
- 0,
404
- 65,
405
- 2,
406
- 1,
407
- 106,
408
- 34,
409
- 33,
410
- 3,
411
- 128,
412
- 11,
413
- 4,
414
- 13,
415
- 64,
416
- 6,
417
- 253,
418
- 10,
419
- 7,
420
- 15,
421
- 116,
422
- 127,
423
- 5,
424
- 8,
425
- 12,
426
- 40,
427
- 16,
428
- 19,
429
- 54,
430
- 20,
431
- 9,
432
- 27,
433
- 255,
434
- 113,
435
- 17,
436
- 42,
437
- 67,
438
- 24,
439
- 23,
440
- 146,
441
- 148,
442
- 18,
443
- 14,
444
- 22,
445
- 45,
446
- 70,
447
- 69,
448
- 56,
449
- 114,
450
- 101,
451
- 21,
452
- 25,
453
- 63,
454
- 75,
455
- 136,
456
- 108,
457
- 28,
458
- 118,
459
- 29,
460
- 73,
461
- 115
462
- ]);
463
- if (typeof WebAssembly !== "object") {
464
- return {
465
- supported: false
466
- };
467
- }
468
- var wasm = WebAssembly.validate(detector) ? unpack(wasm_simd) : unpack(wasm_base);
469
- var instance;
470
- var ready = WebAssembly.instantiate(wasm, {}).then(function(result) {
471
- instance = result.instance;
472
- instance.exports.__wasm_call_ctors();
473
- });
474
- function unpack(data) {
475
- var result = new Uint8Array(data.length);
476
- for (var i = 0; i < data.length; ++i) {
477
- var ch = data.charCodeAt(i);
478
- result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
479
- }
480
- var write = 0;
481
- for (var i = 0; i < data.length; ++i) {
482
- result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
483
- }
484
- return result.buffer.slice(0, write);
485
- }
486
- function decode(instance2, fun, target, count, size, source, filter) {
487
- var sbrk = instance2.exports.sbrk;
488
- var count4 = count + 3 & ~3;
489
- var tp = sbrk(count4 * size);
490
- var sp = sbrk(source.length);
491
- var heap = new Uint8Array(instance2.exports.memory.buffer);
492
- heap.set(source, sp);
493
- var res = fun(tp, count, size, sp, source.length);
494
- if (res == 0 && filter) {
495
- filter(tp, count4, size);
496
- }
497
- target.set(heap.subarray(tp, tp + count * size));
498
- sbrk(tp - sbrk(0));
499
- if (res != 0) {
500
- throw new Error("Malformed buffer data: " + res);
501
- }
502
- }
503
- var filters = {
504
- NONE: "",
505
- OCTAHEDRAL: "meshopt_decodeFilterOct",
506
- QUATERNION: "meshopt_decodeFilterQuat",
507
- EXPONENTIAL: "meshopt_decodeFilterExp",
508
- COLOR: "meshopt_decodeFilterColor"
509
- };
510
- var decoders = {
511
- ATTRIBUTES: "meshopt_decodeVertexBuffer",
512
- TRIANGLES: "meshopt_decodeIndexBuffer",
513
- INDICES: "meshopt_decodeIndexSequence"
514
- };
515
- var workers = [];
516
- var requestId = 0;
517
- function createWorker2(url) {
518
- var worker = {
519
- object: new Worker(url),
520
- pending: 0,
521
- requests: {}
522
- };
523
- worker.object.onmessage = function(event) {
524
- var data = event.data;
525
- worker.pending -= data.count;
526
- worker.requests[data.id][data.action](data.value);
527
- delete worker.requests[data.id];
528
- };
529
- return worker;
530
- }
531
- function initWorkers(count) {
532
- var source = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(wasm) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + workerProcess.name + ";" + decode.toString() + workerProcess.toString();
533
- var blob = new Blob([source], { type: "text/javascript" });
534
- var url = URL.createObjectURL(blob);
535
- for (var i = workers.length; i < count; ++i) {
536
- workers[i] = createWorker2(url);
537
- }
538
- for (var i = count; i < workers.length; ++i) {
539
- workers[i].object.postMessage({});
540
- }
541
- workers.length = count;
542
- URL.revokeObjectURL(url);
543
- }
544
- function decodeWorker(count, size, source, mode, filter) {
545
- var worker = workers[0];
546
- for (var i = 1; i < workers.length; ++i) {
547
- if (workers[i].pending < worker.pending) {
548
- worker = workers[i];
549
- }
550
- }
551
- return new Promise(function(resolve, reject) {
552
- var data = new Uint8Array(source);
553
- var id = ++requestId;
554
- worker.pending += count;
555
- worker.requests[id] = { resolve, reject };
556
- worker.object.postMessage({ id, count, size, source: data, mode, filter }, [data.buffer]);
557
- });
558
- }
559
- function workerProcess(event) {
560
- var data = event.data;
561
- if (!data.id) {
562
- return self.close();
563
- }
564
- self.ready.then(function(instance2) {
565
- try {
566
- var target = new Uint8Array(data.count * data.size);
567
- decode(instance2, instance2.exports[data.mode], target, data.count, data.size, data.source, instance2.exports[data.filter]);
568
- self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);
569
- } catch (error) {
570
- self.postMessage({ id: data.id, count: data.count, action: "reject", value: error });
571
- }
572
- });
573
- }
574
- return {
575
- ready,
576
- supported: true,
577
- useWorkers: function(count) {
578
- initWorkers(count);
579
- },
580
- decodeVertexBuffer: function(target, count, size, source, filter) {
581
- decode(instance, instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);
582
- },
583
- decodeIndexBuffer: function(target, count, size, source) {
584
- decode(instance, instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);
585
- },
586
- decodeIndexSequence: function(target, count, size, source) {
587
- decode(instance, instance.exports.meshopt_decodeIndexSequence, target, count, size, source);
588
- },
589
- decodeGltfBuffer: function(target, count, size, source, mode, filter) {
590
- decode(instance, instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
591
- },
592
- decodeGltfBufferAsync: function(count, size, source, mode, filter) {
593
- if (workers.length > 0) {
594
- return decodeWorker(count, size, source, decoders[mode], filters[filter]);
595
- }
596
- return ready.then(function() {
597
- var target = new Uint8Array(count * size);
598
- decode(instance, instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
599
- return target;
600
- });
601
- }
602
- };
603
- })();
604
-
605
- // node_modules/meshoptimizer/meshopt_simplifier.module.js
606
- var MeshoptSimplifier = (function() {
607
- var wasm = "b9H79Tebbbe:Gez9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gouuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9GPuuuuuuuuuuu99uueu9Gquuuuuuuu99ueu9Gruuuuuu99eu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiXCdilvorlwiDqkxmPbssbelve9Weiiviebeoweuec:G:Pdkr;7eko9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bw8A9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9O9v9W9K9HtWbDQ9TW79O9V9Wt9F79P9T9W29P9M959t29V9W9W95bqX9TW79O9V9Wt9F79P9T9W29P9M959qV919UWbkQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bxX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbma9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbPl79IV9RbsDwebcekdOAq:d;OeCdbk:J1eo3ue99euE99Cue9:8Jjjjjbcj;sb9Rgs8Kjjjjbcbhzasc:Cefcbc;Kbz:rjjjb8AdnabaeSmbabaeadcdtz:qjjjb8AkdnamcdGTmbalcrfci4gHcbyd1:jjjbHjjjjbbheasc:Cefasyd;8egOcdtfaeBdbasaOcefBd;8eaecbaHz:rjjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd1:jjjbHjjjjbbhzasc:Cefasyd;8egecdtfazBdbasaecefBd;8ealcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd1:jjjbHjjjjbbhHasc:Cefasyd;8egCcdtfaHBdbasaCcefBd;8eaHcFeaOz:rjjjbhQdnadTmbaecufhLcbhKindndnaQabaXcdtfgYydbgCc:v;t;h;Ev2aLGgOcdtfgAydbgHcuSmbceheinazaHcdtfydbaCSmdaOaefhHaecefheaQaHaLGgOcdtfgAydbgHcu9hmbkkazaKcdtfaCBdbaAaKBdbaKhHaKcefhKkaYaHBdbaXcefgXad9hmbkkaQcbyd:m:jjjbH:bjjjbbasasyd;8ecufBd;8ekcbh8AcualcefgecdtaecFFFFi0Ecbyd1:jjjbHjjjjbbhKasc:Cefasyd;8egecdtfaKBdbasaKBdNeasaecefBd;8ecuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbhEasc:Cefasyd;8egecdtfaEBdbasaEBd:yeasaecefBd;8eascNefabadalcbz:cjjjbcualcdtgealcFFFFi0Eg3cbyd1:jjjbHjjjjbbhCasc:Cefasyd;8egHcdtfaCBdbasaHcefBd;8ea3cbyd1:jjjbHjjjjbbhYasc:Cefasyd;8egHcdtfaYBdbasaHcefBd;8eaCaYaialavazasc:Cefz:djjjbalcbyd1:jjjbHjjjjbbh5asc:Cefasyd;8egHcdtfa5BdbasaHcefBd;8ea3cbyd1:jjjbHjjjjbbhHasc:Cefasyd;8egOcdtfaHBdbasaOcefBd;8ea3cbyd1:jjjbHjjjjbbhOasc:Cefasyd;8egAcdtfaOBdbasaAcefBd;8eaHcFeaez:rjjjbh8EaOcFeaez:rjjjbh8FdnalTmbaEcwfhaindnaKa8AgOcefg8AcdtfydbgAaKaOcdtgefydbgHSmbaAaH9RhhaEaHcitfhga8Faefh8Ja8Eaefh8KcbhQindndnagaQcitfydbgLaO9hmba8KaOBdba8JaOBdbxekdnaKaLcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgAfydbaOSmeaHae9Rh8Maecu7aHfhXaaaAfhHcbheinaXaeSmeaecefheaHydbhAaHcwfhHaAaO9hmbkaea8M6meka8Fa8LfgeaOaLaeydbcuSEBdba8KaLaOa8KydbcuSEBdbkaQcefgQah9hmbkka8Aal9hmbkaChHaYhOa8FhAa8EhQcbheindndnaeaHydbgL9hmbdnaeaOydbgL9hmbaQydbhLdnaAydbgXcu9hmbaLcu9hmba5aefcb86bbxikdnaXcuSmbaLcuSmbaeaXSmbaCaXcdtfydbaCaLcdtfydb9hmba5aefcd86bbxika5aefh8KdnaeaXSmbaeaLSmba8Kce86bbxika8Kcl86bbxdkdnaeaYaLcdtgXfydb9hmbdnaAydbg8KcuSmbaea8KSmbaQydbghcuSmbaeahSmba8FaXfydbggcuSmbagaLSmba8EaXfydbgXcuSmbaXaLSmbdnaCa8KcdtfydbgLaCaXcdtfydb9hmbaLaCahcdtfydbgXSmbaXaCagcdtfydb9hmba5aefcd86bbxlka5aefcl86bbxika5aefcl86bbxdka5aefcl86bbxeka5aefa5aLfRbb86bbkaHclfhHaOclfhOaAclfhAaQclfhQalaecefge9hmbkdnamcaGTmbaEcwfh8Jcbh8Nindndna5a8NfgyRbbg8Pc9:fPibebekdndndnaCa8Ncdtfydbgea8N9hmbdnaqmbcbhgxdkdnazTmbcbhga8NheinagaqazaecdtgefydbfRbbcdGce4VhgaYaefydbgea8N9hmbxikkcbhga8NheinagaqaefRbbcdGce4VhgaYaecdtfydbgea8N9hmbxdkka5aefRbbhexeka8NheindnaKaecdtgafgeclfydbgHaeydbgeSmbaHae9Rh8AaEaecitfh8MaCaafh8Lcbh8Kina8Ma8KcitfydbgXhednindnaKaecdtgLfgeclfydbgHaeydbgeSmbdnaCaEaecitgOfydbcdtfydba8LydbgQ9hmbcehexikaHae9Rhhaecu7aHfhAa8JaOfhHcbheinaAaeSmeaecefheaHydbhOaHcwfhHaCaOcdtfydbaQ9hmbkaeah6hexdkaYaLfydbgeaX9hmbkcbhekagaece7Vhga8Kcefg8Ka8A9hmbkkaYaafydbgea8N9hmbka8PciagceGEhekayae86bbka8Ncefg8Nal9hmbkkdnaqTmbdndnazTmbazheaChHalhOindnaqaeydbfRbbceGTmba5aHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaChealhHindnaqRbbceGTmba5aeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaChealhOa5hHindna5aeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmba5healhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcbhIcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbhaasc:Cefasyd;8egecdtfaaBdbasaecefBd;8easc:qefcbBdbas9cb83i1eaaaialavazasc1efz:ejjjbh8RdndnaDmbcbh8Scbh8Lxekcbh8LawhecbhHindnaeIdbJbbbb9ETmbasa8LcdtfaHBdba8Lcefh8LkaeclfheaDaHcefgH9hmbkcua8Lal2gecdtaecFFFFi0Ecbyd1:jjjbHjjjjbbh8Sasc:Cefasyd;8egecdtfa8SBdbasaecefBd;8ealTmbdna8Lmbcbh8Lxekarcd4hXdnazTmba8Lcdth8KcbhLa8ShKinaoazaLcdtfydbaX2cdtfhQasheaKhHa8LhOinaHaQaeydbcdtgAfIdbawaAfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKa8KfhKaLcefgLal9hmbxdkka8Lcdth8KcbhLa8ShKinaoaLaX2cdtfhQasheaKhHa8LhOinaHaQaeydbcdtgAfIdbawaAfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKa8KfhKaLcefgLal9hmbkkcualc8S2gHalc;D;O;f8U0EgAcbyd1:jjjbHjjjjbbheasc:Cefasyd;8egOcdtfaeBdbasaOcefBd;8eaecbaHz:rjjjbhycbhqcbh8Ndna8LTmbcbhIaAcbyd1:jjjbHjjjjbbh8Nasc:Cefasyd;8egecdtfa8NBdbasaecefBd;8ea8NcbaHz:rjjjb8Acua8Lal2gecltgHaecFFFFb0Ecbyd1:jjjbHjjjjbbhqasc:Cefasyd;8egecdtfaqBdbasaecefBd;8eaqcbaHz:rjjjb8AamcjjjjdGTmbcualcltgealcFFFFb0Ecbyd1:jjjbHjjjjbbhIasc:Cefasyd;8egHcdtfaIBdbasaHcefBd;8eaIcbaez:rjjjb8AkdnadTmbcbhQabhHinaaaHclfydbgLcx2fgeIdbaaaHydbgKcx2fgOIdbgR:tg8UaaaHcwfydbgXcx2fgAIdlaOIdlg8V:tg8WNaAIdbaR:tg8XaeIdla8V:tg8YN:tg8Zh80aeIdwaOIdwg81:tgBa8XNaAIdwa81:tg83a8UN:tgUh8Xa8Ya83Na8WaBN:tg8Yh8Udna8Za8ZNa8Ya8YNaUaUNMM:rgBJbbbb9EgOTmba8ZaB:vh80aUaB:vh8Xa8YaB:vh8UkayaCaKcdtfydbgAc8S2fgea8UaB:rg8Wa8UNNg85aeIdbMUdbaea8Xa8Wa8XNg86Ng87aeIdlMUdlaea80a8Wa80Ng83Ng88aeIdwMUdwaea86a8UNg86aeIdxMUdxaea83a8UNg89aeIdzMUdzaea83a8XNg8:aeIdCMUdCaea8Ua8Wa80a81Na8UaRNa8Va8XNMM:mgZNg83Ng8UaeIdKMUdKaea8Xa83Ng8XaeId3MUd3aea80a83Ng80aeIdaMUdaaea83aZNg83aeId8KMUd8Kaea8WaeIdyMUdyayaCaLcdtfydbgLc8S2fgea85aeIdbMUdbaea87aeIdlMUdlaea88aeIdwMUdwaea86aeIdxMUdxaea89aeIdzMUdzaea8:aeIdCMUdCaea8UaeIdKMUdKaea8XaeId3MUd3aea80aeIdaMUdaaea83aeId8KMUd8Kaea8WaeIdyMUdyayaCaXcdtfydbgKc8S2fgea85aeIdbMUdbaea87aeIdlMUdlaea88aeIdwMUdwaea86aeIdxMUdxaea89aeIdzMUdzaea8:aeIdCMUdCaea8UaeIdKMUdKaea8XaeId3MUd3aea80aeIdaMUdaaea83aeId8KMUd8Kaea8WaeIdyMUdydnaITmbdnaOTmba8ZaB:vh8ZaUaB:vhUa8YaB:vh8YkaIaAcltfgeaBJbbbZNg8UaUNg8WaeIdlMUdlaea8Ua8ZNg8XaeIdwMUdwaea8Ua8YNg80aeIdbMUdbaea8UaR:ma8YNaUa8VN:ta81a8ZN:tNg8UaeIdxMUdxaIaLcltfgea8WaeIdlMUdlaea8XaeIdwMUdwaea80aeIdbMUdbaea8UaeIdxMUdxaIaKcltfgea8WaeIdlMUdlaea8XaeIdwMUdwaea80aeIdbMUdbaea8UaeIdxMUdxkaHcxfhHaQcifgQad6mbkkdnalTmbJ;n;m;m89J:v:;;w8ZamczGEh8YcbhOaChAaahHayheindnaOaAydb9hmbaecxfgQaQIdbJbbbbMUdbaeczfgQaQIdbJbbbbMUdbaecCfgQaQIdbJbbbbMUdbaea8YaecyfgQIdbg8ZNg8UaeIdbMUdbaeclfgLa8UaLIdbMUdbaecwfgLa8UaLIdbMUdbaecKfgLaLIdbaHIdbg8Xa8UN:tUdbaHcwfIdbh8Waec3fgLaLIdba8UaHclfIdbg80N:tUdbaecafgLaLIdba8Ua8WN:tUdbaec8KfgLIdbhUaQa8Za8UMUdbaLaUa8Ua8Wa8WNa8Xa8XNa80a80NMMNMUdbkaAclfhAaHcxfhHaec8SfhealaOcefgO9hmbkkdnadTmbcbhXabhKinabaXcdtfhLcbhHina5aLaHc:G1jjbfydbcdtfydbgOfRbbhedndna5aKaHfydbgAfRbbgQc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaQcufcFeGce0mba8EaAcdtfydbaO9hmekdnaecufcFeGce0mba8FaOcdtfydbaA9hmekJbbacJbbacJbbbZaecFeGceSEaQcFeGceSEh88aaaOcx2fgeIdwaaaAcx2fgQIdwgB:tg80:mh86aeIdlaQIdlg83:tg8Z:mh89aeIdbaQIdbgR:tgU:mh8:dnaaaLaHc:K1jjbfydbcdtfydbcx2fgeIdwaB:tg8Va80a80NaUaUNa8Za8ZNMMg8YNa8Va80NaeIdbaR:tg81aUNa8ZaeIdla83:tg85NMMg8Wa80N:tg8Xa8XNa81a8YNa8WaUN:tg8Ua8UNa85a8YNa8Wa8ZN:tg8Wa8WNMM:rg87Jbbbb9ETmba8Xa87:vh8Xa8Wa87:vh8Wa8Ua87:vh8Uka88a8Y:rNg8Ya8XaBNa8UaRNa83a8WNMM:mgZNg87aZNhZa8Xa87Nhna8Wa87Nhca8Ua87Nh9ca8Ya8XNg87a8WNhJa87a8UNh9ea8Ya8WNgTa8UNhSa8Xa87Nh87a8WaTNhTa8Ua8Ya8UNNh9hdnaUa85Na81a89NMg8Xa8XNa8Za8VNa85a86NMg8Ua8UNa80a81Na8Va8:NMg8Wa8WNMM:rg80Jbbbb9ETmba8Xa80:vh8Xa8Wa80:vh8Wa8Ua80:vh8UkayaCaAcdtfydbc8S2fgeaeIdba9ha8Ua88a80:rNg80a8UNNMgUMUdbaeaTa8Wa80a8WNg8VNMg81aeIdlMUdlaea87a8Xa80a8XNg8ZNMg85aeIdwMUdwaeaSa8Va8UNMg8VaeIdxMUdxaea9ea8Za8UNMg87aeIdzMUdzaeaJa8Za8WNMg8ZaeIdCMUdCaea9ca8Ua80a8XaBNa8UaRNa83a8WNMMgB:mNg80NMg8UaeIdKMUdKaeaca8Wa80NMg8WaeId3MUd3aeana8Xa80NMg8XaeIdaMUdaaeaZaBa80N:tg80aeId8KMUd8Kaea8YJbbbbMg8YaeIdyMUdyayaCaOcdtfydbc8S2fgeaUaeIdbMUdbaea81aeIdlMUdlaea85aeIdwMUdwaea8VaeIdxMUdxaea87aeIdzMUdzaea8ZaeIdCMUdCaea8UaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea80aeId8KMUd8Kaea8YaeIdyMUdykaHclfgHcx9hmbkaKcxfhKaXcifgXad6mbka8LTmbcbhKinJbbbbh8YaaabaKcdtfgeclfydbgXcx2fgHIdwaaaeydbg8Kcx2fgOIdwg81:tg8Wa8WNaHIdbaOIdbg85:tg8Xa8XNaHIdlaOIdlg87:tg80a80NMMgRaaaecwfydbghcx2fgeIdwa81:tg8ZNa8Wa8Wa8ZNa8XaeIdba85:tgUNa80aeIdla87:tgBNMMg8UN:tJbbbbJbbjZaRa8Za8ZNaUaUNaBaBNMMg8VNa8Ua8UN:tg83:va83Jbbbb9BEg83Nh89a8Va8WNa8Za8UN:ta83Nh8:aRaBNa80a8UN:ta83NhZa8Va80NaBa8UN:ta83NhnaRaUNa8Xa8UN:ta83Nhca8Va8XNaUa8UN:ta83Nh9ca8XaBNaUa80N:tg8Ua8UNa80a8ZNaBa8WN:tg8Ua8UNa8WaUNa8Za8XN:tg8Ua8UNMM:rJbbbZNh8Ua8Sa8Ka8L2ggcdtfhHa8Saha8L2gEcdtfhOa8SaXa8L2g8JcdtfhAa81:mhJa87:mh9ea85:mhTcbhQa8LhLJbbbbhBJbbbbh83JbbbbhRJbbbbh8VJbbbbh81Jbbbbh85Jbbbbh87Jbbbbh88Jbbbbh86inascjdfaQfgecwfa8Ua8:aAIdbaHIdbg8Z:tg80Na89aOIdba8Z:tgUNMg8WNUdbaeclfa8Uana80NaZaUNMg8XNUdbaea8Ua9ca80NacaUNMg80NUdbaecxfa8UaJa8WNa9ea8XNa8ZaTa80NMMMg8ZNUdba8Ua8Wa8XNNa8VMh8Va8Ua8Wa80NNa81Mh81a8Ua8Xa80NNa85Mh85a8Ua8Za8ZNNa8YMh8Ya8Ua8Wa8ZNNaBMhBa8Ua8Xa8ZNNa83Mh83a8Ua80a8ZNNaRMhRa8Ua8Wa8WNNa87Mh87a8Ua8Xa8XNNa88Mh88a8Ua80a80NNa86Mh86aHclfhHaAclfhAaOclfhOaQczfhQaLcufgLmbka8Na8Kc8S2fgea86aeIdbMUdbaea88aeIdlMUdlaea87aeIdwMUdwaea85aeIdxMUdxaea81aeIdzMUdzaea8VaeIdCMUdCaeaRaeIdKMUdKaea83aeId3MUd3aeaBaeIdaMUdaaea8YaeId8KMUd8Kaea8UaeIdyMUdya8NaXc8S2fgea86aeIdbMUdbaea88aeIdlMUdlaea87aeIdwMUdwaea85aeIdxMUdxaea81aeIdzMUdzaea8VaeIdCMUdCaeaRaeIdKMUdKaea83aeId3MUd3aeaBaeIdaMUdaaea8YaeId8KMUd8Kaea8UaeIdyMUdya8Nahc8S2fgea86aeIdbMUdbaea88aeIdlMUdlaea87aeIdwMUdwaea85aeIdxMUdxaea81aeIdzMUdzaea8VaeIdCMUdCaeaRaeIdKMUdKaea83aeId3MUd3aeaBaeIdaMUdaaea8YaeId8KMUd8Kaea8UaeIdyMUdyaqagcltfhLcbhHa8LhAinaLaHfgeascjdfaHfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkaqa8JcltfhLcbhHa8LhAinaLaHfgeascjdfaHfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkaqaEcltfhLcbhHa8LhAinaLaHfgeascjdfaHfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkaKcifgKad6mbkkcbhOdndnamcwGg9imbJbbbbh85cbh6cbh9kcbh0xekcbh6a3cbyd1:jjjbHjjjjbbh0asc:Cefasyd;8egecdtfa0BdbasaecefBd;8ecua0alabadaCz:fjjjbgAcltaAcjjjjiGEcbyd1:jjjbHjjjjbbh9kasc:Cefasyd;8egecdtfa9kBdbasaecefBd;8ea9kaAa0aaalz:gjjjbJFFuuh85aATmba9kheaAhHinaeIdbg8Ua85a85a8U9EEh85aeclfheaHcufgHmbkaAh6kasydNeh9mdnalTmba9mclfhea9mydbhAa5hHalhQcbhOincbaeydbgLaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaLhAaQcufgQmbkaOce4hOkcuadaO9Rcifg9ncx2a9nc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8Pasc:Cefasyd;8egecdtfa8PBdbasaecefBd;8ecua9ncdta9ncFFFFi0Ecbyd1:jjjbHjjjjbbh9oasc:Cefasyd;8egecdtfa9oBdbasaecefBd;8ea3cbyd1:jjjbHjjjjbbhDasc:Cefasyd;8egecdtfaDBdbasaecefBd;8ealcbyd1:jjjbHjjjjbbh9pasc:Cefasyd;8egecdtfa9pBdbasaecefBd;8eaxaxNa8RJbbjZamclGEgnanN:vh88Jbbbbh86dnadak9nmbdna9nci6mbasyd:yeh9qa8Lclth9ra8Pcwfh9sJbbbbh87Jbbbbh86inascNefabadalaCz:cjjjbabh8Kcbh8Mcbh3inaba3cdtfhgcbheindnaCa8KaefydbgOcdtgXfydbgAaCagaec:W1jjbfydbcdtfydbgHcdtghfydbgQSmba5aHfRbbgKcv2a5aOfRbbgLfc;a1jjbfRbbg8JaLcv2aKfgEc;a1jjbfRbbg8AVcFeGTmbdnaQaA9nmbaEc;G1jjbfRbbcFeGmekdnaLcufcFeGce0mbaKTmba8EaXfydbaH9hmekdnaLTmbaKcufcFeGce0mba8FahfydbaO9hmeka8Pa8Mcx2fgAaHaOa8AcFeGgQEBdlaAaOaHaQEBdbaAaQa8JGcb9hBdwa8Mcefh8Mkaeclfgecx9hmbkdna3cifg3ad9pmba8Kcxfh8Ka8Mcifa9n9nmekka8MTmdcbhhinayaCa8Pahcx2fgKydbgQcdtgAfydbc8S2fgeIdwaaaKydlgLcx2fgHIdwg8XNaeIdzaHIdbg80NaeIdaMg8Ua8UMMa8XNaeIdlaHIdlg8ZNaeIdCa8XNaeId3Mg8Ua8UMMa8ZNaeIdba80NaeIdxa8ZNaeIdKMg8Ua8UMMa80NaeId8KMMM:lh8UJbbbbJbbjZaeIdyg8W:va8WJbbbb9BEh8WdndnaKydwg8KmbJFFuuh81xekJbbbbJbbjZayaCaLcdtfydbc8S2fgeIdygU:vaUJbbbb9BEaeIdwaaaQcx2fgHIdwgUNaeIdzaHIdbg8YNaeIdaMgBaBMMaUNaeIdlaHIdlgBNaeIdCaUNaeId3MgUaUMMaBNaeIdba8YNaeIdxaBNaeIdKMgUaUMMa8YNaeId8KMMM:lNh81ka8Wa8UNh8Vdna8LTmba8NaQc8S2fgHIdwa8XNaHIdza80NaHIdaMg8Ua8UMMa8XNaHIdla8ZNaHIdCa8XNaHId3Mg8Ua8UMMa8ZNaHIdba80NaHIdxa8ZNaHIdKMg8Ua8UMMa80NaHId8KMMMh8UaqaQa8L2ggcltfheaHIdyhUa8SaLa8L2gEcdtfgXhHa8LhOinaHIdbg8Wa8WaUNaecxfIdba8XaecwfIdbNa80aeIdbNa8ZaeclfIdbNMMMg8Wa8WM:tNa8UMh8UaHclfhHaeczfheaOcufgOmbkdndna8KmbJbbbbh8Wxeka8NaLc8S2fgOIdwaaaQcx2fgeIdwg8YNaOIdzaeIdbgBNaOIdaMg8Wa8WMMa8YNaOIdlaeIdlg83NaOIdCa8YNaOId3Mg8Wa8WMMa83NaOIdbaBNaOIdxa83NaOIdKMg8Wa8WMMaBNaOId8KMMMh8Wa8SagcdtfhHaqaEcltfheaOIdyhRa8LhOinaHIdbgUaUaRNaecxfIdba8YaecwfIdbNaBaeIdbNa83aeclfIdbNMMMgUaUM:tNa8WMh8WaHclfhHaeczfheaOcufgOmbka8W:lh8Wka8Va8U:lMh8Va81a8WMh81dndndna5aQfRbbc9:fPdbedkdna8Fa8Ea8EaAfydbaLSEaYaAfydbgXcdtfydbgAcu9hmbaYaLcdtfydbhAka8NaXc8S2fgOIdwaaaAcx2fgeIdwg8XNaOIdzaeIdbg80NaOIdaMg8Ua8UMMa8XNaOIdlaeIdlg8ZNaOIdCa8XNaOId3Mg8Ua8UMMa8ZNaOIdba80NaOIdxa8ZNaOIdKMg8Ua8UMMa80NaOId8KMMMh8Ua8SaAa8L2ggcdtfhHaqaXa8L2gEcltfheaOIdyhUa8LhOinaHIdbg8Wa8WaUNaecxfIdba8XaecwfIdbNa80aeIdbNa8ZaeclfIdbNMMMg8Wa8WM:tNa8UMh8UaHclfhHaeczfheaOcufgOmbkdndna8KmbJbbbbh8Wxeka8NaAc8S2fgOIdwaaaXcx2fgeIdwg80NaOIdzaeIdbg8ZNaOIdaMg8Wa8WMMa80NaOIdlaeIdlgUNaOIdCa80NaOId3Mg8Wa8WMMaUNaOIdba8ZNaOIdxaUNaOIdKMg8Wa8WMMa8ZNaOId8KMMMh8Wa8SaEcdtfhHaqagcltfheaOIdyh8Ya8LhOinaHIdbg8Xa8Xa8YNaecxfIdba80aecwfIdbNa8ZaeIdbNaUaeclfIdbNMMMg8Xa8XM:tNa8WMh8WaHclfhHaeczfheaOcufgOmbka8W:lh8Wka8Va8U:lMh8Va81a8WMh81xdkaYaAfydbgAaQSmbina8NaAc8S2fgHIdwa8XNaHIdza80NaHIdaMg8Ua8UMMa8XNaHIdla8ZNaHIdCa8XNaHId3Mg8Ua8UMMa8ZNaHIdba80NaHIdxa8ZNaHIdKMg8Ua8UMMa80NaHId8KMMMh8UaqaAa8L2cltfheaHIdyhUaXhHa8LhOinaHIdbg8Wa8WaUNaecxfIdba8XaecwfIdbNa80aeIdbNa8ZaeclfIdbNMMMg8Wa8WM:tNa8UMh8UaHclfhHaeczfheaOcufgOmbka8Va8U:lMh8VaYaAcdtfydbgAaQ9hmbkka5aLfRbbci9hmba8KTmbaYaLcdtfydbgAaLSmba8SagcdtfhXaaaQcx2fgeIdbh8XaeIdwh80aeIdlh8Zina8NaAc8S2fgHIdwa80NaHIdza8XNaHIdaMg8Ua8UMMa80NaHIdla8ZNaHIdCa80NaHId3Mg8Ua8UMMa8ZNaHIdba8XNaHIdxa8ZNaHIdKMg8Ua8UMMa8XNaHId8KMMMh8UaqaAa8L2cltfheaHIdyhUaXhHa8LhOinaHIdbg8Wa8WaUNaecxfIdba80aecwfIdbNa8XaeIdbNa8ZaeclfIdbNMMMg8Wa8WM:tNa8UMh8UaHclfhHaeczfheaOcufgOmbka81a8U:lMh81aYaAcdtfydbgAaL9hmbkkaKa81a8Va81a8V9DgeEUdwaKaQaLaea8Kcb9hGgeEBdlaKaLaQaeEBdbahcefgha8M9hmbkascjdfcbcj;qbz:rjjjb8Aa9shea8MhHinascjdfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinascjdfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea9shHinascjdfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdba9oaOcdtfaeBdbaHcxfhHa8Maecefge9hmbkadak9RgOci9Uh9tdnalTmbcbheaDhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh9ua9pcbalz:rjjjbh3aOcO9Uh9va9tce4h9wcbh8Acbh8Jdnina8Pa9oa8Jcdtfydbcx2fgEIdwg8Ua889Emea8Aa9t9pmeJFFuuh8Wdna9wa8M9pmba8Pa9oa9wcdtfydbcx2fIdwJbb;aZNh8Wkdna8Ua8W9ETmba8Ua869ETmba8Aa9v0mdkdna3aCaEydlghcdtg9xfydbgAfg9yRbba3aCaEydbg8Kcdtg9zfydbgefg9ARbbVmba5a8KfRbbh9Bdna9maecdtfgHclfydbgOaHydbgHSmbaOaH9RhQaaaAcx2fhKaaaecx2fhXa9qaHcitfhecbhHcehgdnindnaDaeydbcdtfydbgOaASmbaDaeclfydbcdtfydbgLaASmbaOaLSmbaaaLcx2fgLIdbaaaOcx2fgOIdbg8X:tg8UaXIdlaOIdlg80:tg8YNaXIdba8X:tgBaLIdla80:tg8WN:tg8Za8UaKIdla80:tg83NaKIdba8X:tgRa8WN:tg80Na8WaXIdwaOIdwgU:tg8VNa8YaLIdwaU:tg8XN:tg8Ya8WaKIdwaU:tg81Na83a8XN:tg8WNa8XaBNa8Va8UN:tgUa8XaRNa81a8UN:tg8UNMMa8Za8ZNa8Ya8YNaUaUNMMa80a80Na8Wa8WNa8Ua8UNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaQ6hgaQaH9hmbkkagceGTmba9wcefh9wxekdndndndna9Bc9:fPdebdka8KheinaDaecdtgefahBdbaYaefydbgea8K9hmbxikkdna8Fa8Ea8Ea9zfydbahSEaYa9zfydbg8Kcdtfydbgecu9hmbaYa9xfydbhekaDa9zfahBdbaehhkaDa8KcdtfahBdbka9Ace86bba9yce86bbaEIdwg8Ua86a86a8U9DEh86a9ucefh9ucecda9BceSEa8Afh8Aka8Jcefg8Ja8M9hmbkka9uTmddnalTmbcbhLcbhXindnaDaXcdtgefydbgOaXSmbaCaOcdtfydbh8KdnaXaCaefydb9hghmbaya8Kc8S2fgeayaXc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyaITmbaIa8KcltfgeaIaXcltfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxka8LTmba8NaOc8S2fgea8NaXc8S2ggfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9raO2hKaqhHa8LhAinaHaKfgeaHaLfgOIdbaeIdbMUdbaeclfgQaOclfIdbaQIdbMUdbaecwfgQaOcwfIdbaQIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbkahmbJbbbbJbbjZayagfgeIdyg8U:va8UJbbbb9BEaeIdwaaa8Kcx2fgHIdwg8UNaeIdzaHIdbg8WNaeIdaMg8Xa8XMMa8UNaeIdlaHIdlg8XNaeIdCa8UNaeId3Mg8Ua8UMMa8XNaeIdba8WNaeIdxa8XNaeIdKMg8Ua8UMMa8WNaeId8KMMM:lNg8Ua87a87a8U9DEh87kaLa9rfhLaXcefgXal9hmbkcbhHa8EheindnaeydbgOcuSmbdnaHaDaOcdtgAfydbgO9hmbcuhOa8EaAfydbgAcuSmbaDaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHa8FheindnaeydbgOcuSmbdnaHaDaOcdtgAfydbgO9hmbcuhOa8FaAfydbgAcuSmbaDaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkka87a86a8LEh87cbhHabhecbhOindnaCaDaeydbcdtfydbgLcdtfydbgAaCaDaeclfydbcdtfydbgKcdtfydbgQSmbaAaCaDaecwfydbcdtfydbg8KcdtfydbgXSmbaQaXSmbabaHcdtfgAaLBdbaAcwfa8KBdbaAclfaKBdbaHcifhHkaecxfheaOcifgOad6mbkdndna9imbaHhdxekdnaHak0mbaHhdxekdna85a879FmbaHhdxekJFFuuh85cbhdabhecbhOindna9ka0aeydbgAcdtfydbcdtfIdbg8Ua879ETmbaeclf8Pdbh9CabadcdtfgQaABdbaQclfa9C83dba8Ua85a85a8U9EEh85adcifhdkaecxfheaOcifgOaH6mbkkadak0mbxdkkascNefabadalaCz:cjjjbkdndnadak0mbadhOxekdna9imbadhOxekdna85a889FmbadhOxekcehLina85Jbb;aZNg8Ua88a8Ua889DEh8XJbbbbh8Udna6Tmba9khea6hHinaeIdbg8Wa8Ua8Wa8X9FEa8Ua8Wa8U9EEh8UaeclfheaHcufgHmbkkJFFuuh85cbhOabhecbhHindna9ka0aeydbgAcdtfydbcdtfIdbg8Wa8X9ETmbaeclf8Pdbh9CabaOcdtfgQaABdbaQclfa9C83dba8Wa85a85a8W9EEh85aOcifhOkaecxfheaHcifgHad6mbkdnaLaOad9hVceGmbadhOxdka8Ua86a86a8U9DEh86aOak9nmecbhLaOhda85a889FmbkkdnamcjjjjdGTmba9pcbalz:rjjjbhLdnaOTmbabheaOhHinaLaeydbgAfa5aAfRbbcl9h86bbaeclfheaHcufgHmbkkascNefabaOalaCz:cjjjbalTmbcbhQasyd:yehgindnaLaQfRbbTmbdna5aQfRbbgecl0mbceaetcQGmekdnaCaQcdtgKfydbgeaQSmbaaaQcx2fgHaaaecx2fge8Pdb83dbaHcwfaecwfydbBdbxekayaQc8S2fgeIdyg8Ua8UJL:3;rUNg8UMh88aeIdwa8UMhRaeIdla8UMh8VaeIdba8UMhUaeIdaa8UaaaQcx2fg8KIdwg89N:th81aeId3a8Ua8KIdlg8:N:th85aeIdKa8KIdbgZa8UN:th8YJbbbbhcaeIdCJbbbbMh87aeIdzJbbbbMhBaeIdxJbbbbMh83dndna8LTmbaQhAinJbbbba88a8NaAc8S2fgHIdyg8U:va8UJbbbb9BEh8UaqaAa8L2cltfheaHIdaa88Na81Mh81aHId3a88Na85Mh85aHIdKa88Na8YMh8YaHIdCa88Na87Mh87aHIdza88NaBMhBaHIdxa88Na83Mh83aHIdwa88NaRMhRaHIdla88Na8VMh8VaHIdba88NaUMhUa8LhHina81aecxfIdbg8ZaecwfIdbg8WNa8UN:th81a85a8ZaeclfIdbg8XNa8UN:th85a87a8Wa8XNa8UN:th87aUaeIdbg80a80Na8UN:thUa8Ya8Za80Na8UN:th8YaBa8Wa80Na8UN:thBa83a8Xa80Na8UN:th83aRa8Wa8WNa8UN:thRa8Va8Xa8XNa8UN:th8VaeczfheaHcufgHmbkaYaAcdtfydbgAaQ9hmbkaITmbaIaQcltfgeIdxhTaeIdwh9caeIdlhJaeIdbh8UxekJbbbbhTJbbbbh9cJbbbbhJJbbbbh8UkaBaU:vg8Xa8YNa81:ta87aBa83aU:vg8WN:tg81a8Va83a8WN:tg8Z:vg80a8Wa8YNa85:tg8VN:th85a9ca8Ua8XN:taJa8Ua8WN:tg83a80N:tg87aRaBa8XN:ta81a80N:tgB:vgR:mh81a83a8Z:vg9c:mhJdnJbbbba8Ua8UaU:vg9eN:ta83a9cN:ta87aRN:tg83:la88J:983:g81Ng8U9ETmba81a85NaJa8VNa9ea8YNaT:tMMa83:vhckaU:la8U9ETmba8Z:la8U9ETmbaB:la8U9ETmba9e:macNa8X:ma81acNa85aB:vMg85Na8W:maJacNa80:ma85Na8Va8Z:vMMg87Na8Y:maU:vMMMh88a9maKfgeclfydbgHaeydbge9RhXagaecitfhKJbbbbh8UdnaHaeSghmbJbbbbh8UaKheaXhAinaaaeclfydbcx2fgHIdwa89:tg8Wa8WNaHIdbaZ:tg8Wa8WNaHIdla8::tg8Wa8WNMMg8Waaaeydbcx2fgHIdwa89:tg8Xa8XNaHIdbaZ:tg8Xa8XNaHIdla8::tg8Xa8XNMMg8Xa8Ua8Ua8X9DEg8Ua8Ua8W9DEh8UaecwfheaAcufgAmbkka85a89:tg8Wa8WNa88aZ:tg8Wa8WNa87a8::tg8Wa8WNMMa8U:rg8Ua8UN9EmbdnahmbcbhAcehhdninaaaKclfydbcx2fgeIdbaaaKydbcx2fgHIdbg8X:tg8Ua8:aHIdlg80:tg8YNaZa8X:tgBaeIdla80:tg8WN:tg8Za8Ua87a80:tg83Na88a8X:tgRa8WN:tg80Na8Wa89aHIdwgU:tg8VNa8YaeIdwaU:tg8XN:tg8Ya8Wa85aU:tg81Na83a8XN:tg8WNa8XaBNa8Va8UN:tgUa8XaRNa81a8UN:tg8UNMMa8Za8ZNa8Ya8YNaUaUNMMa80a80Na8Wa8WNa8Ua8UNMMN:rJbbj8:N9FmeaKcwfhKaAcefgAaX6hhaXaA9hmbkkahceGmeka8Ka85Udwa8Ka87Udla8Ka88UdbkaQcefgQal9hmbkdndna8LTmba8LclthYa8Lcdth8KcbhKa8ShXindnaLaKfRbbTmba5aKfRbbclSmbJbbbbJbbjZa8NaKc8S2fIdyg8U:va8UJbbbb9BEh8UaaaCaKcdtfydbcx2fhHaqheaXhAa8LhQinaAa8UaecwfIdbaHIdwNaeIdbaHIdbNaeclfIdbaHIdlNMMaecxfIdbMNUdbaeczfheaAclfhAaQcufgQmbkkaqaYfhqaXa8KfhXaKcefgKal9hmbkarcd4hXavcd4hYasId:qeh8UasId:meh8WasId1eh8XazTmea8Lcdth8KcbhKindnaLaKfRbbTmbaiazaKcdtfydbgCaY2cdtfgeaaaKcx2fgHIdba8RNa8XMUdbaeaHIdla8RNa8WMUdlaeaHIdwa8RNa8UMUdwaoaCaX2cdtfhQashea8ShHa8LhCinaQaeydbcdtgAfaHIdbawaAfIdb:vUdbaeclfheaHclfhHaCcufgCmbkka8Sa8Kfh8SaKcefgKal9hmbxikkavcd4hCasId:qeh8UasId:meh8WasId1eh8XdnazTmbazheindna9pRbbTmbaiaeydbaC2cdtfgHaaIdba8RNa8XMUdbaHaaclfIdba8RNa8WMUdlaHaacwfIdba8RNa8UMUdwka9pcefh9paeclfheaacxfhaalcufglmbxikkaCcdtheindna9pRbbTmbaiaaIdba8RNa8XMUdbaiclfaaclfIdba8RNa8WMUdbaicwfaacwfIdba8RNa8UMUdbka9pcefh9paacxfhaaiaefhialcufglmbxdkka8Lcdth8KcbhKindnaLaKfRbbTmbaiaKaY2cdtfgeaaaKcx2fgHIdba8RNa8XMUdbaeaHIdla8RNa8WMUdlaeaHIdwa8RNa8UMUdwaoaKaX2cdtfhQashea8ShHa8LhCinaQaeydbcdtgAfaHIdbawaAfIdb:vUdbaeclfheaHclfhHaCcufgCmbkka8Sa8Kfh8SaKcefgKal9hmbkkdnamcjjjjlGTmbazmbaOTmbcbhLabheina5aeydbgAfRbbc3thKaecwfgXydbhHdndna8EaAcdtg8KfydbaeclfgYydbgCSmbcbhQa8FaCcdtfydbaA9hmekcjjjj94hQkaeaKaQVaAVBdba5aCfRbbc3thKdndna8EaCcdtfydbaHSmbcbhQa8FaHcdtfydbaC9hmekcjjjj94hQkaYaKaQVaCVBdba5aHfRbbc3thQdndna8EaHcdtfydbaASmbcbhCa8Fa8KfydbaH9hmekcjjjj94hCkaXaQaCVaHVBdbaecxfheaLcifgLaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPana86:rNUdbkasyd;8egecdtasc:Ceffc98fhHdninaeTmeaHydbcbyd:m:jjjbH:bjjjbbaHc98fhHaecufhexbkkascj;sbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:rjjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd1:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:rjjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd:m:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk:hrdvuv998Jjjjjbca9Rgoczfcwfcbyd11jjbBdbaocb8Pdj1jjb83izaocwfcbydN1jjbBdbaocb8Pd:m1jjb83ibdnadTmbaicd4hrdnabmbdnalTmbcbhwinaealawcdtfydbar2cdtfhDcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxikkarcdthwcbhDincbhiinaoczfaifgqaeaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaeawfheaDcefgDad9hmbxdkkdnalTmbcbhwinabawcx2fgiaealawcdtfydbar2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxdkkarcdthlcbhwaehDinabawcx2fgiaeawar2cdtfgqIdbUdbaiaqIdlUdlaiaqIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaDalfhDawcefgwad9hmbkkJbbbbaoIdbaoIdzgx:tgkakJbbbb9DEgkaoIdlaoIdCgm:tgPaPak9DEgkaoIdwaoIdKgP:tgsasak9DEhsdnabTmbadTmbJbbbbJbbjZas:vasJbbbb9BEhkinabakabIdbax:tNUdbabclfgoakaoIdbam:tNUdbabcwfgoakaoIdbaP:tNUdbabcxfhbadcufgdmbkkdnavTmbavaPUdwavamUdlavaxUdbkask:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc:G1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:rjjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbkRbababaeadaialavaoarawaDaqakaxcjjjjdVamz:bjjjbk:p8Koque99due99iuq998Jjjjjbc;Wb9Rgq8Kjjjjbcbhkaqcxfcbc;Kbz:rjjjb8Aaqcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgxBdxaqceBd2axaialavcbcbz:ejjjb8AaqcualcdtalcFFFFi0Egmcbyd1:jjjbHjjjjbbgiBdzaqcdBd2dndnJFF959eJbbjZawJbbjZawJbbjZ9DE:vawJ9VO:d869DEgw:lJbbb9p9DTmbaw:OhPxekcjjjj94hPkadci9Uhsarco9UhzdndnaombaPcd9imekdnalTmbaPcuf:YhwdnaoTmbcbhvaihHaxhOindndnaoavfRbbceGTmbavcjjjjlVhAxekdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHaOcxfhOalavcefgv9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkadTmbcbhkaehvcbhOinakaiavclfydbcdtfydbgHaiavcwfydbcdtfydbgA9haiavydbcdtfydbgXaH9haXaA9hGGfhkavcxfhvaOcifgOad6mbkkarci9UhQdndnaz:Z:rJbbbZMgw:lJbbb9p9DTmbaw:Ohvxekcjjjj94hvkaQ:ZhLcbhKc:bwhHdndninashYaHhXaPhrakg8AaQ9pmeaXar9Rcd9imeavaXcufavaX9iEarcefavar9kEhzdnalTmbazcuf:YhwdnaoTmbcbhOaihPaxhvindndnaoaOfRbbceGTmbaOcjjjjlVhHxekdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhHxekcjjjj94hHkaHcqthHdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskaHasVhHdndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskaHascCtVhHkaPaHBdbaPclfhPavcxfhvalaOcefgO9hmbxdkkaxhvaihOalhPindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhHxekcjjjj94hHkaHcCthHdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskascqtaHVhHdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskaOaHasVBdbavcxfhvaOclfhOaPcufgPmbkkcbhOdnadTmbaehvcbhPinaOaiavclfydbcdtfydbgHaiavcwfydbcdtfydbgs9haiavydbcdtfydbgAaH9haAas9hGGfhOavcxfhvaPcifgPad6mbkkaYhsaOhkaXhHazhPdnaOaQ9nmbaOhsa8AhkazhHarhPkdndnaKcl0mbdnaY:Zgwa8A:ZgC:taz:YgEar:Y:tg3aEaX:Y:tg5aO:Zg8EaL:tNNNawaL:ta5NaCa8E:tNaCaL:ta3Na8Eaw:tNM:vaEMJbbbZMgw:lJbbb9p9DTmbaw:Ohvxdkcjjjj94hvxekaPaHfcd9ThvkaKcefgKcs9hmbxdkka8AhkarhPkdndndnakmbJbbjZhwcbhicdhvaDmexdkalcd4alfhHcehOinaOgvcethOavaH6mbkcbhOaqcuavcdtgravcFFFFi0Ecbyd1:jjjbHjjjjbbgzBdCaqciBd2aqamcbyd1:jjjbHjjjjbbgXBdKaqclBd2dndndndnalTmbaPcuf:YhwaoTmecbhOaihHaxhPindndnaoaOfRbbceGTmbaOcjjjjlVhsxekdndnaPclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskascqthsdndnaPcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkasaAVhsdndnaPIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkasaAcCtVhskaHasBdbaHclfhHaPcxfhPalaOcefgO9hmbxikkazcFearz:rjjjb8AcbhrcbhvxdkaxhOaihPalhHindndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohsxekcjjjj94hskascCthsdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqtasVhsdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaPasaAVBdbaOcxfhOaPclfhPaHcufgHmbkkazcFearz:rjjjbhAavcufhocbhrcbhzindndndnaAaiazcdtgKfydbgHcm4aH7c:v;t;h;Ev2gvcs4av7aoGgPcdtfgsydbgOcuSmbcehvinaiaOcdtgOfydbaHSmdaPavfhOavcefhvaAaOaoGgPcdtfgsydbgOcu9hmbkkasazBdbarhvarcefhrxekaXaOfydbhvkaXaKfavBdbazcefgzal9hmbkcuarc8S2gOarc;D;O;f8U0EhvkcbhAaqavcbyd1:jjjbHjjjjbbgvBd3aqcvBd2avcbaOz:rjjjbhOdnadTmbaehiinJbbnnJbbjZaXaiydbgHcdtfydbgvaXaiclfydbgPcdtfydbgzSavaXaicwfydbgscdtfydbgKSGgoEh8FdnaxaPcx2fgPIdbaxaHcx2fgHIdbg8E:tgCaxascx2fgsIdlaHIdlg3:tgwNasIdba8E:tgEaPIdla3:tgaN:tgLaLNaaasIdwaHIdwg5:tghNawaPIdwa5:tgaN:tgwawNaaaENahaCN:tgCaCNMM:rgEJbbbb9ETmbaLaE:vhLaCaE:vhCawaE:vhwkaOavc8S2fgvavIdbawa8FaE:rNgEawNNgaMUdbavaCaEaCNghNggavIdlMUdlavaLaEaLNg8FNg8JavIdwMUdwavahawNghavIdxMUdxava8FawNg8KavIdzMUdzava8FaCNg8FavIdCMUdCavawaEaLa5Nawa8ENa3aCNMM:mg3Ng8ENgwavIdKMUdKavaCa8ENgCavId3MUd3avaLa8ENgLavIdaMUdaava8Ea3Ng8EavId8KMUd8KavaEavIdyMUdydnaombaOazc8S2fgvaaavIdbMUdbavagavIdlMUdlava8JavIdwMUdwavahavIdxMUdxava8KavIdzMUdzava8FavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava8EavId8KMUd8KavaEavIdyMUdyaOaKc8S2fgvaaavIdbMUdbavagavIdlMUdlava8JavIdwMUdwavahavIdxMUdxava8KavIdzMUdzava8FavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava8EavId8KMUd8KavaEavIdyMUdykaicxfhiaAcifgAad6mbkkcbhHaqcuarcdtgvarcFFFFi0Egicbyd1:jjjbHjjjjbbgPBdaaqcoBd2aqaicbyd1:jjjbHjjjjbbgiBd8KaqcrBd2aPcFeavz:rjjjbhzdnalTmbaXhPinJbbbbJbbjZaOaPydbgsc8S2fgvIdygw:vawJbbbb9BEavIdwaxcwfIdbgwNavIdzaxIdbgCNavIdaMgLaLMMawNavIdlaxclfIdbgLNavIdCawNavId3MgwawMMaLNavIdbaCNavIdxaLNavIdKMgwawMMaCNavId8KMMM:lNhwdndnazascdtgvfgsydbcuSmbaiavfIdbaw9ETmekasaHBdbaiavfawUdbkaPclfhPaxcxfhxalaHcefgH9hmbkkJbbbbhwdnarTmbinaiIdbgCawawaC9DEhwaiclfhiarcufgrmbkkakcd4akfhOcehiinaigvcethiavaO6mbkcbhiaqcuavcdtgOavcFFFFi0Ecbyd1:jjjbHjjjjbbgPBdyaPcFeaOz:rjjjbhsdnadTmbavcufhAcbhrcbhxindnaXaeaxcdtfgvydbcdtfydbgiaXavclfydbcdtfydbgOSmbaiaXavcwfydbcdtfydbgvSmbaOavSmbazavcdtfydbhHdndnazaOcdtfydbgvazaicdtfydbgi9pmbavaH9pmbaHhlaihoavhHxekdnaHai9pmbaHav9pmbaihlavhoxekavhlaHhoaihHkabarcx2fgvaHBdbavcwfaoBdbavclfalBdbdnasaoc:3F;N8N2alc:F:b:DD27aHc;D;O:B8J27aAGgOcdtfgvydbgicuSmbcehPinaPhvdnabaicx2fgiydbaH9hmbaiydlal9hmbaiydwaoSmikavcefhPasaOavfaAGgOcdtfgvydbgicu9hmbkkavarBdbarcefhrkaxcifgxad6mbkarci2hikdnaDmbcwhvxdkaw:rhwcwhvkaDawUdbkavcdthvdninavTmeavc98fgvaqcxffydbcbyd:m:jjjbH:bjjjbbxbkkaqc;Wbf8Kjjjjbaik:2ldwue9:8Jjjjjbc;Wb9Rgr8Kjjjjbcbhwarcxfcbc;Kbz:rjjjb8AdnabaeSmbabaeadcdtz:qjjjb8AkarcualcdtalcFFFFi0EgDcbyd1:jjjbHjjjjbbgqBdxarceBd2aqcbaialavcbarcxfz:djjjbcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbhkarcxfaryd2gxcdtgmfakBdbaraxcefgPBd2akaialavcbcbz:ejjjb8AarcxfaPcdtfaDcbyd1:jjjbHjjjjbbgvBdbaraxcdfgiBd2arcxfaicdtfcuavalaeadaqz:fjjjbgecltaecjjjjiGEcbyd1:jjjbHjjjjbbgiBdbaiaeavakalz:gjjjbdnadTmbaoaoNhocbhwabhlcbhkindnaiavalydbgecdtfydbcdtfIdbao9ETmbalclf8PdbhsabawcdtfgqaeBdbaqclfas83dbawcifhwkalcxfhlakcifgkad6mbkkaxcifhlamarcxffcwfhkdninalTmeakydbcbyd:m:jjjbH:bjjjbbakc98fhkalcufhlxbkkarc;Wbf8Kjjjjbawk:FCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:rjjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbcbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd1:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:rjjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:rjjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:rjjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:rjjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:rjjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBdaawcoBd2awaicbyd1:jjjbHjjjjbbg3Bd8KaecFeaYz:rjjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:qjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:rjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbeeeeeebebbeeebeebbbbebebbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb";
608
- var wasmpack = new Uint8Array([
609
- 32,
610
- 0,
611
- 65,
612
- 2,
613
- 1,
614
- 106,
615
- 34,
616
- 33,
617
- 3,
618
- 128,
619
- 11,
620
- 4,
621
- 13,
622
- 64,
623
- 6,
624
- 253,
625
- 10,
626
- 7,
627
- 15,
628
- 116,
629
- 127,
630
- 5,
631
- 8,
632
- 12,
633
- 40,
634
- 16,
635
- 19,
636
- 54,
637
- 20,
638
- 9,
639
- 27,
640
- 255,
641
- 113,
642
- 17,
643
- 42,
644
- 67,
645
- 24,
646
- 23,
647
- 146,
648
- 148,
649
- 18,
650
- 14,
651
- 22,
652
- 45,
653
- 70,
654
- 69,
655
- 56,
656
- 114,
657
- 101,
658
- 21,
659
- 25,
660
- 63,
661
- 75,
662
- 136,
663
- 108,
664
- 28,
665
- 118,
666
- 29,
667
- 73,
668
- 115
669
- ]);
670
- if (typeof WebAssembly !== "object") {
671
- return {
672
- supported: false
673
- };
674
- }
675
- var instance;
676
- var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
677
- instance = result.instance;
678
- instance.exports.__wasm_call_ctors();
679
- });
680
- function unpack(data) {
681
- var result = new Uint8Array(data.length);
682
- for (var i = 0; i < data.length; ++i) {
683
- var ch = data.charCodeAt(i);
684
- result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
685
- }
686
- var write = 0;
687
- for (var i = 0; i < data.length; ++i) {
688
- result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
689
- }
690
- return result.buffer.slice(0, write);
691
- }
692
- function assert(cond) {
693
- if (!cond) {
694
- throw new Error("Assertion failed");
695
- }
696
- }
697
- function bytes(view) {
698
- return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
699
- }
700
- function reorder(fun, indices, vertices) {
701
- var sbrk = instance.exports.sbrk;
702
- var ip = sbrk(indices.length * 4);
703
- var rp = sbrk(vertices * 4);
704
- var heap = new Uint8Array(instance.exports.memory.buffer);
705
- var indices8 = bytes(indices);
706
- heap.set(indices8, ip);
707
- var unique = fun(rp, ip, indices.length, vertices);
708
- heap = new Uint8Array(instance.exports.memory.buffer);
709
- var remap = new Uint32Array(vertices);
710
- new Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));
711
- indices8.set(heap.subarray(ip, ip + indices.length * 4));
712
- sbrk(ip - sbrk(0));
713
- for (var i = 0; i < indices.length; ++i) indices[i] = remap[indices[i]];
714
- return [remap, unique];
715
- }
716
- function maxindex(source) {
717
- var result = 0;
718
- for (var i = 0; i < source.length; ++i) {
719
- var index = source[i];
720
- result = result < index ? index : result;
721
- }
722
- return result;
723
- }
724
- function simplify(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_index_count, target_error, options) {
725
- var sbrk = instance.exports.sbrk;
726
- var te = sbrk(4);
727
- var ti = sbrk(index_count * 4);
728
- var sp = sbrk(vertex_count * vertex_positions_stride);
729
- var si = sbrk(index_count * 4);
730
- var heap = new Uint8Array(instance.exports.memory.buffer);
731
- heap.set(bytes(vertex_positions), sp);
732
- heap.set(bytes(indices), si);
733
- var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_index_count, target_error, options, te);
734
- heap = new Uint8Array(instance.exports.memory.buffer);
735
- var target = new Uint32Array(result);
736
- bytes(target).set(heap.subarray(ti, ti + result * 4));
737
- var error = new Float32Array(1);
738
- bytes(error).set(heap.subarray(te, te + 4));
739
- sbrk(te - sbrk(0));
740
- return [target, error[0]];
741
- }
742
- function simplifyAttr(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, options) {
743
- var sbrk = instance.exports.sbrk;
744
- var te = sbrk(4);
745
- var ti = sbrk(index_count * 4);
746
- var sp = sbrk(vertex_count * vertex_positions_stride);
747
- var sa = sbrk(vertex_count * vertex_attributes_stride);
748
- var sw = sbrk(attribute_weights.length * 4);
749
- var si = sbrk(index_count * 4);
750
- var vl = vertex_lock ? sbrk(vertex_count) : 0;
751
- var heap = new Uint8Array(instance.exports.memory.buffer);
752
- heap.set(bytes(vertex_positions), sp);
753
- heap.set(bytes(vertex_attributes), sa);
754
- heap.set(bytes(attribute_weights), sw);
755
- heap.set(bytes(indices), si);
756
- if (vertex_lock) {
757
- heap.set(bytes(vertex_lock), vl);
758
- }
759
- var result = fun(
760
- ti,
761
- si,
762
- index_count,
763
- sp,
764
- vertex_count,
765
- vertex_positions_stride,
766
- sa,
767
- vertex_attributes_stride,
768
- sw,
769
- attribute_weights.length,
770
- vl,
771
- target_index_count,
772
- target_error,
773
- options,
774
- te
775
- );
776
- heap = new Uint8Array(instance.exports.memory.buffer);
777
- var target = new Uint32Array(result);
778
- bytes(target).set(heap.subarray(ti, ti + result * 4));
779
- var error = new Float32Array(1);
780
- bytes(error).set(heap.subarray(te, te + 4));
781
- sbrk(te - sbrk(0));
782
- return [target, error[0]];
783
- }
784
- function simplifyUpdate(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, options) {
785
- var sbrk = instance.exports.sbrk;
786
- var te = sbrk(4);
787
- var sp = sbrk(vertex_count * vertex_positions_stride);
788
- var sa = sbrk(vertex_count * vertex_attributes_stride);
789
- var sw = sbrk(attribute_weights.length * 4);
790
- var si = sbrk(index_count * 4);
791
- var vl = vertex_lock ? sbrk(vertex_count) : 0;
792
- var heap = new Uint8Array(instance.exports.memory.buffer);
793
- heap.set(bytes(vertex_positions), sp);
794
- heap.set(bytes(vertex_attributes), sa);
795
- heap.set(bytes(attribute_weights), sw);
796
- heap.set(bytes(indices), si);
797
- if (vertex_lock) {
798
- heap.set(bytes(vertex_lock), vl);
799
- }
800
- var result = fun(
801
- si,
802
- index_count,
803
- sp,
804
- vertex_count,
805
- vertex_positions_stride,
806
- sa,
807
- vertex_attributes_stride,
808
- sw,
809
- attribute_weights.length,
810
- vl,
811
- target_index_count,
812
- target_error,
813
- options,
814
- te
815
- );
816
- heap = new Uint8Array(instance.exports.memory.buffer);
817
- bytes(indices).set(heap.subarray(si, si + result * 4));
818
- bytes(vertex_positions).set(heap.subarray(sp, sp + vertex_count * vertex_positions_stride));
819
- bytes(vertex_attributes).set(heap.subarray(sa, sa + vertex_count * vertex_attributes_stride));
820
- var error = new Float32Array(1);
821
- bytes(error).set(heap.subarray(te, te + 4));
822
- sbrk(te - sbrk(0));
823
- return [result, error[0]];
824
- }
825
- function simplifyScale(fun, vertex_positions, vertex_count, vertex_positions_stride) {
826
- var sbrk = instance.exports.sbrk;
827
- var sp = sbrk(vertex_count * vertex_positions_stride);
828
- var heap = new Uint8Array(instance.exports.memory.buffer);
829
- heap.set(bytes(vertex_positions), sp);
830
- var result = fun(sp, vertex_count, vertex_positions_stride);
831
- sbrk(sp - sbrk(0));
832
- return result;
833
- }
834
- function simplifyPoints(fun, vertex_positions, vertex_count, vertex_positions_stride, vertex_colors, vertex_colors_stride, color_weight, target_vertex_count) {
835
- var sbrk = instance.exports.sbrk;
836
- var ti = sbrk(target_vertex_count * 4);
837
- var sp = sbrk(vertex_count * vertex_positions_stride);
838
- var sc = sbrk(vertex_count * vertex_colors_stride);
839
- var heap = new Uint8Array(instance.exports.memory.buffer);
840
- heap.set(bytes(vertex_positions), sp);
841
- if (vertex_colors) {
842
- heap.set(bytes(vertex_colors), sc);
843
- }
844
- var result = fun(ti, sp, vertex_count, vertex_positions_stride, sc, vertex_colors_stride, color_weight, target_vertex_count);
845
- heap = new Uint8Array(instance.exports.memory.buffer);
846
- var target = new Uint32Array(result);
847
- bytes(target).set(heap.subarray(ti, ti + result * 4));
848
- sbrk(ti - sbrk(0));
849
- return target;
850
- }
851
- function simplifySloppy(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_lock, target_index_count, target_error) {
852
- var sbrk = instance.exports.sbrk;
853
- var te = sbrk(4);
854
- var ti = sbrk(index_count * 4);
855
- var sp = sbrk(vertex_count * vertex_positions_stride);
856
- var si = sbrk(index_count * 4);
857
- var vl = vertex_lock ? sbrk(vertex_count) : 0;
858
- var heap = new Uint8Array(instance.exports.memory.buffer);
859
- heap.set(bytes(vertex_positions), sp);
860
- heap.set(bytes(indices), si);
861
- if (vertex_lock) {
862
- heap.set(bytes(vertex_lock), vl);
863
- }
864
- var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, vl, target_index_count, target_error, te);
865
- heap = new Uint8Array(instance.exports.memory.buffer);
866
- var target = new Uint32Array(result);
867
- bytes(target).set(heap.subarray(ti, ti + result * 4));
868
- var error = new Float32Array(1);
869
- bytes(error).set(heap.subarray(te, te + 4));
870
- sbrk(te - sbrk(0));
871
- return [target, error[0]];
872
- }
873
- function simplifyPrune(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_error) {
874
- var sbrk = instance.exports.sbrk;
875
- var ti = sbrk(index_count * 4);
876
- var sp = sbrk(vertex_count * vertex_positions_stride);
877
- var si = sbrk(index_count * 4);
878
- var heap = new Uint8Array(instance.exports.memory.buffer);
879
- heap.set(bytes(vertex_positions), sp);
880
- heap.set(bytes(indices), si);
881
- var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_error);
882
- heap = new Uint8Array(instance.exports.memory.buffer);
883
- var target = new Uint32Array(result);
884
- bytes(target).set(heap.subarray(ti, ti + result * 4));
885
- sbrk(ti - sbrk(0));
886
- return target;
887
- }
888
- var simplifyOptions = {
889
- LockBorder: 1,
890
- Sparse: 2,
891
- ErrorAbsolute: 4,
892
- Prune: 8,
893
- Regularize: 16,
894
- Permissive: 32,
895
- _InternalDebug: 1 << 30
896
- // internal, don't use!
897
- };
898
- return {
899
- ready,
900
- supported: true,
901
- compactMesh: function(indices) {
902
- assert(
903
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
904
- );
905
- assert(indices.length % 3 == 0);
906
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
907
- return reorder(instance.exports.meshopt_optimizeVertexFetchRemap, indices32, maxindex(indices) + 1);
908
- },
909
- simplify: function(indices, vertex_positions, vertex_positions_stride, target_index_count, target_error, flags) {
910
- assert(
911
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
912
- );
913
- assert(indices.length % 3 == 0);
914
- assert(vertex_positions instanceof Float32Array);
915
- assert(vertex_positions.length % vertex_positions_stride == 0);
916
- assert(vertex_positions_stride >= 3);
917
- assert(target_index_count >= 0 && target_index_count <= indices.length);
918
- assert(target_index_count % 3 == 0);
919
- assert(target_error >= 0);
920
- var options = 0;
921
- for (var i = 0; i < (flags ? flags.length : 0); ++i) {
922
- assert(flags[i] in simplifyOptions);
923
- options |= simplifyOptions[flags[i]];
924
- }
925
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
926
- var result = simplify(
927
- instance.exports.meshopt_simplify,
928
- indices32,
929
- indices.length,
930
- vertex_positions,
931
- vertex_positions.length / vertex_positions_stride,
932
- vertex_positions_stride * 4,
933
- target_index_count,
934
- target_error,
935
- options
936
- );
937
- result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
938
- return result;
939
- },
940
- simplifyWithAttributes: function(indices, vertex_positions, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, flags) {
941
- assert(
942
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
943
- );
944
- assert(indices.length % 3 == 0);
945
- assert(vertex_positions instanceof Float32Array);
946
- assert(vertex_positions.length % vertex_positions_stride == 0);
947
- assert(vertex_positions_stride >= 3);
948
- assert(vertex_attributes instanceof Float32Array);
949
- assert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));
950
- assert(vertex_attributes_stride >= 0);
951
- assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
952
- assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
953
- assert(target_index_count >= 0 && target_index_count <= indices.length);
954
- assert(target_index_count % 3 == 0);
955
- assert(target_error >= 0);
956
- assert(Array.isArray(attribute_weights));
957
- assert(vertex_attributes_stride >= attribute_weights.length);
958
- assert(attribute_weights.length <= 32);
959
- for (var i = 0; i < attribute_weights.length; ++i) {
960
- assert(attribute_weights[i] >= 0);
961
- }
962
- var options = 0;
963
- for (var i = 0; i < (flags ? flags.length : 0); ++i) {
964
- assert(flags[i] in simplifyOptions);
965
- options |= simplifyOptions[flags[i]];
966
- }
967
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
968
- var result = simplifyAttr(
969
- instance.exports.meshopt_simplifyWithAttributes,
970
- indices32,
971
- indices.length,
972
- vertex_positions,
973
- vertex_positions.length / vertex_positions_stride,
974
- vertex_positions_stride * 4,
975
- vertex_attributes,
976
- vertex_attributes_stride * 4,
977
- new Float32Array(attribute_weights),
978
- vertex_lock,
979
- target_index_count,
980
- target_error,
981
- options
982
- );
983
- result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
984
- return result;
985
- },
986
- simplifyWithUpdate: function(indices, vertex_positions, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, flags) {
987
- assert(
988
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
989
- );
990
- assert(indices.length % 3 == 0);
991
- assert(vertex_positions instanceof Float32Array);
992
- assert(vertex_positions.length % vertex_positions_stride == 0);
993
- assert(vertex_positions_stride >= 3);
994
- assert(vertex_attributes instanceof Float32Array);
995
- assert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));
996
- assert(vertex_attributes_stride >= 0);
997
- assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
998
- assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
999
- assert(target_index_count >= 0 && target_index_count <= indices.length);
1000
- assert(target_index_count % 3 == 0);
1001
- assert(target_error >= 0);
1002
- assert(Array.isArray(attribute_weights));
1003
- assert(vertex_attributes_stride >= attribute_weights.length);
1004
- assert(attribute_weights.length <= 32);
1005
- for (var i = 0; i < attribute_weights.length; ++i) {
1006
- assert(attribute_weights[i] >= 0);
1007
- }
1008
- var options = 0;
1009
- for (var i = 0; i < (flags ? flags.length : 0); ++i) {
1010
- assert(flags[i] in simplifyOptions);
1011
- options |= simplifyOptions[flags[i]];
1012
- }
1013
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1014
- var result = simplifyUpdate(
1015
- instance.exports.meshopt_simplifyWithUpdate,
1016
- indices32,
1017
- indices.length,
1018
- vertex_positions,
1019
- vertex_positions.length / vertex_positions_stride,
1020
- vertex_positions_stride * 4,
1021
- vertex_attributes,
1022
- vertex_attributes_stride * 4,
1023
- new Float32Array(attribute_weights),
1024
- vertex_lock,
1025
- target_index_count,
1026
- target_error,
1027
- options
1028
- );
1029
- if (indices !== indices32) {
1030
- for (var i = 0; i < result[0]; ++i) {
1031
- indices[i] = indices32[i];
1032
- }
1033
- }
1034
- return result;
1035
- },
1036
- getScale: function(vertex_positions, vertex_positions_stride) {
1037
- assert(vertex_positions instanceof Float32Array);
1038
- assert(vertex_positions.length % vertex_positions_stride == 0);
1039
- assert(vertex_positions_stride >= 3);
1040
- return simplifyScale(
1041
- instance.exports.meshopt_simplifyScale,
1042
- vertex_positions,
1043
- vertex_positions.length / vertex_positions_stride,
1044
- vertex_positions_stride * 4
1045
- );
1046
- },
1047
- simplifyPoints: function(vertex_positions, vertex_positions_stride, target_vertex_count, vertex_colors, vertex_colors_stride, color_weight) {
1048
- assert(vertex_positions instanceof Float32Array);
1049
- assert(vertex_positions.length % vertex_positions_stride == 0);
1050
- assert(vertex_positions_stride >= 3);
1051
- assert(target_vertex_count >= 0 && target_vertex_count <= vertex_positions.length / vertex_positions_stride);
1052
- if (vertex_colors) {
1053
- assert(vertex_colors instanceof Float32Array);
1054
- assert(vertex_colors.length % vertex_colors_stride == 0);
1055
- assert(vertex_colors_stride >= 3);
1056
- assert(vertex_positions.length / vertex_positions_stride == vertex_colors.length / vertex_colors_stride);
1057
- return simplifyPoints(
1058
- instance.exports.meshopt_simplifyPoints,
1059
- vertex_positions,
1060
- vertex_positions.length / vertex_positions_stride,
1061
- vertex_positions_stride * 4,
1062
- vertex_colors,
1063
- vertex_colors_stride * 4,
1064
- color_weight,
1065
- target_vertex_count
1066
- );
1067
- } else {
1068
- return simplifyPoints(
1069
- instance.exports.meshopt_simplifyPoints,
1070
- vertex_positions,
1071
- vertex_positions.length / vertex_positions_stride,
1072
- vertex_positions_stride * 4,
1073
- void 0,
1074
- 0,
1075
- 0,
1076
- target_vertex_count
1077
- );
1078
- }
1079
- },
1080
- simplifySloppy: function(indices, vertex_positions, vertex_positions_stride, vertex_lock, target_index_count, target_error) {
1081
- assert(
1082
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1083
- );
1084
- assert(indices.length % 3 == 0);
1085
- assert(vertex_positions instanceof Float32Array);
1086
- assert(vertex_positions.length % vertex_positions_stride == 0);
1087
- assert(vertex_positions_stride >= 3);
1088
- assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
1089
- assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
1090
- assert(target_index_count >= 0 && target_index_count <= indices.length);
1091
- assert(target_index_count % 3 == 0);
1092
- assert(target_error >= 0);
1093
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1094
- var result = simplifySloppy(
1095
- instance.exports.meshopt_simplifySloppy,
1096
- indices32,
1097
- indices.length,
1098
- vertex_positions,
1099
- vertex_positions.length / vertex_positions_stride,
1100
- vertex_positions_stride * 4,
1101
- vertex_lock,
1102
- target_index_count,
1103
- target_error
1104
- );
1105
- result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
1106
- return result;
1107
- },
1108
- simplifyPrune: function(indices, vertex_positions, vertex_positions_stride, target_error) {
1109
- assert(
1110
- indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1111
- );
1112
- assert(indices.length % 3 == 0);
1113
- assert(vertex_positions instanceof Float32Array);
1114
- assert(vertex_positions.length % vertex_positions_stride == 0);
1115
- assert(vertex_positions_stride >= 3);
1116
- assert(target_error >= 0);
1117
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1118
- var result = simplifyPrune(
1119
- instance.exports.meshopt_simplifyPrune,
1120
- indices32,
1121
- indices.length,
1122
- vertex_positions,
1123
- vertex_positions.length / vertex_positions_stride,
1124
- vertex_positions_stride * 4,
1125
- target_error
1126
- );
1127
- result = indices instanceof Uint32Array ? result : new indices.constructor(result);
1128
- return result;
1129
- }
1130
- };
1131
- })();
1132
-
1133
- // node_modules/meshoptimizer/meshopt_clusterizer.module.js
1134
- var MeshoptClusterizer = (function() {
1135
- var wasm = "b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiAOdilvorwDqqDkbiibeilve9Weiiviebeoweuec;G:Odkr;qeDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bqL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbkl79IV9RbxDwebcekdszq:x9DOdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:ojjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;u1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;u1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;u1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;u1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;u1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;u1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:ojjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;u1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:ojjjbhYamcuaLcK2alcjjjjd0Ecbyd;u1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;u1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;u1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;u1jjbHjjjjbbgABd:4waAcFeasz:ojjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:ojjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:ojjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;y1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:ojjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:ojjjb8Aarc;Gbfcbavz:ojjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:Reeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrz1jjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:ojjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:rjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:ojjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:njjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb";
1136
- var wasmpack = new Uint8Array([
1137
- 32,
1138
- 0,
1139
- 65,
1140
- 2,
1141
- 1,
1142
- 106,
1143
- 34,
1144
- 33,
1145
- 3,
1146
- 128,
1147
- 11,
1148
- 4,
1149
- 13,
1150
- 64,
1151
- 6,
1152
- 253,
1153
- 10,
1154
- 7,
1155
- 15,
1156
- 116,
1157
- 127,
1158
- 5,
1159
- 8,
1160
- 12,
1161
- 40,
1162
- 16,
1163
- 19,
1164
- 54,
1165
- 20,
1166
- 9,
1167
- 27,
1168
- 255,
1169
- 113,
1170
- 17,
1171
- 42,
1172
- 67,
1173
- 24,
1174
- 23,
1175
- 146,
1176
- 148,
1177
- 18,
1178
- 14,
1179
- 22,
1180
- 45,
1181
- 70,
1182
- 69,
1183
- 56,
1184
- 114,
1185
- 101,
1186
- 21,
1187
- 25,
1188
- 63,
1189
- 75,
1190
- 136,
1191
- 108,
1192
- 28,
1193
- 118,
1194
- 29,
1195
- 73,
1196
- 115
1197
- ]);
1198
- if (typeof WebAssembly !== "object") {
1199
- return {
1200
- supported: false
1201
- };
1202
- }
1203
- var instance;
1204
- var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
1205
- instance = result.instance;
1206
- instance.exports.__wasm_call_ctors();
1207
- });
1208
- function unpack(data) {
1209
- var result = new Uint8Array(data.length);
1210
- for (var i = 0; i < data.length; ++i) {
1211
- var ch = data.charCodeAt(i);
1212
- result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
1213
- }
1214
- var write = 0;
1215
- for (var i = 0; i < data.length; ++i) {
1216
- result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
1217
- }
1218
- return result.buffer.slice(0, write);
1219
- }
1220
- function assert(cond) {
1221
- if (!cond) {
1222
- throw new Error("Assertion failed");
1223
- }
1224
- }
1225
- function bytes(view) {
1226
- return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
1227
- }
1228
- var BOUNDS_SIZE = 48;
1229
- var MESHLET_SIZE = 16;
1230
- function extractMeshlet(buffers, index) {
1231
- var vertex_offset = buffers.meshlets[index * 4 + 0];
1232
- var triangle_offset = buffers.meshlets[index * 4 + 1];
1233
- var vertex_count = buffers.meshlets[index * 4 + 2];
1234
- var triangle_count = buffers.meshlets[index * 4 + 3];
1235
- return {
1236
- vertices: buffers.vertices.subarray(vertex_offset, vertex_offset + vertex_count),
1237
- triangles: buffers.triangles.subarray(triangle_offset, triangle_offset + triangle_count * 3)
1238
- };
1239
- }
1240
- function buildMeshlets(indices, vertex_positions, vertex_count, vertex_positions_stride, max_vertices, max_triangles, cone_weight) {
1241
- var sbrk = instance.exports.sbrk;
1242
- var max_meshlets = instance.exports.meshopt_buildMeshletsBound(indices.length, max_vertices, max_triangles);
1243
- var meshletsp = sbrk(max_meshlets * MESHLET_SIZE);
1244
- var meshlet_verticesp = sbrk(max_meshlets * max_vertices * 4);
1245
- var meshlet_trianglesp = sbrk(max_meshlets * max_triangles * 3);
1246
- var indicesp = sbrk(indices.byteLength);
1247
- var verticesp = sbrk(vertex_positions.byteLength);
1248
- var heap = new Uint8Array(instance.exports.memory.buffer);
1249
- heap.set(bytes(indices), indicesp);
1250
- heap.set(bytes(vertex_positions), verticesp);
1251
- var count = instance.exports.meshopt_buildMeshlets(
1252
- meshletsp,
1253
- meshlet_verticesp,
1254
- meshlet_trianglesp,
1255
- indicesp,
1256
- indices.length,
1257
- verticesp,
1258
- vertex_count,
1259
- vertex_positions_stride,
1260
- max_vertices,
1261
- max_triangles,
1262
- cone_weight
1263
- );
1264
- heap = new Uint8Array(instance.exports.memory.buffer);
1265
- var meshletBytes = heap.subarray(meshletsp, meshletsp + count * MESHLET_SIZE);
1266
- var meshlets = new Uint32Array(meshletBytes.buffer, meshletBytes.byteOffset, meshletBytes.byteLength / 4).slice();
1267
- for (var i = 0; i < count; ++i) {
1268
- var vertex_offset = meshlets[i * 4 + 0];
1269
- var triangle_offset = meshlets[i * 4 + 1];
1270
- var vertex_count = meshlets[i * 4 + 2];
1271
- var triangle_count = meshlets[i * 4 + 3];
1272
- instance.exports.meshopt_optimizeMeshlet(
1273
- meshlet_verticesp + vertex_offset * 4,
1274
- meshlet_trianglesp + triangle_offset,
1275
- triangle_count,
1276
- vertex_count
1277
- );
1278
- }
1279
- var last_vertex_offset = meshlets[(count - 1) * 4 + 0];
1280
- var last_triangle_offset = meshlets[(count - 1) * 4 + 1];
1281
- var last_vertex_count = meshlets[(count - 1) * 4 + 2];
1282
- var last_triangle_count = meshlets[(count - 1) * 4 + 3];
1283
- var used_vertices = last_vertex_offset + last_vertex_count;
1284
- var used_triangles = last_triangle_offset + (last_triangle_count * 3 + 3 & ~3);
1285
- var result = {
1286
- meshlets,
1287
- vertices: new Uint32Array(heap.buffer, meshlet_verticesp, used_vertices).slice(),
1288
- triangles: new Uint8Array(heap.buffer, meshlet_trianglesp, used_triangles * 3).slice(),
1289
- meshletCount: count
1290
- };
1291
- sbrk(meshletsp - sbrk(0));
1292
- return result;
1293
- }
1294
- function extractBounds(boundsp) {
1295
- var bounds_floats = new Float32Array(instance.exports.memory.buffer, boundsp, BOUNDS_SIZE / 4);
1296
- return {
1297
- centerX: bounds_floats[0],
1298
- centerY: bounds_floats[1],
1299
- centerZ: bounds_floats[2],
1300
- radius: bounds_floats[3],
1301
- coneApexX: bounds_floats[4],
1302
- coneApexY: bounds_floats[5],
1303
- coneApexZ: bounds_floats[6],
1304
- coneAxisX: bounds_floats[7],
1305
- coneAxisY: bounds_floats[8],
1306
- coneAxisZ: bounds_floats[9],
1307
- coneCutoff: bounds_floats[10]
1308
- };
1309
- }
1310
- function computeMeshletBounds(buffers, vertex_positions, vertex_count, vertex_positions_stride) {
1311
- var sbrk = instance.exports.sbrk;
1312
- var results = [];
1313
- var verticesp = sbrk(vertex_positions.byteLength);
1314
- var meshlet_verticesp = sbrk(buffers.vertices.byteLength);
1315
- var meshlet_trianglesp = sbrk(buffers.triangles.byteLength);
1316
- var resultp = sbrk(BOUNDS_SIZE);
1317
- var heap = new Uint8Array(instance.exports.memory.buffer);
1318
- heap.set(bytes(vertex_positions), verticesp);
1319
- heap.set(bytes(buffers.vertices), meshlet_verticesp);
1320
- heap.set(bytes(buffers.triangles), meshlet_trianglesp);
1321
- for (var i = 0; i < buffers.meshletCount; ++i) {
1322
- var vertex_offset = buffers.meshlets[i * 4 + 0];
1323
- var triangle_offset = buffers.meshlets[i * 4 + 0 + 1];
1324
- var triangle_count = buffers.meshlets[i * 4 + 0 + 3];
1325
- instance.exports.meshopt_computeMeshletBounds(
1326
- resultp,
1327
- meshlet_verticesp + vertex_offset * 4,
1328
- meshlet_trianglesp + triangle_offset,
1329
- triangle_count,
1330
- verticesp,
1331
- vertex_count,
1332
- vertex_positions_stride
1333
- );
1334
- results.push(extractBounds(resultp));
1335
- }
1336
- sbrk(verticesp - sbrk(0));
1337
- return results;
1338
- }
1339
- function computeClusterBounds(indices, vertex_positions, vertex_count, vertex_positions_stride) {
1340
- var sbrk = instance.exports.sbrk;
1341
- var resultp = sbrk(BOUNDS_SIZE);
1342
- var indicesp = sbrk(indices.byteLength);
1343
- var verticesp = sbrk(vertex_positions.byteLength);
1344
- var heap = new Uint8Array(instance.exports.memory.buffer);
1345
- heap.set(bytes(indices), indicesp);
1346
- heap.set(bytes(vertex_positions), verticesp);
1347
- instance.exports.meshopt_computeClusterBounds(resultp, indicesp, indices.length, verticesp, vertex_count, vertex_positions_stride);
1348
- var result = extractBounds(resultp);
1349
- sbrk(resultp - sbrk(0));
1350
- return result;
1351
- }
1352
- function computeSphereBounds(positions, count, positions_stride, radii, radii_stride) {
1353
- var sbrk = instance.exports.sbrk;
1354
- var resultp = sbrk(BOUNDS_SIZE);
1355
- var positionsp = sbrk(positions.byteLength);
1356
- var radiip = radii ? sbrk(radii.byteLength) : 0;
1357
- var heap = new Uint8Array(instance.exports.memory.buffer);
1358
- heap.set(bytes(positions), positionsp);
1359
- if (radii) {
1360
- heap.set(bytes(radii), radiip);
1361
- }
1362
- instance.exports.meshopt_computeSphereBounds(resultp, positionsp, count, positions_stride, radiip, radii ? radii_stride : 0);
1363
- var result = extractBounds(resultp);
1364
- sbrk(resultp - sbrk(0));
1365
- return result;
1366
- }
1367
- return {
1368
- ready,
1369
- supported: true,
1370
- buildMeshlets: function(indices, vertex_positions, vertex_positions_stride, max_vertices, max_triangles, cone_weight) {
1371
- assert(indices.length % 3 == 0);
1372
- assert(vertex_positions instanceof Float32Array);
1373
- assert(vertex_positions.length % vertex_positions_stride == 0);
1374
- assert(vertex_positions_stride >= 3);
1375
- assert(max_vertices <= 256 || max_vertices > 0);
1376
- assert(max_triangles <= 512);
1377
- assert(max_triangles % 4 == 0);
1378
- cone_weight = cone_weight || 0;
1379
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1380
- return buildMeshlets(
1381
- indices32,
1382
- vertex_positions,
1383
- vertex_positions.length / vertex_positions_stride,
1384
- vertex_positions_stride * 4,
1385
- max_vertices,
1386
- max_triangles,
1387
- cone_weight
1388
- );
1389
- },
1390
- extractMeshlet: function(buffers, index) {
1391
- assert(index >= 0 && index < buffers.meshletCount);
1392
- return extractMeshlet(buffers, index);
1393
- },
1394
- computeClusterBounds: function(indices, vertex_positions, vertex_positions_stride) {
1395
- assert(indices.length % 3 == 0);
1396
- assert(indices.length / 3 <= 512);
1397
- assert(vertex_positions instanceof Float32Array);
1398
- assert(vertex_positions.length % vertex_positions_stride == 0);
1399
- assert(vertex_positions_stride >= 3);
1400
- var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1401
- return computeClusterBounds(indices32, vertex_positions, vertex_positions.length / vertex_positions_stride, vertex_positions_stride * 4);
1402
- },
1403
- computeMeshletBounds: function(buffers, vertex_positions, vertex_positions_stride) {
1404
- assert(buffers.meshletCount != 0);
1405
- assert(vertex_positions instanceof Float32Array);
1406
- assert(vertex_positions.length % vertex_positions_stride == 0);
1407
- assert(vertex_positions_stride >= 3);
1408
- return computeMeshletBounds(buffers, vertex_positions, vertex_positions.length / vertex_positions_stride, vertex_positions_stride * 4);
1409
- },
1410
- computeSphereBounds: function(positions, positions_stride, radii, radii_stride) {
1411
- assert(positions instanceof Float32Array);
1412
- assert(positions.length % positions_stride == 0);
1413
- assert(positions_stride >= 3);
1414
- assert(!radii || radii instanceof Float32Array);
1415
- assert(!radii || radii.length % radii_stride == 0);
1416
- assert(!radii || radii_stride >= 1);
1417
- assert(!radii || positions.length / positions_stride == radii.length / radii_stride);
1418
- radii_stride = radii_stride || 0;
1419
- return computeSphereBounds(positions, positions.length / positions_stride, positions_stride * 4, radii, radii_stride * 4);
1420
- }
1421
- };
1422
- })();
1423
-
1424
- // packages/engine/Source/Scene/Axis.js
1425
- var Axis = {
1426
- /**
1427
- * Denotes the x-axis.
1428
- *
1429
- * @type {number}
1430
- * @constant
1431
- */
1432
- X: 0,
1433
- /**
1434
- * Denotes the y-axis.
1435
- *
1436
- * @type {number}
1437
- * @constant
1438
- */
1439
- Y: 1,
1440
- /**
1441
- * Denotes the z-axis.
1442
- *
1443
- * @type {number}
1444
- * @constant
1445
- */
1446
- Z: 2
1447
- };
1448
- Axis.Y_UP_TO_Z_UP = Matrix4_default.fromRotationTranslation(
1449
- // Rotation about PI/2 around the X-axis
1450
- Matrix3_default.fromArray([1, 0, 0, 0, 0, 1, 0, -1, 0])
1451
- );
1452
- Axis.Z_UP_TO_Y_UP = Matrix4_default.fromRotationTranslation(
1453
- // Rotation about -PI/2 around the X-axis
1454
- Matrix3_default.fromArray([1, 0, 0, 0, 0, -1, 0, 1, 0])
1455
- );
1456
- Axis.X_UP_TO_Z_UP = Matrix4_default.fromRotationTranslation(
1457
- // Rotation about -PI/2 around the Y-axis
1458
- Matrix3_default.fromArray([0, 0, 1, 0, 1, 0, -1, 0, 0])
1459
- );
1460
- Axis.Z_UP_TO_X_UP = Matrix4_default.fromRotationTranslation(
1461
- // Rotation about PI/2 around the Y-axis
1462
- Matrix3_default.fromArray([0, 0, -1, 0, 1, 0, 1, 0, 0])
1463
- );
1464
- Axis.X_UP_TO_Y_UP = Matrix4_default.fromRotationTranslation(
1465
- // Rotation about PI/2 around the Z-axis
1466
- Matrix3_default.fromArray([0, 1, 0, -1, 0, 0, 0, 0, 1])
1467
- );
1468
- Axis.Y_UP_TO_X_UP = Matrix4_default.fromRotationTranslation(
1469
- // Rotation about -PI/2 around the Z-axis
1470
- Matrix3_default.fromArray([0, -1, 0, 1, 0, 0, 0, 0, 1])
1471
- );
1472
- Axis.fromName = function(name) {
1473
- Check_default.typeOf.string("name", name);
1474
- return Axis[name];
1475
- };
1476
- var Axis_default = Object.freeze(Axis);
1477
-
1478
- // packages/engine/Source/Scene/SceneMode.js
1479
- var SceneMode = {
1480
- /**
1481
- * Morphing between mode, e.g., 3D to 2D.
1482
- *
1483
- * @type {number}
1484
- * @constant
1485
- */
1486
- MORPHING: 0,
1487
- /**
1488
- * Columbus View mode. A 2.5D perspective view where the map is laid out
1489
- * flat and objects with non-zero height are drawn above it.
1490
- *
1491
- * @type {number}
1492
- * @constant
1493
- */
1494
- COLUMBUS_VIEW: 1,
1495
- /**
1496
- * 2D mode. The map is viewed top-down with an orthographic projection.
1497
- *
1498
- * @type {number}
1499
- * @constant
1500
- */
1501
- SCENE2D: 2,
1502
- /**
1503
- * 3D mode. A traditional 3D perspective view of the globe.
1504
- *
1505
- * @type {number}
1506
- * @constant
1507
- */
1508
- SCENE3D: 3
1509
- };
1510
- SceneMode.getMorphTime = function(value) {
1511
- if (value === SceneMode.SCENE3D) {
1512
- return 1;
1513
- } else if (value === SceneMode.MORPHING) {
1514
- return void 0;
1515
- }
1516
- return 0;
1517
- };
1518
- var SceneMode_default = Object.freeze(SceneMode);
1519
-
1520
- // packages/engine/Source/Core/TaskProcessor.js
1521
- var import_urijs = __toESM(require_URI(), 1);
1522
-
1523
- // packages/engine/Source/Core/destroyObject.js
1524
- function returnTrue() {
1525
- return true;
1526
- }
1527
- function destroyObject(object, message) {
1528
- message = message ?? "This object was destroyed, i.e., destroy() was called.";
1529
- function throwOnDestroyed() {
1530
- throw new DeveloperError_default(message);
1531
- }
1532
- for (const key in object) {
1533
- if (typeof object[key] === "function") {
1534
- object[key] = throwOnDestroyed;
1535
- }
1536
- }
1537
- object.isDestroyed = returnTrue;
1538
- return void 0;
1539
- }
1540
- var destroyObject_default = destroyObject;
1541
-
1542
- // packages/engine/Source/Core/TaskProcessor.js
1543
- function canTransferArrayBuffer() {
1544
- if (!defined_default(TaskProcessor._canTransferArrayBuffer)) {
1545
- const worker = createWorker("transferTypedArrayTest");
1546
- worker.postMessage = worker.webkitPostMessage ?? worker.postMessage;
1547
- const value = 99;
1548
- const array = new Int8Array([value]);
1549
- try {
1550
- worker.postMessage(
1551
- {
1552
- array
1553
- },
1554
- [array.buffer]
1555
- );
1556
- } catch (e) {
1557
- TaskProcessor._canTransferArrayBuffer = false;
1558
- return TaskProcessor._canTransferArrayBuffer;
1559
- }
1560
- TaskProcessor._canTransferArrayBuffer = new Promise((resolve) => {
1561
- worker.onmessage = function(event) {
1562
- const array2 = event.data.array;
1563
- const result = defined_default(array2) && array2[0] === value;
1564
- resolve(result);
1565
- worker.terminate();
1566
- TaskProcessor._canTransferArrayBuffer = result;
1567
- };
1568
- });
1569
- }
1570
- return TaskProcessor._canTransferArrayBuffer;
1571
- }
1572
- var taskCompletedEvent = new Event_default();
1573
- function urlFromScript(script) {
1574
- let blob;
1575
- try {
1576
- blob = new Blob([script], {
1577
- type: "application/javascript"
1578
- });
1579
- } catch (e) {
1580
- const BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
1581
- const blobBuilder = new BlobBuilder();
1582
- blobBuilder.append(script);
1583
- blob = blobBuilder.getBlob("application/javascript");
1584
- }
1585
- const URL2 = window.URL || window.webkitURL;
1586
- return URL2.createObjectURL(blob);
1587
- }
1588
- function createWorker(url) {
1589
- const uri = new import_urijs.default(url);
1590
- const isUri = uri.scheme().length !== 0 && uri.fragment().length === 0;
1591
- const moduleID = url.replace(/\.js$/, "");
1592
- const options = {};
1593
- let workerPath;
1594
- let crossOriginUrl;
1595
- if (isCrossOriginUrl_default(url)) {
1596
- crossOriginUrl = url;
1597
- } else if (!isUri) {
1598
- const moduleAbsoluteUrl = buildModuleUrl_default(
1599
- `${TaskProcessor._workerModulePrefix}/${moduleID}.js`
1600
- );
1601
- if (isCrossOriginUrl_default(moduleAbsoluteUrl)) {
1602
- crossOriginUrl = moduleAbsoluteUrl;
1603
- }
1604
- }
1605
- if (crossOriginUrl) {
1606
- const script = `import "${crossOriginUrl}";`;
1607
- workerPath = urlFromScript(script);
1608
- options.type = "module";
1609
- return new Worker(workerPath, options);
1610
- }
1611
- if (!isUri && typeof CESIUM_WORKERS !== "undefined") {
1612
- const script = `
1613
- importScripts("${urlFromScript(CESIUM_WORKERS)}");
1614
- CesiumWorkers["${moduleID}"]();
1615
- `;
1616
- workerPath = urlFromScript(script);
1617
- return new Worker(workerPath, options);
1618
- }
1619
- workerPath = url;
1620
- if (!isUri) {
1621
- workerPath = buildModuleUrl_default(
1622
- `${TaskProcessor._workerModulePrefix + moduleID}.js`
1623
- );
1624
- }
1625
- if (!FeatureDetection_default.supportsEsmWebWorkers()) {
1626
- throw new RuntimeError_default(
1627
- "This browser is not supported. Please update your browser to continue."
1628
- );
1629
- }
1630
- options.type = "module";
1631
- return new Worker(workerPath, options);
1632
- }
1633
- async function getWebAssemblyLoaderConfig(processor, wasmOptions) {
1634
- const config = {
1635
- modulePath: void 0,
1636
- wasmBinaryFile: void 0,
1637
- wasmBinary: void 0
1638
- };
1639
- if (!FeatureDetection_default.supportsWebAssembly()) {
1640
- if (!defined_default(wasmOptions.fallbackModulePath)) {
1641
- throw new RuntimeError_default(
1642
- `This browser does not support Web Assembly, and no backup module was provided for ${processor._workerPath}`
1643
- );
1644
- }
1645
- config.modulePath = buildModuleUrl_default(wasmOptions.fallbackModulePath);
1646
- return config;
1647
- }
1648
- config.wasmBinaryFile = buildModuleUrl_default(wasmOptions.wasmBinaryFile);
1649
- const arrayBuffer = await Resource_default.fetchArrayBuffer({
1650
- url: config.wasmBinaryFile
1651
- });
1652
- config.wasmBinary = arrayBuffer;
1653
- return config;
1654
- }
1655
- function TaskProcessor(workerPath, maximumActiveTasks) {
1656
- this._workerPath = workerPath;
1657
- this._maximumActiveTasks = maximumActiveTasks ?? Number.POSITIVE_INFINITY;
1658
- this._activeTasks = 0;
1659
- this._nextID = 0;
1660
- this._webAssemblyPromise = void 0;
1661
- }
1662
- var createOnmessageHandler = (worker, id, resolve, reject) => {
1663
- const listener = ({ data }) => {
1664
- if (data.id !== id) {
1665
- return;
1666
- }
1667
- if (defined_default(data.error)) {
1668
- let error = data.error;
1669
- if (error.name === "RuntimeError") {
1670
- error = new RuntimeError_default(data.error.message);
1671
- error.stack = data.error.stack;
1672
- } else if (error.name === "DeveloperError") {
1673
- error = new DeveloperError_default(data.error.message);
1674
- error.stack = data.error.stack;
1675
- } else if (error.name === "Error") {
1676
- error = new Error(data.error.message);
1677
- error.stack = data.error.stack;
1678
- }
1679
- taskCompletedEvent.raiseEvent(error);
1680
- reject(error);
1681
- } else {
1682
- taskCompletedEvent.raiseEvent();
1683
- resolve(data.result);
1684
- }
1685
- worker.removeEventListener("message", listener);
1686
- };
1687
- return listener;
1688
- };
1689
- var emptyTransferableObjectArray = [];
1690
- async function runTask(processor, parameters, transferableObjects) {
1691
- const canTransfer = await Promise.resolve(canTransferArrayBuffer());
1692
- if (!defined_default(transferableObjects)) {
1693
- transferableObjects = emptyTransferableObjectArray;
1694
- } else if (!canTransfer) {
1695
- transferableObjects.length = 0;
1696
- }
1697
- const id = processor._nextID++;
1698
- const promise = new Promise((resolve, reject) => {
1699
- processor._worker.addEventListener(
1700
- "message",
1701
- createOnmessageHandler(processor._worker, id, resolve, reject)
1702
- );
1703
- });
1704
- processor._worker.postMessage(
1705
- {
1706
- id,
1707
- baseUrl: buildModuleUrl_default.getCesiumBaseUrl().url,
1708
- parameters,
1709
- canTransferArrayBuffer: canTransfer
1710
- },
1711
- transferableObjects
1712
- );
1713
- return promise;
1714
- }
1715
- async function scheduleTask(processor, parameters, transferableObjects) {
1716
- ++processor._activeTasks;
1717
- try {
1718
- const result = await runTask(processor, parameters, transferableObjects);
1719
- --processor._activeTasks;
1720
- return result;
1721
- } catch (error) {
1722
- --processor._activeTasks;
1723
- throw error;
1724
- }
1725
- }
1726
- TaskProcessor.prototype.scheduleTask = function(parameters, transferableObjects) {
1727
- if (!defined_default(this._worker)) {
1728
- this._worker = createWorker(this._workerPath);
1729
- }
1730
- if (this._activeTasks >= this._maximumActiveTasks) {
1731
- return void 0;
1732
- }
1733
- return scheduleTask(this, parameters, transferableObjects);
1734
- };
1735
- TaskProcessor.prototype.initWebAssemblyModule = async function(webAssemblyOptions) {
1736
- if (defined_default(this._webAssemblyPromise)) {
1737
- return this._webAssemblyPromise;
1738
- }
1739
- const init = async () => {
1740
- const worker = this._worker = createWorker(this._workerPath);
1741
- const wasmConfig = await getWebAssemblyLoaderConfig(
1742
- this,
1743
- webAssemblyOptions
1744
- );
1745
- const canTransfer = await Promise.resolve(canTransferArrayBuffer());
1746
- let transferableObjects;
1747
- const binary = wasmConfig.wasmBinary;
1748
- if (defined_default(binary) && canTransfer) {
1749
- transferableObjects = [binary];
1750
- }
1751
- const promise = new Promise((resolve, reject) => {
1752
- worker.onmessage = function({ data }) {
1753
- if (defined_default(data)) {
1754
- resolve(data.result);
1755
- } else {
1756
- reject(new RuntimeError_default("Could not configure wasm module"));
1757
- }
1758
- };
1759
- });
1760
- worker.postMessage(
1761
- {
1762
- canTransferArrayBuffer: canTransfer,
1763
- parameters: { webAssemblyConfig: wasmConfig }
1764
- },
1765
- transferableObjects
1766
- );
1767
- return promise;
1768
- };
1769
- this._webAssemblyPromise = init();
1770
- return this._webAssemblyPromise;
1771
- };
1772
- TaskProcessor.prototype.isDestroyed = function() {
1773
- return false;
1774
- };
1775
- TaskProcessor.prototype.destroy = function() {
1776
- if (defined_default(this._worker)) {
1777
- this._worker.terminate();
1778
- }
1779
- return destroyObject_default(this);
1780
- };
1781
- TaskProcessor.taskCompletedEvent = taskCompletedEvent;
1782
- TaskProcessor._defaultWorkerModulePrefix = "Workers/";
1783
- TaskProcessor._workerModulePrefix = TaskProcessor._defaultWorkerModulePrefix;
1784
- TaskProcessor._canTransferArrayBuffer = void 0;
1785
- var TaskProcessor_default = TaskProcessor;
1786
-
1787
- // packages/engine/Source/Core/TerrainPicker.js
1788
- var MAXIMUM_TERRAIN_PICKER_LEVEL = 3;
1789
- function TerrainPicker(vertices, indices, encoding) {
1790
- Check_default.defined("vertices", vertices);
1791
- Check_default.defined("indices", indices);
1792
- Check_default.defined("encoding", encoding);
1793
- this._vertices = vertices;
1794
- this._indices = indices;
1795
- this._encoding = encoding;
1796
- this._inverseTransform = new Matrix4_default();
1797
- this._needsRebuild = true;
1798
- this._rootNode = new TerrainPickerNode();
1799
- }
1800
- var incrementallyBuildTerrainPickerTaskProcessor = new TaskProcessor_default(
1801
- "incrementallyBuildTerrainPicker"
1802
- );
1803
- Object.defineProperties(TerrainPicker.prototype, {
1804
- /**
1805
- * Indicates whether the terrain picker needs to be rebuilt due to changes in the underlying terrain mesh's vertices or indices.
1806
- * @type {boolean}
1807
- */
1808
- needsRebuild: {
1809
- get: function() {
1810
- return this._needsRebuild;
1811
- },
1812
- set: function(value) {
1813
- this._needsRebuild = value;
1814
- }
1815
- }
1816
- });
1817
- function TerrainPickerNode() {
1818
- this.x = 0;
1819
- this.y = 0;
1820
- this.level = 0;
1821
- this.aabb = createAABBForNode(this.x, this.y, this.level);
1822
- this.intersectingTriangles = new Uint32Array(0);
1823
- this.children = [];
1824
- this.buildingChildren = false;
1825
- }
1826
- TerrainPickerNode.prototype.addChild = function(childIdx) {
1827
- if (childIdx < 0 || childIdx > 3) {
1828
- throw new DeveloperError_default(
1829
- "TerrainPickerNode child index must be between 0 and 3, inclusive."
1830
- );
1831
- }
1832
- const childNode = new TerrainPickerNode();
1833
- childNode.x = this.x * 2 + (childIdx & 1);
1834
- childNode.y = this.y * 2 + (childIdx >> 1 & 1);
1835
- childNode.level = this.level + 1;
1836
- childNode.aabb = createAABBForNode(childNode.x, childNode.y, childNode.level);
1837
- this.children[childIdx] = childNode;
1838
- };
1839
- var scratchTransformedRay = new Ray_default();
1840
- var scratchTrianglePoints = [
1841
- new Cartesian3_default(),
1842
- new Cartesian3_default(),
1843
- new Cartesian3_default()
1844
- ];
1845
- TerrainPicker.prototype.rayIntersect = function(ray, tileTransform, cullBackFaces, mode, projection) {
1846
- if (this._needsRebuild) {
1847
- reset(this, tileTransform);
1848
- }
1849
- const invTransform = this._inverseTransform;
1850
- const transformedRay = scratchTransformedRay;
1851
- transformedRay.origin = Matrix4_default.multiplyByPoint(
1852
- invTransform,
1853
- ray.origin,
1854
- transformedRay.origin
1855
- );
1856
- transformedRay.direction = Matrix4_default.multiplyByPointAsVector(
1857
- invTransform,
1858
- ray.direction,
1859
- transformedRay.direction
1860
- );
1861
- const intersections = [];
1862
- getNodesIntersectingRay(this._rootNode, transformedRay, intersections);
1863
- return findClosestPointInClosestNode(
1864
- this,
1865
- intersections,
1866
- ray,
1867
- cullBackFaces,
1868
- mode,
1869
- projection
1870
- );
1871
- };
1872
- function reset(terrainPicker, tileTransform) {
1873
- Matrix4_default.inverse(tileTransform, terrainPicker._inverseTransform);
1874
- terrainPicker._needsRebuild = false;
1875
- const triangleCount = terrainPicker._indices.length / 3;
1876
- const intersectingTriangles = new Uint32Array(triangleCount);
1877
- for (let i = 0; i < triangleCount; ++i) {
1878
- intersectingTriangles[i] = i;
1879
- }
1880
- terrainPicker._rootNode.intersectingTriangles = intersectingTriangles;
1881
- terrainPicker._rootNode.children.length = 0;
1882
- }
1883
- var scratchAABBMin = new Cartesian3_default();
1884
- var scratchAABBMax = new Cartesian3_default();
1885
- function createAABBForNode(x, y, level) {
1886
- const sizeAtLevel = 1 / Math.pow(2, level);
1887
- const aabbMin = Cartesian3_default.fromElements(
1888
- x * sizeAtLevel - 0.5,
1889
- y * sizeAtLevel - 0.5,
1890
- -0.5,
1891
- scratchAABBMin
1892
- );
1893
- const aabbMax = Cartesian3_default.fromElements(
1894
- (x + 1) * sizeAtLevel - 0.5,
1895
- (y + 1) * sizeAtLevel - 0.5,
1896
- 0.5,
1897
- scratchAABBMax
1898
- );
1899
- return AxisAlignedBoundingBox_default.fromCorners(aabbMin, aabbMax);
1900
- }
1901
- function packTriangleBuffers(trianglePositionsBuffer, triangleIndicesBuffer, trianglePositions, triangleIndex, bufferIndex) {
1902
- Cartesian3_default.pack(
1903
- trianglePositions[0],
1904
- trianglePositionsBuffer,
1905
- 9 * bufferIndex
1906
- );
1907
- Cartesian3_default.pack(
1908
- trianglePositions[1],
1909
- trianglePositionsBuffer,
1910
- 9 * bufferIndex + 3
1911
- );
1912
- Cartesian3_default.pack(
1913
- trianglePositions[2],
1914
- trianglePositionsBuffer,
1915
- 9 * bufferIndex + 6
1916
- );
1917
- triangleIndicesBuffer[bufferIndex] = triangleIndex;
1918
- }
1919
- var scratchInterval = new Interval_default();
1920
- function getNodesIntersectingRay(currentNode, ray, intersectingNodes) {
1921
- const interval = IntersectionTests_default.rayAxisAlignedBoundingBox(
1922
- ray,
1923
- currentNode.aabb,
1924
- scratchInterval
1925
- );
1926
- if (!defined_default(interval)) {
1927
- return;
1928
- }
1929
- const isLeaf = !currentNode.children.length || currentNode.buildingChildren;
1930
- if (isLeaf) {
1931
- intersectingNodes.push({
1932
- node: currentNode,
1933
- interval: new Interval_default(interval.start, interval.stop)
1934
- });
1935
- return;
1936
- }
1937
- for (let i = 0; i < currentNode.children.length; i++) {
1938
- getNodesIntersectingRay(currentNode.children[i], ray, intersectingNodes);
1939
- }
1940
- }
1941
- function findClosestPointInClosestNode(terrainPicker, intersections, ray, cullBackFaces, mode, projection) {
1942
- const sortedIntersections = intersections.sort(function(a, b) {
1943
- return a.interval.start - b.interval.start;
1944
- });
1945
- let minT = Number.MAX_VALUE;
1946
- for (let i = 0; i < sortedIntersections.length; i++) {
1947
- const intersection = sortedIntersections[i];
1948
- const intersectionResult = getClosestTriangleInNode(
1949
- terrainPicker,
1950
- ray,
1951
- intersection.node,
1952
- cullBackFaces,
1953
- mode,
1954
- projection
1955
- );
1956
- minT = Math.min(intersectionResult, minT);
1957
- if (minT !== Number.MAX_VALUE) {
1958
- break;
1959
- }
1960
- }
1961
- if (minT !== Number.MAX_VALUE) {
1962
- return Ray_default.getPoint(ray, minT);
1963
- }
1964
- return void 0;
1965
- }
1966
- function getClosestTriangleInNode(terrainPicker, ray, node, cullBackFaces, mode, projection) {
1967
- let result = Number.MAX_VALUE;
1968
- const encoding = terrainPicker._encoding;
1969
- const indices = terrainPicker._indices;
1970
- const vertices = terrainPicker._vertices;
1971
- const triangleCount = node.intersectingTriangles.length;
1972
- const isMaxLevel = node.level >= MAXIMUM_TERRAIN_PICKER_LEVEL;
1973
- const shouldBuildChildren = !isMaxLevel && !node.buildingChildren;
1974
- let trianglePositions;
1975
- let triangleIndices;
1976
- if (shouldBuildChildren) {
1977
- trianglePositions = new Float32Array(triangleCount * 9);
1978
- triangleIndices = new Uint32Array(triangleCount);
1979
- }
1980
- for (let i = 0; i < triangleCount; i++) {
1981
- const triIndex = node.intersectingTriangles[i];
1982
- const v0 = getVertexPosition(
1983
- encoding,
1984
- mode,
1985
- projection,
1986
- vertices,
1987
- indices[3 * triIndex],
1988
- scratchTrianglePoints[0]
1989
- );
1990
- const v1 = getVertexPosition(
1991
- encoding,
1992
- mode,
1993
- projection,
1994
- vertices,
1995
- indices[3 * triIndex + 1],
1996
- scratchTrianglePoints[1]
1997
- );
1998
- const v2 = getVertexPosition(
1999
- encoding,
2000
- mode,
2001
- projection,
2002
- vertices,
2003
- indices[3 * triIndex + 2],
2004
- scratchTrianglePoints[2]
2005
- );
2006
- const triT = IntersectionTests_default.rayTriangleParametric(
2007
- ray,
2008
- v0,
2009
- v1,
2010
- v2,
2011
- cullBackFaces
2012
- );
2013
- if (defined_default(triT) && triT < result && triT >= 0) {
2014
- result = triT;
2015
- }
2016
- if (shouldBuildChildren) {
2017
- packTriangleBuffers(
2018
- trianglePositions,
2019
- triangleIndices,
2020
- scratchTrianglePoints,
2021
- triIndex,
2022
- i
2023
- );
2024
- }
2025
- }
2026
- if (shouldBuildChildren) {
2027
- for (let childIdx = 0; childIdx < 4; childIdx++) {
2028
- node.addChild(childIdx);
2029
- }
2030
- addTrianglesToChildrenNodes(
2031
- terrainPicker._inverseTransform,
2032
- node,
2033
- triangleIndices,
2034
- trianglePositions
2035
- );
2036
- }
2037
- return result;
2038
- }
2039
- var scratchCartographic = new Cartographic_default();
2040
- function getVertexPosition(encoding, mode, projection, vertices, index, result) {
2041
- let position = encoding.getExaggeratedPosition(vertices, index, result);
2042
- if (mode === SceneMode_default.SCENE3D) {
2043
- return position;
2044
- }
2045
- const ellipsoid = projection.ellipsoid;
2046
- const positionCartographic = ellipsoid.cartesianToCartographic(
2047
- position,
2048
- scratchCartographic
2049
- );
2050
- position = projection.project(positionCartographic, result);
2051
- position = Cartesian3_default.fromElements(
2052
- position.z,
2053
- position.x,
2054
- position.y,
2055
- result
2056
- );
2057
- return position;
2058
- }
2059
- async function addTrianglesToChildrenNodes(inverseTransform, node, triangleIndices, trianglePositions) {
2060
- node.buildingChildren = true;
2061
- const inverseTransformPacked = new Float64Array(16);
2062
- Matrix4_default.pack(inverseTransform, inverseTransformPacked, 0);
2063
- const aabbArray = new Float64Array(6 * 4);
2064
- for (let i = 0; i < 4; i++) {
2065
- Cartesian3_default.pack(node.children[i].aabb.minimum, aabbArray, i * 6);
2066
- Cartesian3_default.pack(node.children[i].aabb.maximum, aabbArray, i * 6 + 3);
2067
- }
2068
- const parameters = {
2069
- aabbs: aabbArray,
2070
- inverseTransform: inverseTransformPacked,
2071
- triangleIndices,
2072
- trianglePositions
2073
- };
2074
- const transferableObjects = [
2075
- aabbArray.buffer,
2076
- inverseTransformPacked.buffer,
2077
- triangleIndices.buffer,
2078
- trianglePositions.buffer
2079
- ];
2080
- const incrementallyBuildTerrainPickerPromise = incrementallyBuildTerrainPickerTaskProcessor.scheduleTask(
2081
- parameters,
2082
- transferableObjects
2083
- );
2084
- if (!defined_default(incrementallyBuildTerrainPickerPromise)) {
2085
- node.buildingChildren = false;
2086
- return;
2087
- }
2088
- const result = await incrementallyBuildTerrainPickerPromise;
2089
- result.intersectingTrianglesArrays.forEach((buffer, index) => {
2090
- node.children[index].intersectingTriangles = new Uint32Array(buffer);
2091
- });
2092
- node.intersectingTriangles = new Uint32Array(0);
2093
- node.buildingChildren = false;
2094
- }
2095
- var TerrainPicker_default = TerrainPicker;
2096
-
2097
- // packages/engine/Source/Core/TerrainMesh.js
2098
- function TerrainMesh(center, vertices, indices, indexCountWithoutSkirts, vertexCountWithoutSkirts, minimumHeight, maximumHeight, rectangle, boundingSphere3D, occludeePointInScaledSpace, vertexStride, orientedBoundingBox, encoding, westIndicesSouthToNorth, southIndicesEastToWest, eastIndicesNorthToSouth, northIndicesWestToEast) {
2099
- this.center = center;
2100
- this.vertices = vertices;
2101
- this.stride = vertexStride ?? 6;
2102
- this.indices = indices;
2103
- this.indexCountWithoutSkirts = indexCountWithoutSkirts;
2104
- this.vertexCountWithoutSkirts = vertexCountWithoutSkirts;
2105
- this.minimumHeight = minimumHeight;
2106
- this.maximumHeight = maximumHeight;
2107
- this.rectangle = rectangle;
2108
- this.boundingSphere3D = boundingSphere3D;
2109
- this.occludeePointInScaledSpace = occludeePointInScaledSpace;
2110
- this.orientedBoundingBox = orientedBoundingBox;
2111
- this.encoding = encoding;
2112
- this.westIndicesSouthToNorth = westIndicesSouthToNorth;
2113
- this.southIndicesEastToWest = southIndicesEastToWest;
2114
- this.eastIndicesNorthToSouth = eastIndicesNorthToSouth;
2115
- this.northIndicesWestToEast = northIndicesWestToEast;
2116
- this._transform = new Matrix4_default();
2117
- this._recomputeTransform = true;
2118
- this._terrainPicker = new TerrainPicker_default(vertices, indices, encoding);
2119
- }
2120
- TerrainMesh.prototype.getTransform = function(mode, projection) {
2121
- if (!this._recomputeTransform) {
2122
- return this._transform;
2123
- }
2124
- this._recomputeTransform = false;
2125
- if (!defined_default(mode) || mode === SceneMode_default.SCENE3D) {
2126
- return computeTransform(this, this._transform);
2127
- }
2128
- return computeTransform2D(this, projection, this._transform);
2129
- };
2130
- function computeTransform(mesh, result) {
2131
- const exaggeration = mesh.encoding.exaggeration;
2132
- const exaggerationRelativeHeight = mesh.encoding.exaggerationRelativeHeight;
2133
- const exaggeratedMinHeight = VerticalExaggeration_default.getHeight(
2134
- mesh.minimumHeight,
2135
- exaggeration,
2136
- exaggerationRelativeHeight
2137
- );
2138
- const exaggeratedMaxHeight = VerticalExaggeration_default.getHeight(
2139
- mesh.maximumHeight,
2140
- exaggeration,
2141
- exaggerationRelativeHeight
2142
- );
2143
- const obb = OrientedBoundingBox_default.fromRectangle(
2144
- mesh.rectangle,
2145
- exaggeratedMinHeight,
2146
- exaggeratedMaxHeight,
2147
- Ellipsoid_default.default,
2148
- mesh.orientedBoundingBox
2149
- );
2150
- return OrientedBoundingBox_default.computeTransformation(obb, result);
2151
- }
2152
- var scratchSWCartesian = new Cartesian3_default();
2153
- var scratchNECartesian = new Cartesian3_default();
2154
- var scratchSWCartographic = new Cartographic_default();
2155
- var scratchNECartographic = new Cartographic_default();
2156
- var scratchScale2D = new Cartesian3_default();
2157
- var scratchCenter2D = new Cartesian3_default();
2158
- function computeTransform2D(mesh, projection, result) {
2159
- const exaggeration = mesh.encoding.exaggeration;
2160
- const exaggerationRelativeHeight = mesh.encoding.exaggerationRelativeHeight;
2161
- const exaggeratedMinHeight = VerticalExaggeration_default.getHeight(
2162
- mesh.minimumHeight,
2163
- exaggeration,
2164
- exaggerationRelativeHeight
2165
- );
2166
- const exaggeratedMaxHeight = VerticalExaggeration_default.getHeight(
2167
- mesh.maximumHeight,
2168
- exaggeration,
2169
- exaggerationRelativeHeight
2170
- );
2171
- const southwest = projection.project(
2172
- Cartographic_default.fromRadians(
2173
- mesh.rectangle.west,
2174
- mesh.rectangle.south,
2175
- 0,
2176
- scratchSWCartographic
2177
- ),
2178
- scratchSWCartesian
2179
- );
2180
- const northeast = projection.project(
2181
- Cartographic_default.fromRadians(
2182
- mesh.rectangle.east,
2183
- mesh.rectangle.north,
2184
- 0,
2185
- scratchNECartographic
2186
- ),
2187
- scratchNECartesian
2188
- );
2189
- const heightRange = exaggeratedMaxHeight - exaggeratedMinHeight;
2190
- const scale = Cartesian3_default.fromElements(
2191
- northeast.x - southwest.x,
2192
- northeast.y - southwest.y,
2193
- heightRange > 0 ? heightRange : 1,
2194
- // Avoid zero scale
2195
- scratchScale2D
2196
- );
2197
- const center = Cartesian3_default.fromElements(
2198
- southwest.x + scale.x * 0.5,
2199
- southwest.y + scale.y * 0.5,
2200
- exaggeratedMinHeight + scale.z * 0.5,
2201
- scratchCenter2D
2202
- );
2203
- Matrix4_default.fromTranslation(center, result);
2204
- Matrix4_default.setScale(result, scale, result);
2205
- Matrix4_default.multiply(Transforms_default.SWIZZLE_3D_TO_2D_MATRIX, result, result);
2206
- return result;
2207
- }
2208
- TerrainMesh.prototype.pick = function(ray, cullBackFaces, mode, projection) {
2209
- return this._terrainPicker.rayIntersect(
2210
- ray,
2211
- this.getTransform(mode, projection),
2212
- cullBackFaces,
2213
- mode,
2214
- projection
2215
- );
2216
- };
2217
- TerrainMesh.prototype.updateExaggeration = function(exaggeration, exaggerationRelativeHeight) {
2218
- this._terrainPicker._vertices = this.vertices;
2219
- this._terrainPicker.needsRebuild = true;
2220
- this._recomputeTransform = true;
2221
- };
2222
- TerrainMesh.prototype.updateSceneMode = function(mode) {
2223
- this._terrainPicker.needsRebuild = true;
2224
- this._recomputeTransform = true;
2225
- };
2226
- var TerrainMesh_default = TerrainMesh;
2227
-
2228
- // packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js
2229
- var Cesium3DTilesTerrainGeometryProcessor = {};
2230
- var scratchGltfInfo = {
2231
- positions: void 0,
2232
- normals: void 0,
2233
- indices: void 0,
2234
- edgeIndicesWest: void 0,
2235
- edgeIndicesSouth: void 0,
2236
- edgeIndicesEast: void 0,
2237
- edgeIndicesNorth: void 0
2238
- };
2239
- var scratchCenterCartographic = new Cartographic_default();
2240
- var scratchCenterCartesian = new Cartesian3_default();
2241
- var scratchEnuToEcef = new Matrix4_default();
2242
- var scratchEcefToEnu = new Matrix4_default();
2243
- var scratchTilesetTransform = new Matrix4_default();
2244
- var scratchMinimumPositionENU = new Cartesian3_default();
2245
- var scratchMaximumPositionENU = new Cartesian3_default();
2246
- var scratchPosLocal = new Cartesian3_default();
2247
- var scratchPosEcef = new Cartesian3_default();
2248
- var scratchCartographic2 = new Cartographic_default();
2249
- var scratchUV = new Cartesian2_default();
2250
- var scratchNormal = new Cartesian3_default();
2251
- var scratchNormalOct = new Cartesian2_default();
2252
- var scratchGeodeticSurfaceNormal = new Cartesian3_default();
2253
- var scratchPosEnu = new Cartesian3_default();
2254
- var sortedEdgeCompare = function(a, b) {
2255
- return a - b;
2256
- };
2257
- Cesium3DTilesTerrainGeometryProcessor.createMesh = async function(options) {
2258
- options = options ?? Frozen_default.EMPTY_OBJECT;
2259
- const {
2260
- exaggeration = 1,
2261
- exaggerationRelativeHeight = 0,
2262
- hasVertexNormals,
2263
- hasWebMercatorT,
2264
- gltf,
2265
- minimumHeight,
2266
- maximumHeight,
2267
- skirtHeight
2268
- } = options;
2269
- Check_default.typeOf.object("options.ellipsoid", options.ellipsoid);
2270
- Check_default.typeOf.object("options.rectangle", options.rectangle);
2271
- Check_default.typeOf.bool("options.hasVertexNormals", hasVertexNormals);
2272
- Check_default.typeOf.bool("options.hasWebMercatorT", hasWebMercatorT);
2273
- Check_default.typeOf.object("options.gltf", gltf);
2274
- Check_default.typeOf.number("options.minimumHeight", minimumHeight);
2275
- Check_default.typeOf.number("options.maximumHeight", maximumHeight);
2276
- Check_default.typeOf.object("options.boundingSphere", options.boundingSphere);
2277
- Check_default.typeOf.object(
2278
- "options.orientedBoundingBox",
2279
- options.orientedBoundingBox
2280
- );
2281
- Check_default.typeOf.object(
2282
- "options.horizonOcclusionPoint",
2283
- options.horizonOcclusionPoint
2284
- );
2285
- Check_default.typeOf.number("options.skirtHeight", skirtHeight);
2286
- const hasExaggeration = exaggeration !== 1;
2287
- const hasGeodeticSurfaceNormals = hasExaggeration;
2288
- const boundingSphere = BoundingSphere_default.clone(
2289
- options.boundingSphere,
2290
- new BoundingSphere_default()
2291
- );
2292
- const orientedBoundingBox = OrientedBoundingBox_default.clone(
2293
- options.orientedBoundingBox,
2294
- new OrientedBoundingBox_default()
2295
- );
2296
- const horizonOcclusionPoint = Cartesian3_default.clone(
2297
- options.horizonOcclusionPoint,
2298
- new Cartesian3_default()
2299
- );
2300
- const ellipsoid = Ellipsoid_default.clone(options.ellipsoid, new Ellipsoid_default());
2301
- const rectangle = Rectangle_default.clone(options.rectangle, new Rectangle_default());
2302
- const hasMeshOptCompression = gltf.extensionsRequired !== void 0 && gltf.extensionsRequired.indexOf("EXT_meshopt_compression") !== -1;
2303
- const decoderPromise = hasMeshOptCompression ? MeshoptDecoder.ready : Promise.resolve(void 0);
2304
- await decoderPromise;
2305
- const tileMinLongitude = rectangle.west;
2306
- const tileMinLatitude = rectangle.south;
2307
- const tileMaxLatitude = rectangle.north;
2308
- const tileLengthLongitude = rectangle.width;
2309
- const tileLengthLatitude = rectangle.height;
2310
- const approximateCenterCartographic = Rectangle_default.center(
2311
- rectangle,
2312
- scratchCenterCartographic
2313
- );
2314
- approximateCenterCartographic.height = 0.5 * (minimumHeight + maximumHeight);
2315
- const approximateCenterPosition = Cartographic_default.toCartesian(
2316
- approximateCenterCartographic,
2317
- ellipsoid,
2318
- scratchCenterCartesian
2319
- );
2320
- const enuToEcef = Transforms_default.eastNorthUpToFixedFrame(
2321
- approximateCenterPosition,
2322
- ellipsoid,
2323
- scratchEnuToEcef
2324
- );
2325
- const ecefToEnu = Matrix4_default.inverseTransformation(enuToEcef, scratchEcefToEnu);
2326
- let tilesetTransform = Matrix4_default.unpack(
2327
- gltf.nodes[0].matrix,
2328
- 0,
2329
- scratchTilesetTransform
2330
- );
2331
- tilesetTransform = Matrix4_default.multiply(
2332
- Axis_default.Y_UP_TO_Z_UP,
2333
- tilesetTransform,
2334
- tilesetTransform
2335
- );
2336
- const gltfInfo = decodeGltf(gltf, hasVertexNormals, scratchGltfInfo);
2337
- const skirtVertexCount = TerrainProvider_default.getSkirtVertexCount(
2338
- gltfInfo.edgeIndicesWest,
2339
- gltfInfo.edgeIndicesSouth,
2340
- gltfInfo.edgeIndicesEast,
2341
- gltfInfo.edgeIndicesNorth
2342
- );
2343
- const positionsLocalWithoutSkirts = gltfInfo.positions;
2344
- const normalsWithoutSkirts = gltfInfo.normals;
2345
- const indicesWithoutSkirts = gltfInfo.indices;
2346
- const vertexCountWithoutSkirts = positionsLocalWithoutSkirts.length / 3;
2347
- const vertexCountWithSkirts = vertexCountWithoutSkirts + skirtVertexCount;
2348
- const indexCountWithoutSkirts = indicesWithoutSkirts.length;
2349
- const skirtIndexCount = TerrainProvider_default.getSkirtIndexCountWithFilledCorners(skirtVertexCount);
2350
- const SizedIndexTypeWithSkirts = vertexCountWithSkirts <= 65535 ? Uint16Array : Uint32Array;
2351
- const indexBufferWithSkirts = new SizedIndexTypeWithSkirts(
2352
- indexCountWithoutSkirts + skirtIndexCount
2353
- );
2354
- indexBufferWithSkirts.set(indicesWithoutSkirts);
2355
- const westIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesWest);
2356
- const southIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesSouth);
2357
- const eastIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesEast);
2358
- const northIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesNorth);
2359
- const sortedWestIndices = new SizedIndexTypeWithSkirts(westIndices).sort();
2360
- const sortedSouthIndices = new SizedIndexTypeWithSkirts(southIndices).sort();
2361
- const sortedEastIndices = new SizedIndexTypeWithSkirts(eastIndices).sort();
2362
- const sortedNorthIndices = new SizedIndexTypeWithSkirts(northIndices).sort();
2363
- const southMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(tileMinLatitude);
2364
- const northMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(tileMaxLatitude);
2365
- const oneOverMercatorHeight = 1 / (northMercatorAngle - southMercatorAngle);
2366
- let minPosEnu = Cartesian3_default.fromElements(
2367
- Number.POSITIVE_INFINITY,
2368
- Number.POSITIVE_INFINITY,
2369
- Number.POSITIVE_INFINITY,
2370
- scratchMinimumPositionENU
2371
- );
2372
- let maxPosEnu = Cartesian3_default.fromElements(
2373
- Number.NEGATIVE_INFINITY,
2374
- Number.NEGATIVE_INFINITY,
2375
- Number.NEGATIVE_INFINITY,
2376
- scratchMaximumPositionENU
2377
- );
2378
- const tempTerrainEncoding = new TerrainEncoding_default(
2379
- boundingSphere.center,
2380
- void 0,
2381
- void 0,
2382
- void 0,
2383
- void 0,
2384
- hasVertexNormals,
2385
- hasWebMercatorT,
2386
- hasGeodeticSurfaceNormals,
2387
- exaggeration,
2388
- exaggerationRelativeHeight
2389
- );
2390
- const tempBufferStride = tempTerrainEncoding.stride;
2391
- const tempBuffer = new Float32Array(vertexCountWithSkirts * tempBufferStride);
2392
- let tempBufferOffset = 0;
2393
- for (let i = 0; i < vertexCountWithoutSkirts; i++) {
2394
- const posLocal = Cartesian3_default.unpack(
2395
- positionsLocalWithoutSkirts,
2396
- i * 3,
2397
- scratchPosLocal
2398
- );
2399
- const posECEF = Matrix4_default.multiplyByPoint(
2400
- tilesetTransform,
2401
- posLocal,
2402
- scratchPosEcef
2403
- );
2404
- const cartographic = Cartographic_default.fromCartesian(
2405
- posECEF,
2406
- ellipsoid,
2407
- scratchCartographic2
2408
- );
2409
- const { longitude, latitude, height } = cartographic;
2410
- let u = (longitude - tileMinLongitude) / tileLengthLongitude;
2411
- let v = (latitude - tileMinLatitude) / tileLengthLatitude;
2412
- u = Math_default.clamp(u, 0, 1);
2413
- v = Math_default.clamp(v, 0, 1);
2414
- if (binarySearch_default(sortedWestIndices, i, sortedEdgeCompare) >= 0) {
2415
- u = 0;
2416
- } else if (binarySearch_default(sortedEastIndices, i, sortedEdgeCompare) >= 0) {
2417
- u = 1;
2418
- }
2419
- if (binarySearch_default(sortedSouthIndices, i, sortedEdgeCompare) >= 0) {
2420
- v = 0;
2421
- } else if (binarySearch_default(sortedNorthIndices, i, sortedEdgeCompare) >= 0) {
2422
- v = 1;
2423
- }
2424
- const uv = Cartesian2_default.fromElements(u, v, scratchUV);
2425
- let normalOct;
2426
- if (hasVertexNormals) {
2427
- let normal = Cartesian3_default.unpack(
2428
- normalsWithoutSkirts,
2429
- i * 3,
2430
- scratchNormal
2431
- );
2432
- normal = Matrix4_default.multiplyByPointAsVector(
2433
- tilesetTransform,
2434
- normal,
2435
- scratchNormal
2436
- );
2437
- normal = Cartesian3_default.normalize(normal, scratchNormal);
2438
- normalOct = AttributeCompression_default.octEncode(normal, scratchNormalOct);
2439
- }
2440
- let webMercatorT;
2441
- if (hasWebMercatorT) {
2442
- const mercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(latitude);
2443
- webMercatorT = (mercatorAngle - southMercatorAngle) * oneOverMercatorHeight;
2444
- }
2445
- let geodeticSurfaceNormal;
2446
- if (hasGeodeticSurfaceNormals) {
2447
- geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
2448
- posECEF,
2449
- scratchGeodeticSurfaceNormal
2450
- );
2451
- }
2452
- tempBufferOffset = tempTerrainEncoding.encode(
2453
- tempBuffer,
2454
- tempBufferOffset,
2455
- posECEF,
2456
- uv,
2457
- height,
2458
- normalOct,
2459
- webMercatorT,
2460
- geodeticSurfaceNormal
2461
- );
2462
- const posEnu = Matrix4_default.multiplyByPoint(ecefToEnu, posECEF, scratchPosEnu);
2463
- minPosEnu = Cartesian3_default.minimumByComponent(posEnu, minPosEnu, minPosEnu);
2464
- maxPosEnu = Cartesian3_default.maximumByComponent(posEnu, maxPosEnu, maxPosEnu);
2465
- }
2466
- const mesh = new TerrainMesh_default(
2467
- Cartesian3_default.clone(tempTerrainEncoding.center, new Cartesian3_default()),
2468
- tempBuffer,
2469
- indexBufferWithSkirts,
2470
- indexCountWithoutSkirts,
2471
- vertexCountWithoutSkirts,
2472
- minimumHeight,
2473
- maximumHeight,
2474
- rectangle,
2475
- BoundingSphere_default.clone(boundingSphere, new BoundingSphere_default()),
2476
- Cartesian3_default.clone(horizonOcclusionPoint, new Cartesian3_default()),
2477
- tempBufferStride,
2478
- OrientedBoundingBox_default.clone(orientedBoundingBox, new OrientedBoundingBox_default()),
2479
- tempTerrainEncoding,
2480
- westIndices,
2481
- southIndices,
2482
- eastIndices,
2483
- northIndices
2484
- );
2485
- addSkirtsToMesh(
2486
- mesh,
2487
- rectangle,
2488
- ellipsoid,
2489
- minPosEnu,
2490
- maxPosEnu,
2491
- enuToEcef,
2492
- ecefToEnu,
2493
- skirtHeight
2494
- );
2495
- return Promise.resolve(mesh);
2496
- };
2497
- var scratchMinUV = new Cartesian2_default();
2498
- var scratchMaxUV = new Cartesian2_default();
2499
- var scratchPolygonIndices = new Array(6);
2500
- var scratchUvA = new Cartesian2_default();
2501
- var scratchUvB = new Cartesian2_default();
2502
- var scratchUvC = new Cartesian2_default();
2503
- var scratchNormalA = new Cartesian3_default();
2504
- var scratchNormalB = new Cartesian3_default();
2505
- var scratchNormalC = new Cartesian3_default();
2506
- var scratchCenterCartographicUpsample = new Cartographic_default();
2507
- var scratchCenterCartesianUpsample = new Cartesian3_default();
2508
- var scratchCartographicSkirt = new Cartographic_default();
2509
- var scratchCartographicUpsample = new Cartographic_default();
2510
- var scratchPosEcefSkirt = new Cartesian3_default();
2511
- var scratchPosEcefUpsample = new Cartesian3_default();
2512
- var scratchPosEnuSkirt = new Cartesian3_default();
2513
- var scratchPosEnuUpsample = new Cartesian3_default();
2514
- var scratchMinimumPositionENUSkirt = new Cartesian3_default();
2515
- var scratchMaximumPositionENUSkirt = new Cartesian3_default();
2516
- var scratchMinimumPositionENUUpsample = new Cartesian3_default();
2517
- var scratchMaximumPositionENUUpsample = new Cartesian3_default();
2518
- var scratchEnuToEcefUpsample = new Matrix4_default();
2519
- var scratchEcefToEnuUpsample = new Matrix4_default();
2520
- var scratchUVSkirt = new Cartesian2_default();
2521
- var scratchUVUpsample = new Cartesian2_default();
2522
- var scratchHorizonOcclusionPoint = new Cartesian3_default();
2523
- var scratchBoundingSphere = new BoundingSphere_default();
2524
- var scratchOrientedBoundingBox = new OrientedBoundingBox_default();
2525
- var scratchAABBEnuSkirt = new AxisAlignedBoundingBox_default();
2526
- var scratchNormalUpsample = new Cartesian3_default();
2527
- var scratchNormalOctSkirt = new Cartesian2_default();
2528
- var scratchNormalOctUpsample = new Cartesian2_default();
2529
- var scratchGeodeticSurfaceNormalSkirt = new Cartesian3_default();
2530
- var scratchGeodeticSurfaceNormalUpsample = new Cartesian3_default();
2531
- function decodePositions(gltf) {
2532
- const primitive = gltf.meshes[0].primitives[0];
2533
- const accessor = gltf.accessors[primitive.attributes["POSITION"]];
2534
- const bufferView = gltf.bufferViews[accessor.bufferView];
2535
- const positionCount = accessor.count;
2536
- const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2537
- if (bufferViewMeshOpt === void 0) {
2538
- const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2539
- return new Float32Array(
2540
- buffer2.buffer,
2541
- buffer2.byteOffset + // offset from the start of the glb
2542
- (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2543
- positionCount * 3
2544
- );
2545
- }
2546
- const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2547
- const compressedBuffer = new Uint8Array(
2548
- buffer.buffer,
2549
- buffer.byteOffset + // offset from the start of the glb
2550
- (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2551
- bufferViewMeshOpt.byteLength
2552
- );
2553
- const positionByteLength = bufferViewMeshOpt.byteStride;
2554
- const PositionType = positionByteLength === 4 ? Uint8Array : Uint16Array;
2555
- const positionsResult = new PositionType(positionCount * 4);
2556
- MeshoptDecoder.decodeVertexBuffer(
2557
- new Uint8Array(positionsResult.buffer),
2558
- positionCount,
2559
- positionByteLength,
2560
- compressedBuffer
2561
- );
2562
- const positionStorageValueMax = (1 << positionsResult.BYTES_PER_ELEMENT * 8) - 1;
2563
- const positions = new Float32Array(positionCount * 3);
2564
- for (let p = 0; p < positionCount; p++) {
2565
- positions[p * 3 + 0] = positionsResult[p * 4 + 0] / positionStorageValueMax;
2566
- positions[p * 3 + 1] = positionsResult[p * 4 + 1] / positionStorageValueMax;
2567
- positions[p * 3 + 2] = positionsResult[p * 4 + 2] / positionStorageValueMax;
2568
- }
2569
- return positions;
2570
- }
2571
- function decodeNormals(gltf) {
2572
- const primitive = gltf.meshes[0].primitives[0];
2573
- const accessor = gltf.accessors[primitive.attributes["NORMAL"]];
2574
- const bufferView = gltf.bufferViews[accessor.bufferView];
2575
- const normalCount = accessor.count;
2576
- const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2577
- if (bufferViewMeshOpt === void 0) {
2578
- const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2579
- return new Float32Array(
2580
- buffer2.buffer,
2581
- buffer2.byteOffset + // offset from the start of the glb
2582
- (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2583
- normalCount * 3
2584
- );
2585
- }
2586
- const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2587
- const compressedBuffer = new Uint8Array(
2588
- buffer.buffer,
2589
- buffer.byteOffset + // offset from the start of the glb
2590
- (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2591
- bufferViewMeshOpt.byteLength
2592
- );
2593
- const normalByteLength = bufferViewMeshOpt.byteStride;
2594
- const normalsResult = new Int8Array(normalCount * normalByteLength);
2595
- MeshoptDecoder.decodeVertexBuffer(
2596
- new Uint8Array(normalsResult.buffer),
2597
- normalCount,
2598
- normalByteLength,
2599
- compressedBuffer
2600
- );
2601
- const normals = new Float32Array(normalCount * 3);
2602
- for (let i = 0; i < normalCount; i++) {
2603
- let octX = Math.max(normalsResult[i * 4 + 0] / 127, -1);
2604
- let octY = Math.max(normalsResult[i * 4 + 1] / 127, -1);
2605
- const octZ = 1 - (Math.abs(octX) + Math.abs(octY));
2606
- if (octZ < 0) {
2607
- const oldX = octX;
2608
- const oldY = octY;
2609
- octX = (1 - Math.abs(oldY)) * Math_default.signNotZero(oldX);
2610
- octY = (1 - Math.abs(oldX)) * Math_default.signNotZero(oldY);
2611
- }
2612
- let normal = scratchNormal;
2613
- normal.x = octX;
2614
- normal.y = octY;
2615
- normal.z = octZ;
2616
- normal = Cartesian3_default.normalize(normal, scratchNormal);
2617
- normals[i * 3 + 0] = normal.x;
2618
- normals[i * 3 + 1] = normal.y;
2619
- normals[i * 3 + 2] = normal.z;
2620
- }
2621
- return normals;
2622
- }
2623
- function decodeIndices(gltf) {
2624
- const primitive = gltf.meshes[0].primitives[0];
2625
- const accessor = gltf.accessors[primitive.indices];
2626
- const bufferView = gltf.bufferViews[accessor.bufferView];
2627
- const indexCount = accessor.count;
2628
- const SizedIndexType = accessor.componentType === ComponentDatatype_default.UNSIGNED_SHORT ? Uint16Array : Uint32Array;
2629
- const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2630
- if (bufferViewMeshOpt === void 0) {
2631
- const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2632
- return new SizedIndexType(
2633
- buffer2.buffer,
2634
- buffer2.byteOffset + // offset from the glb
2635
- (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2636
- indexCount
2637
- );
2638
- }
2639
- const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2640
- const compressedBuffer = new Uint8Array(
2641
- buffer.buffer,
2642
- buffer.byteOffset + // offset from the start of the glb
2643
- (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2644
- bufferViewMeshOpt.byteLength
2645
- );
2646
- const indices = new SizedIndexType(indexCount);
2647
- MeshoptDecoder.decodeIndexBuffer(
2648
- new Uint8Array(indices.buffer),
2649
- indexCount,
2650
- bufferViewMeshOpt.byteStride,
2651
- compressedBuffer
2652
- );
2653
- return indices;
2654
- }
2655
- function decodeEdgeIndices(gltf, name) {
2656
- const primitive = gltf.meshes[0].primitives[0];
2657
- const accessor = gltf.accessors[primitive.extensions.CESIUM_tile_edges[name]];
2658
- const bufferView = gltf.bufferViews[accessor.bufferView];
2659
- const indexCount = accessor.count;
2660
- const SizedIndexType = accessor.componentType === ComponentDatatype_default.UNSIGNED_SHORT ? Uint16Array : Uint32Array;
2661
- const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2662
- if (bufferViewMeshOpt === void 0) {
2663
- const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2664
- return new SizedIndexType(
2665
- buffer2.buffer,
2666
- buffer2.byteOffset + // offset from the glb
2667
- (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2668
- indexCount
2669
- );
2670
- }
2671
- const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2672
- const compressedBuffer = new Uint8Array(
2673
- buffer.buffer,
2674
- buffer.byteOffset + // offset from the start of the glb
2675
- (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2676
- bufferViewMeshOpt.byteLength
2677
- );
2678
- const indices = new SizedIndexType(indexCount);
2679
- const indexByteLength = bufferViewMeshOpt.byteStride;
2680
- MeshoptDecoder.decodeIndexSequence(
2681
- new Uint8Array(indices.buffer),
2682
- indexCount,
2683
- indexByteLength,
2684
- compressedBuffer
2685
- );
2686
- return indices;
2687
- }
2688
- function decodeGltf(gltf, hasNormals, result) {
2689
- result.positions = decodePositions(gltf);
2690
- result.normals = hasNormals ? decodeNormals(gltf) : void 0;
2691
- result.indices = decodeIndices(gltf);
2692
- result.edgeIndicesWest = decodeEdgeIndices(gltf, "left");
2693
- result.edgeIndicesSouth = decodeEdgeIndices(gltf, "bottom");
2694
- result.edgeIndicesEast = decodeEdgeIndices(gltf, "right");
2695
- result.edgeIndicesNorth = decodeEdgeIndices(gltf, "top");
2696
- return result;
2697
- }
2698
- Cesium3DTilesTerrainGeometryProcessor.upsampleMesh = function(options) {
2699
- options = options ?? Frozen_default.EMPTY_OBJECT;
2700
- const {
2701
- isEastChild,
2702
- isNorthChild,
2703
- parentMinimumHeight,
2704
- parentMaximumHeight,
2705
- skirtHeight
2706
- } = options;
2707
- Check_default.typeOf.bool("options.isEastChild", isEastChild);
2708
- Check_default.typeOf.bool("options.isNorthChild", isNorthChild);
2709
- Check_default.typeOf.object("options.parentVertices", options.parentVertices);
2710
- Check_default.typeOf.object("options.parentIndices", options.parentIndices);
2711
- Check_default.typeOf.number(
2712
- "options.parentVertexCountWithoutSkirts",
2713
- options.parentVertexCountWithoutSkirts
2714
- );
2715
- Check_default.typeOf.number(
2716
- "options.parentIndexCountWithoutSkirts",
2717
- options.parentIndexCountWithoutSkirts
2718
- );
2719
- Check_default.typeOf.number("options.parentMinimumHeight", parentMinimumHeight);
2720
- Check_default.typeOf.number("options.parentMaximumHeight", parentMaximumHeight);
2721
- Check_default.typeOf.object("options.parentEncoding", options.parentEncoding);
2722
- Check_default.typeOf.object("options.rectangle", options.rectangle);
2723
- Check_default.typeOf.number("options.skirtHeight", skirtHeight);
2724
- Check_default.typeOf.object("options.ellipsoid", options.ellipsoid);
2725
- const indexCount = options.parentIndexCountWithoutSkirts;
2726
- const indices = options.parentIndices;
2727
- const vertexCount = options.parentVertexCountWithoutSkirts;
2728
- const vertexBuffer = options.parentVertices;
2729
- const encoding = TerrainEncoding_default.clone(
2730
- options.parentEncoding,
2731
- new TerrainEncoding_default()
2732
- );
2733
- const hasVertexNormals = encoding.hasVertexNormals;
2734
- const hasWebMercatorT = encoding.hasWebMercatorT;
2735
- const exaggeration = encoding.exaggeration;
2736
- const exaggerationRelativeHeight = encoding.exaggerationRelativeHeight;
2737
- const hasExaggeration = exaggeration !== 1;
2738
- const hasGeodeticSurfaceNormals = hasExaggeration;
2739
- const upsampleRectangle = Rectangle_default.clone(options.rectangle, new Rectangle_default());
2740
- const ellipsoid = Ellipsoid_default.clone(options.ellipsoid);
2741
- const upsampledTriIDs = [];
2742
- const upsampledUVs = [];
2743
- const upsampledBarys = [];
2744
- const upsampledIndices = [];
2745
- const upsampledWestIndices = [];
2746
- const upsampledSouthIndices = [];
2747
- const upsampledEastIndices = [];
2748
- const upsampledNorthIndices = [];
2749
- clipTileFromQuadrant(
2750
- isEastChild,
2751
- isNorthChild,
2752
- indexCount,
2753
- indices,
2754
- vertexCount,
2755
- vertexBuffer,
2756
- encoding,
2757
- upsampledIndices,
2758
- upsampledWestIndices,
2759
- upsampledSouthIndices,
2760
- upsampledEastIndices,
2761
- upsampledNorthIndices,
2762
- upsampledTriIDs,
2763
- upsampledBarys,
2764
- upsampledUVs
2765
- );
2766
- const approximateCenterCartographic = Rectangle_default.center(
2767
- upsampleRectangle,
2768
- scratchCenterCartographicUpsample
2769
- );
2770
- approximateCenterCartographic.height = 0.5 * (parentMinimumHeight + parentMaximumHeight);
2771
- const approximateCenterPosition = Cartographic_default.toCartesian(
2772
- approximateCenterCartographic,
2773
- ellipsoid,
2774
- scratchCenterCartesianUpsample
2775
- );
2776
- const upsampledVertexCountWithoutSkirts = upsampledTriIDs.length;
2777
- const upsampledTerrainEncoding = new TerrainEncoding_default(
2778
- approximateCenterPosition,
2779
- void 0,
2780
- void 0,
2781
- void 0,
2782
- void 0,
2783
- hasVertexNormals,
2784
- hasWebMercatorT,
2785
- hasGeodeticSurfaceNormals,
2786
- exaggeration,
2787
- exaggerationRelativeHeight
2788
- );
2789
- const upsampledVertexBufferStride = upsampledTerrainEncoding.stride;
2790
- const upsampledSkirtVertexCount = TerrainProvider_default.getSkirtVertexCount(
2791
- upsampledWestIndices,
2792
- upsampledSouthIndices,
2793
- upsampledEastIndices,
2794
- upsampledNorthIndices
2795
- );
2796
- const upsampledVertexCountWithSkirts = upsampledVertexCountWithoutSkirts + upsampledSkirtVertexCount;
2797
- const upsampledIndexCountWithoutSkirts = upsampledIndices.length;
2798
- const upsampledSkirtIndexCount = TerrainProvider_default.getSkirtIndexCountWithFilledCorners(
2799
- upsampledSkirtVertexCount
2800
- );
2801
- const upsampledIndexCountWithSkirts = upsampledIndexCountWithoutSkirts + upsampledSkirtIndexCount;
2802
- const SizedIndexTypeWithSkirts = upsampledVertexCountWithSkirts <= 65535 ? Uint16Array : Uint32Array;
2803
- const upsampledIndexBuffer = new SizedIndexTypeWithSkirts(
2804
- upsampledIndexCountWithSkirts
2805
- );
2806
- upsampledIndexBuffer.set(upsampledIndices);
2807
- const upsampledWestIndicesBuffer = new SizedIndexTypeWithSkirts(
2808
- upsampledWestIndices
2809
- );
2810
- const upsampledSouthIndicesBuffer = new SizedIndexTypeWithSkirts(
2811
- upsampledSouthIndices
2812
- );
2813
- const upsampledEastIndicesBuffer = new SizedIndexTypeWithSkirts(
2814
- upsampledEastIndices
2815
- );
2816
- const upsampledNorthIndicesBuffer = new SizedIndexTypeWithSkirts(
2817
- upsampledNorthIndices
2818
- );
2819
- const upsampledVertexBuffer = new Float32Array(
2820
- upsampledVertexCountWithSkirts * upsampledVertexBufferStride
2821
- );
2822
- let upsampledVertexBufferOffset = 0;
2823
- const enuToEcef = Transforms_default.eastNorthUpToFixedFrame(
2824
- approximateCenterPosition,
2825
- ellipsoid,
2826
- scratchEnuToEcefUpsample
2827
- );
2828
- const ecefToEnu = Matrix4_default.inverseTransformation(
2829
- enuToEcef,
2830
- scratchEcefToEnuUpsample
2831
- );
2832
- const minimumLongitude = upsampleRectangle.west;
2833
- const maximumLongitude = upsampleRectangle.east;
2834
- const minimumLatitude = upsampleRectangle.south;
2835
- const maximumLatitude = upsampleRectangle.north;
2836
- const southMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(minimumLatitude);
2837
- const northMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(maximumLatitude);
2838
- const oneOverMercatorHeight = 1 / (northMercatorAngle - southMercatorAngle);
2839
- let minimumHeight = Number.POSITIVE_INFINITY;
2840
- let maximumHeight = Number.NEGATIVE_INFINITY;
2841
- let minPosEnu = Cartesian3_default.fromElements(
2842
- Number.POSITIVE_INFINITY,
2843
- Number.POSITIVE_INFINITY,
2844
- Number.POSITIVE_INFINITY,
2845
- scratchMinimumPositionENUUpsample
2846
- );
2847
- let maxPosEnu = Cartesian3_default.fromElements(
2848
- Number.NEGATIVE_INFINITY,
2849
- Number.NEGATIVE_INFINITY,
2850
- Number.NEGATIVE_INFINITY,
2851
- scratchMaximumPositionENUUpsample
2852
- );
2853
- for (let i = 0; i < upsampledVertexCountWithoutSkirts; i++) {
2854
- const triId = upsampledTriIDs[i];
2855
- const indexA = indices[triId * 3 + 0];
2856
- const indexB = indices[triId * 3 + 1];
2857
- const indexC = indices[triId * 3 + 2];
2858
- const uv = scratchUVUpsample;
2859
- uv.x = upsampledUVs[i * 2 + 0];
2860
- uv.y = upsampledUVs[i * 2 + 1];
2861
- const u = uv.x;
2862
- const v = uv.y;
2863
- const baryA = upsampledBarys[i * 2 + 0];
2864
- const baryB = upsampledBarys[i * 2 + 1];
2865
- const baryC = 1 - baryA - baryB;
2866
- const heightA = encoding.decodeHeight(vertexBuffer, indexA);
2867
- const heightB = encoding.decodeHeight(vertexBuffer, indexB);
2868
- const heightC = encoding.decodeHeight(vertexBuffer, indexC);
2869
- const height = heightA * baryA + heightB * baryB + heightC * baryC;
2870
- minimumHeight = Math.min(height, minimumHeight);
2871
- maximumHeight = Math.max(height, maximumHeight);
2872
- const lon = Math_default.lerp(minimumLongitude, maximumLongitude, u);
2873
- const lat = Math_default.lerp(minimumLatitude, maximumLatitude, v);
2874
- const carto = Cartographic_default.fromRadians(
2875
- lon,
2876
- lat,
2877
- height,
2878
- scratchCartographicUpsample
2879
- );
2880
- const position = Cartographic_default.toCartesian(
2881
- carto,
2882
- ellipsoid,
2883
- scratchPosEcefUpsample
2884
- );
2885
- const posEnu = Matrix4_default.multiplyByPoint(
2886
- ecefToEnu,
2887
- position,
2888
- scratchPosEnuUpsample
2889
- );
2890
- minPosEnu = Cartesian3_default.minimumByComponent(posEnu, minPosEnu, minPosEnu);
2891
- maxPosEnu = Cartesian3_default.maximumByComponent(posEnu, maxPosEnu, maxPosEnu);
2892
- let normalOct;
2893
- if (hasVertexNormals) {
2894
- const normalA = encoding.decodeNormal(
2895
- vertexBuffer,
2896
- indexA,
2897
- scratchNormalA
2898
- );
2899
- const normalB = encoding.decodeNormal(
2900
- vertexBuffer,
2901
- indexB,
2902
- scratchNormalB
2903
- );
2904
- const normalC = encoding.decodeNormal(
2905
- vertexBuffer,
2906
- indexC,
2907
- scratchNormalC
2908
- );
2909
- let normal = Cartesian3_default.fromElements(
2910
- normalA.x * baryA + normalB.x * baryB + normalC.x * baryC,
2911
- normalA.y * baryA + normalB.y * baryB + normalC.y * baryC,
2912
- normalA.z * baryA + normalB.z * baryB + normalC.z * baryC,
2913
- scratchNormalUpsample
2914
- );
2915
- normal = Cartesian3_default.normalize(normal, scratchNormalUpsample);
2916
- normalOct = AttributeCompression_default.octEncode(
2917
- normal,
2918
- scratchNormalOctUpsample
2919
- );
2920
- }
2921
- let webMercatorT;
2922
- if (hasWebMercatorT) {
2923
- const mercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(lat);
2924
- webMercatorT = (mercatorAngle - southMercatorAngle) * oneOverMercatorHeight;
2925
- }
2926
- let geodeticSurfaceNormal;
2927
- if (hasGeodeticSurfaceNormals) {
2928
- geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
2929
- position,
2930
- scratchGeodeticSurfaceNormalUpsample
2931
- );
2932
- }
2933
- upsampledVertexBufferOffset = upsampledTerrainEncoding.encode(
2934
- upsampledVertexBuffer,
2935
- upsampledVertexBufferOffset,
2936
- position,
2937
- uv,
2938
- height,
2939
- normalOct,
2940
- webMercatorT,
2941
- geodeticSurfaceNormal
2942
- );
2943
- }
2944
- const orientedBoundingBox = OrientedBoundingBox_default.fromRectangle(
2945
- upsampleRectangle,
2946
- minimumHeight,
2947
- maximumHeight,
2948
- ellipsoid,
2949
- scratchOrientedBoundingBox
2950
- );
2951
- const boundingSphere = BoundingSphere_default.fromVertices(
2952
- upsampledVertexBuffer,
2953
- upsampledTerrainEncoding.center,
2954
- upsampledVertexBufferStride,
2955
- scratchBoundingSphere
2956
- );
2957
- const occluder = new EllipsoidalOccluder_default(ellipsoid);
2958
- const horizonOcclusionPoint = occluder.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(
2959
- upsampledTerrainEncoding.center,
2960
- // vector from ellipsoid center to horizon occlusion point
2961
- upsampledVertexBuffer,
2962
- upsampledVertexBufferStride,
2963
- upsampledTerrainEncoding.center,
2964
- minimumHeight,
2965
- scratchHorizonOcclusionPoint
2966
- );
2967
- const upsampledMesh = new TerrainMesh_default(
2968
- Cartesian3_default.clone(upsampledTerrainEncoding.center, new Cartesian3_default()),
2969
- upsampledVertexBuffer,
2970
- upsampledIndexBuffer,
2971
- upsampledIndexCountWithoutSkirts,
2972
- upsampledVertexCountWithoutSkirts,
2973
- minimumHeight,
2974
- maximumHeight,
2975
- upsampleRectangle,
2976
- BoundingSphere_default.clone(boundingSphere),
2977
- Cartesian3_default.clone(horizonOcclusionPoint),
2978
- upsampledVertexBufferStride,
2979
- OrientedBoundingBox_default.clone(orientedBoundingBox),
2980
- upsampledTerrainEncoding,
2981
- upsampledWestIndicesBuffer,
2982
- upsampledSouthIndicesBuffer,
2983
- upsampledEastIndicesBuffer,
2984
- upsampledNorthIndicesBuffer
2985
- );
2986
- addSkirtsToMesh(
2987
- upsampledMesh,
2988
- upsampleRectangle,
2989
- ellipsoid,
2990
- minPosEnu,
2991
- maxPosEnu,
2992
- enuToEcef,
2993
- ecefToEnu,
2994
- skirtHeight
2995
- );
2996
- return upsampledMesh;
2997
- };
2998
- function addSkirtsToMesh(mesh, rectangle, ellipsoid, enuMinimum, enuMaximum, enuToEcef, ecefToEnu, skirtHeight) {
2999
- const { encoding } = mesh;
3000
- const vertexStride = encoding.stride;
3001
- const vertexBuffer = mesh.vertices;
3002
- const {
3003
- hasVertexNormals,
3004
- hasWebMercatorT,
3005
- exaggeration,
3006
- exaggerationRelativeHeight
3007
- } = encoding;
3008
- const hasExaggeration = exaggeration !== 1;
3009
- const hasGeodeticSurfaceNormals = hasExaggeration;
3010
- const vertexCountWithoutSkirts = mesh.vertexCountWithoutSkirts;
3011
- let vertexBufferOffset = vertexCountWithoutSkirts * vertexStride;
3012
- const vertexCountWithSkirts = vertexBuffer.length / vertexStride;
3013
- const skirtVertexCount = vertexCountWithSkirts - vertexCountWithoutSkirts;
3014
- const indices = mesh.indices;
3015
- const indexCountWithoutSkirts = mesh.indexCountWithoutSkirts;
3016
- const westIndices = mesh.westIndicesSouthToNorth;
3017
- const southIndices = mesh.southIndicesEastToWest;
3018
- const eastIndices = mesh.eastIndicesNorthToSouth;
3019
- const northIndices = mesh.northIndicesWestToEast;
3020
- TerrainProvider_default.addSkirtIndicesWithFilledCorners(
3021
- westIndices,
3022
- southIndices,
3023
- eastIndices,
3024
- northIndices,
3025
- vertexCountWithoutSkirts,
3026
- indices,
3027
- indexCountWithoutSkirts
3028
- );
3029
- const westOffset = 0;
3030
- const southOffset = westOffset + westIndices.length;
3031
- const eastOffset = southOffset + southIndices.length;
3032
- const northOffset = eastOffset + eastIndices.length;
3033
- const edges = [westIndices, southIndices, eastIndices, northIndices];
3034
- const edgeIndexOffset = [westOffset, southOffset, eastOffset, northOffset];
3035
- const edgeLongitudeSign = [-1, 0, 1, 0];
3036
- const edgeLatitudeSign = [0, -1, 0, 1];
3037
- const minimumPositionENUWithSkirts = Cartesian3_default.clone(
3038
- enuMinimum,
3039
- scratchMinimumPositionENUSkirt
3040
- );
3041
- const maximumPositionENUWithSkirts = Cartesian3_default.clone(
3042
- enuMaximum,
3043
- scratchMaximumPositionENUSkirt
3044
- );
3045
- const maximumHeight = mesh.maximumHeight;
3046
- const minimumHeightWithSkirts = mesh.minimumHeight - skirtHeight;
3047
- for (let skirtId = 0; skirtId < skirtVertexCount; skirtId++) {
3048
- let side = 0;
3049
- for (side = 0; side < 3; side++) {
3050
- if (skirtId < edgeIndexOffset[side + 1]) {
3051
- break;
3052
- }
3053
- }
3054
- const vertexIndex = edges[side][skirtId - edgeIndexOffset[side]];
3055
- const uv = encoding.decodeTextureCoordinates(
3056
- vertexBuffer,
3057
- vertexIndex,
3058
- scratchUVSkirt
3059
- );
3060
- const skirtLonLatOffsetPercent = 1e-4;
3061
- const longitudeT = uv.x + edgeLongitudeSign[side] * skirtLonLatOffsetPercent;
3062
- const latitudeT = uv.y + edgeLatitudeSign[side] * skirtLonLatOffsetPercent;
3063
- const longitude = Math_default.lerp(
3064
- rectangle.west,
3065
- rectangle.east,
3066
- longitudeT
3067
- );
3068
- const latitude = Math_default.clamp(
3069
- Math_default.lerp(rectangle.south, rectangle.north, latitudeT),
3070
- -Math_default.PI_OVER_TWO,
3071
- +Math_default.PI_OVER_TWO
3072
- );
3073
- const vertHeight = encoding.decodeHeight(vertexBuffer, vertexIndex);
3074
- const height = vertHeight - skirtHeight;
3075
- const cartographic = Cartographic_default.fromRadians(
3076
- longitude,
3077
- latitude,
3078
- height,
3079
- scratchCartographicSkirt
3080
- );
3081
- const positionEcef = Cartographic_default.toCartesian(
3082
- cartographic,
3083
- ellipsoid,
3084
- scratchPosEcefSkirt
3085
- );
3086
- let normalOct;
3087
- if (hasVertexNormals) {
3088
- normalOct = encoding.getOctEncodedNormal(
3089
- vertexBuffer,
3090
- vertexIndex,
3091
- scratchNormalOctSkirt
3092
- );
3093
- }
3094
- let webMercatorT;
3095
- if (hasWebMercatorT) {
3096
- webMercatorT = encoding.decodeWebMercatorT(vertexBuffer, vertexIndex);
3097
- }
3098
- let geodeticSurfaceNormal;
3099
- if (hasGeodeticSurfaceNormals) {
3100
- geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
3101
- positionEcef,
3102
- scratchGeodeticSurfaceNormalSkirt
3103
- );
3104
- }
3105
- vertexBufferOffset = encoding.encode(
3106
- vertexBuffer,
3107
- vertexBufferOffset,
3108
- positionEcef,
3109
- uv,
3110
- height,
3111
- normalOct,
3112
- webMercatorT,
3113
- geodeticSurfaceNormal
3114
- );
3115
- const positionENU = Matrix4_default.multiplyByPoint(
3116
- ecefToEnu,
3117
- positionEcef,
3118
- scratchPosEnuSkirt
3119
- );
3120
- Cartesian3_default.minimumByComponent(
3121
- positionENU,
3122
- minimumPositionENUWithSkirts,
3123
- minimumPositionENUWithSkirts
3124
- );
3125
- Cartesian3_default.maximumByComponent(
3126
- positionENU,
3127
- maximumPositionENUWithSkirts,
3128
- maximumPositionENUWithSkirts
3129
- );
3130
- }
3131
- const aabbEnuWithSkirts = AxisAlignedBoundingBox_default.fromCorners(
3132
- minimumPositionENUWithSkirts,
3133
- maximumPositionENUWithSkirts,
3134
- scratchAABBEnuSkirt
3135
- );
3136
- const encodingWithSkirts = new TerrainEncoding_default(
3137
- encoding.center,
3138
- aabbEnuWithSkirts,
3139
- minimumHeightWithSkirts,
3140
- maximumHeight,
3141
- enuToEcef,
3142
- encoding.hasVertexNormals,
3143
- encoding.hasWebMercatorT,
3144
- hasGeodeticSurfaceNormals,
3145
- exaggeration,
3146
- exaggerationRelativeHeight
3147
- );
3148
- if (encoding.quantization !== encodingWithSkirts.quantization) {
3149
- const finalEncoding = encodingWithSkirts;
3150
- const finalVertexStride = finalEncoding.stride;
3151
- const finalVertexBuffer = new Float32Array(
3152
- vertexCountWithSkirts * finalVertexStride
3153
- );
3154
- let finalVertexBufferOffset = 0;
3155
- for (let i = 0; i < vertexCountWithSkirts; i++) {
3156
- finalVertexBufferOffset = finalEncoding.encode(
3157
- finalVertexBuffer,
3158
- finalVertexBufferOffset,
3159
- encoding.decodePosition(vertexBuffer, i, scratchPosEcefSkirt),
3160
- encoding.decodeTextureCoordinates(vertexBuffer, i, scratchUVSkirt),
3161
- encoding.decodeHeight(vertexBuffer, i),
3162
- encoding.hasVertexNormals ? encoding.getOctEncodedNormal(vertexBuffer, i, scratchNormalOctSkirt) : void 0,
3163
- encoding.hasWebMercatorT ? encoding.decodeWebMercatorT(vertexBuffer, i) : void 0,
3164
- encoding.hasGeodeticSurfaceNormals ? encoding.decodeGeodeticSurfaceNormal(
3165
- vertexBuffer,
3166
- i,
3167
- scratchGeodeticSurfaceNormalSkirt
3168
- ) : void 0
3169
- );
3170
- }
3171
- mesh.vertices = finalVertexBuffer;
3172
- mesh.stride = finalVertexStride;
3173
- mesh.encoding = finalEncoding;
3174
- }
3175
- return mesh;
3176
- }
3177
- var EDGE_ID_LEFT = 0;
3178
- var EDGE_ID_TOP = 1;
3179
- var EDGE_ID_RIGHT = 2;
3180
- var EDGE_ID_BOTTOM = 3;
3181
- var EDGE_COUNT = 4;
3182
- var scratchIntersection = new Cartesian3_default();
3183
- var scratchInBarys = [
3184
- new Cartesian3_default(),
3185
- new Cartesian3_default(),
3186
- new Cartesian3_default(),
3187
- new Cartesian3_default(),
3188
- new Cartesian3_default(),
3189
- new Cartesian3_default()
3190
- ];
3191
- var scratchInPoints = [
3192
- new Cartesian2_default(),
3193
- new Cartesian2_default(),
3194
- new Cartesian2_default(),
3195
- new Cartesian2_default(),
3196
- new Cartesian2_default(),
3197
- new Cartesian2_default()
3198
- ];
3199
- var scratchOutBarys = [
3200
- new Cartesian3_default(),
3201
- new Cartesian3_default(),
3202
- new Cartesian3_default(),
3203
- new Cartesian3_default(),
3204
- new Cartesian3_default(),
3205
- new Cartesian3_default()
3206
- ];
3207
- var scratchOutPoints = [
3208
- new Cartesian2_default(),
3209
- new Cartesian2_default(),
3210
- new Cartesian2_default(),
3211
- new Cartesian2_default(),
3212
- new Cartesian2_default(),
3213
- new Cartesian2_default()
3214
- ];
3215
- function inside(boxMinimum, boxMaximum, edgeId, p) {
3216
- switch (edgeId) {
3217
- case EDGE_ID_LEFT:
3218
- return Math_default.sign(p.x - boxMinimum.x);
3219
- case EDGE_ID_RIGHT:
3220
- return Math_default.sign(boxMaximum.x - p.x);
3221
- case EDGE_ID_BOTTOM:
3222
- return Math_default.sign(p.y - boxMinimum.y);
3223
- default:
3224
- return Math_default.sign(boxMaximum.y - p.y);
3225
- }
3226
- }
3227
- function intersect(boxMinimum, boxMaximum, edgeId, a, b, result) {
3228
- let t, intersectX, intersectY;
3229
- switch (edgeId) {
3230
- case EDGE_ID_LEFT:
3231
- t = (boxMinimum.x - a.x) / (b.x - a.x);
3232
- intersectX = boxMinimum.x;
3233
- intersectY = a.y + (b.y - a.y) * t;
3234
- break;
3235
- case EDGE_ID_RIGHT:
3236
- t = (boxMaximum.x - a.x) / (b.x - a.x);
3237
- intersectX = boxMaximum.x;
3238
- intersectY = a.y + (b.y - a.y) * t;
3239
- break;
3240
- case EDGE_ID_BOTTOM:
3241
- t = (boxMinimum.y - a.y) / (b.y - a.y);
3242
- intersectX = a.x + (b.x - a.x) * t;
3243
- intersectY = boxMinimum.y;
3244
- break;
3245
- default:
3246
- t = (boxMaximum.y - a.y) / (b.y - a.y);
3247
- intersectX = a.x + (b.x - a.x) * t;
3248
- intersectY = boxMaximum.y;
3249
- break;
3250
- }
3251
- return Cartesian3_default.fromElements(intersectX, intersectY, t, result);
3252
- }
3253
- var scratchPolygon = {
3254
- length: 0,
3255
- coordinates: [
3256
- new Cartesian2_default(),
3257
- new Cartesian2_default(),
3258
- new Cartesian2_default(),
3259
- new Cartesian2_default(),
3260
- new Cartesian2_default(),
3261
- new Cartesian2_default()
3262
- ],
3263
- barycentricCoordinates: [
3264
- new Cartesian3_default(),
3265
- new Cartesian3_default(),
3266
- new Cartesian3_default(),
3267
- new Cartesian3_default(),
3268
- new Cartesian3_default(),
3269
- new Cartesian3_default()
3270
- ]
3271
- };
3272
- function clipTriangleAgainstBoxEdgeRange(edgeStart, edgeCount, boxMinimum, boxMaximum, p0, p1, p2, result) {
3273
- let inputLength = 0;
3274
- let inputPoints = scratchInPoints;
3275
- let inputBarys = scratchInBarys;
3276
- let outputLength = 3;
3277
- let outputPoints = scratchOutPoints;
3278
- Cartesian2_default.clone(p0, outputPoints[0]);
3279
- Cartesian2_default.clone(p1, outputPoints[1]);
3280
- Cartesian2_default.clone(p2, outputPoints[2]);
3281
- let outputBarys = scratchOutBarys;
3282
- Cartesian3_default.fromElements(1, 0, 0, outputBarys[0]);
3283
- Cartesian3_default.fromElements(0, 1, 0, outputBarys[1]);
3284
- Cartesian3_default.fromElements(0, 0, 1, outputBarys[2]);
3285
- for (let e = 0; e < edgeCount; e++) {
3286
- const edgeId = (edgeStart + e) % EDGE_COUNT;
3287
- const tempPoints = inputPoints;
3288
- const tempBarys = inputBarys;
3289
- inputPoints = outputPoints;
3290
- inputBarys = outputBarys;
3291
- inputLength = outputLength;
3292
- outputPoints = tempPoints;
3293
- outputBarys = tempBarys;
3294
- outputLength = 0;
3295
- let prevIdx = inputLength - 1;
3296
- let prevPoint = inputPoints[prevIdx];
3297
- let prevBary = inputBarys[prevIdx];
3298
- let prevInside = inside(boxMinimum, boxMaximum, edgeId, prevPoint);
3299
- for (let currIdx = 0; currIdx < inputLength; currIdx++) {
3300
- const currPoint = inputPoints[currIdx];
3301
- const currBary = inputBarys[currIdx];
3302
- const currInside = inside(boxMinimum, boxMaximum, edgeId, currPoint);
3303
- if (prevInside * currInside === -1) {
3304
- const intersection = intersect(
3305
- boxMinimum,
3306
- boxMaximum,
3307
- edgeId,
3308
- prevPoint,
3309
- currPoint,
3310
- scratchIntersection
3311
- );
3312
- const { x, y, z: t } = intersection;
3313
- const tInv = 1 - t;
3314
- const baryA = prevBary.x * tInv + currBary.x * t;
3315
- const baryB = prevBary.y * tInv + currBary.y * t;
3316
- const baryC = prevBary.z * tInv + currBary.z * t;
3317
- Cartesian2_default.fromElements(x, y, outputPoints[outputLength]);
3318
- Cartesian3_default.fromElements(baryA, baryB, baryC, outputBarys[outputLength]);
3319
- outputLength++;
3320
- }
3321
- if (currInside >= 0) {
3322
- Cartesian2_default.clone(currPoint, outputPoints[outputLength]);
3323
- Cartesian3_default.clone(currBary, outputBarys[outputLength]);
3324
- outputLength++;
3325
- }
3326
- prevIdx = currIdx;
3327
- prevPoint = currPoint;
3328
- prevBary = currBary;
3329
- prevInside = currInside;
3330
- }
3331
- if (outputLength === 0) {
3332
- break;
3333
- }
3334
- }
3335
- result.length = outputLength;
3336
- for (let i = 0; i < outputLength; i++) {
3337
- Cartesian2_default.clone(outputPoints[i], result.coordinates[i]);
3338
- Cartesian3_default.clone(outputBarys[i], result.barycentricCoordinates[i]);
3339
- }
3340
- return result;
3341
- }
3342
- function clipTriangleFromQuadrant(isEastChild, isNorthChild, boxMinimum, boxMaximum, p0, p1, p2, result) {
3343
- const edgeStart = isEastChild ? isNorthChild ? EDGE_ID_BOTTOM : EDGE_ID_LEFT : isNorthChild ? EDGE_ID_RIGHT : EDGE_ID_TOP;
3344
- return clipTriangleAgainstBoxEdgeRange(
3345
- edgeStart,
3346
- 2,
3347
- boxMinimum,
3348
- boxMaximum,
3349
- p0,
3350
- p1,
3351
- p2,
3352
- result
3353
- );
3354
- }
3355
- var lookUpTableBaryToPrim = [
3356
- [],
3357
- // 000
3358
- [0],
3359
- // 001
3360
- [1],
3361
- // 010
3362
- [0, 1],
3363
- // 011
3364
- [2],
3365
- // 100
3366
- [0, 2],
3367
- // 101
3368
- [1, 2],
3369
- // 110
3370
- [0, 1, 2]
3371
- // 111
3372
- ];
3373
- function clipTileFromQuadrant(isEastChild, isNorthChild, indexCount, indices, vertexCount, vertices, vertexEncoding, resultIndices, resultWestIndices, resultSouthIndices, resultEastIndices, resultNorthIndices, resultTriIds, resultBary, resultUVs) {
3374
- const upsampledVertexMap = {};
3375
- const minU = isEastChild ? 0.5 : 0;
3376
- const maxU = isEastChild ? 1 : 0.5;
3377
- const minV = isNorthChild ? 0.5 : 0;
3378
- const maxV = isNorthChild ? 1 : 0.5;
3379
- const minUV = scratchMinUV;
3380
- minUV.x = minU;
3381
- minUV.y = minV;
3382
- const maxUV = scratchMaxUV;
3383
- maxUV.x = maxU;
3384
- maxUV.y = maxV;
3385
- let upsampledVertexCount = 0;
3386
- for (let i = 0; i < indexCount; i += 3) {
3387
- const indexA = indices[i + 0];
3388
- const indexB = indices[i + 1];
3389
- const indexC = indices[i + 2];
3390
- const uvA = vertexEncoding.decodeTextureCoordinates(
3391
- vertices,
3392
- indexA,
3393
- scratchUvA
3394
- );
3395
- const uvB = vertexEncoding.decodeTextureCoordinates(
3396
- vertices,
3397
- indexB,
3398
- scratchUvB
3399
- );
3400
- const uvC = vertexEncoding.decodeTextureCoordinates(
3401
- vertices,
3402
- indexC,
3403
- scratchUvC
3404
- );
3405
- const clippedPolygon = clipTriangleFromQuadrant(
3406
- isEastChild,
3407
- isNorthChild,
3408
- minUV,
3409
- maxUV,
3410
- uvA,
3411
- uvB,
3412
- uvC,
3413
- scratchPolygon
3414
- );
3415
- const clippedPolygonLength = clippedPolygon.length;
3416
- if (clippedPolygonLength < 3) {
3417
- continue;
3418
- }
3419
- const polygonUpsampledIndices = scratchPolygonIndices;
3420
- for (let p = 0; p < clippedPolygonLength; p++) {
3421
- const polygonBary = clippedPolygon.barycentricCoordinates[p];
3422
- const bA = polygonBary.x;
3423
- const bB = polygonBary.y;
3424
- const bC = polygonBary.z;
3425
- const baryId = Math.ceil(bA) | Math.ceil(bB) << 1 | Math.ceil(bC) << 2;
3426
- const primitiveIds = lookUpTableBaryToPrim[baryId];
3427
- let upsampledIndex;
3428
- let isNewVertex = false;
3429
- if (primitiveIds.length === 1) {
3430
- const pointPrimitiveId = primitiveIds[0];
3431
- const pointIndex = indices[i + pointPrimitiveId];
3432
- const pointKey = pointIndex;
3433
- upsampledIndex = upsampledVertexMap[pointKey];
3434
- if (upsampledIndex === void 0) {
3435
- isNewVertex = true;
3436
- upsampledIndex = upsampledVertexCount++;
3437
- upsampledVertexMap[pointKey] = upsampledIndex;
3438
- }
3439
- } else if (primitiveIds.length === 2) {
3440
- const edgePrimitiveIdA = primitiveIds[0];
3441
- const edgePrimitiveIdB = primitiveIds[1];
3442
- const edgeIndexA = indices[i + edgePrimitiveIdA];
3443
- const edgeIndexB = indices[i + edgePrimitiveIdB];
3444
- const prevBary = clippedPolygon.barycentricCoordinates[(p + clippedPolygonLength - 1) % clippedPolygonLength];
3445
- const prevBaryId = Math.ceil(prevBary.x) | Math.ceil(prevBary.y) << 1 | Math.ceil(prevBary.z) << 2;
3446
- const sameEdge = baryId === prevBaryId;
3447
- const minIndex = Math.min(edgeIndexA, edgeIndexB);
3448
- const maxIndex = Math.max(edgeIndexA, edgeIndexB);
3449
- const baseKey = vertexCount + 2 * (minIndex * vertexCount + maxIndex);
3450
- const firstKey = baseKey + 0;
3451
- const secondKey = baseKey + 1;
3452
- const firstEntry = upsampledVertexMap[firstKey];
3453
- const secondEntry = upsampledVertexMap[secondKey];
3454
- const useFirst = !sameEdge === (firstEntry === void 0 || secondEntry === void 0);
3455
- upsampledIndex = useFirst ? firstEntry : secondEntry;
3456
- if (upsampledIndex === void 0) {
3457
- isNewVertex = true;
3458
- upsampledIndex = upsampledVertexCount++;
3459
- const edgeKey = useFirst ? firstKey : secondKey;
3460
- upsampledVertexMap[edgeKey] = upsampledIndex;
3461
- }
3462
- } else {
3463
- isNewVertex = true;
3464
- upsampledIndex = upsampledVertexCount++;
3465
- }
3466
- polygonUpsampledIndices[p] = upsampledIndex;
3467
- if (isNewVertex) {
3468
- const triId = i / 3;
3469
- resultTriIds.push(triId);
3470
- const polygonUV = clippedPolygon.coordinates[p];
3471
- const u = (polygonUV.x - minU) / (maxU - minU);
3472
- const v = (polygonUV.y - minV) / (maxV - minV);
3473
- resultUVs.push(u, v);
3474
- resultBary.push(bA, bB);
3475
- if (u === 0) {
3476
- resultWestIndices.push(upsampledIndex);
3477
- } else if (u === 1) {
3478
- resultEastIndices.push(upsampledIndex);
3479
- }
3480
- if (v === 0) {
3481
- resultSouthIndices.push(upsampledIndex);
3482
- } else if (v === 1) {
3483
- resultNorthIndices.push(upsampledIndex);
3484
- }
3485
- }
3486
- }
3487
- const ui0 = polygonUpsampledIndices[0];
3488
- let ui1 = polygonUpsampledIndices[1];
3489
- let ui2 = polygonUpsampledIndices[2];
3490
- resultIndices.push(ui0, ui1, ui2);
3491
- for (let j = 3; j < clippedPolygonLength; j++) {
3492
- ui1 = ui2;
3493
- ui2 = polygonUpsampledIndices[j];
3494
- resultIndices.push(ui0, ui1, ui2);
3495
- }
3496
- }
3497
- resultWestIndices.sort(function(a, b) {
3498
- return resultUVs[a * 2 + 1] - resultUVs[b * 2 + 1];
3499
- });
3500
- resultSouthIndices.sort(function(a, b) {
3501
- return resultUVs[b * 2 + 0] - resultUVs[a * 2 + 0];
3502
- });
3503
- resultEastIndices.sort(function(a, b) {
3504
- return resultUVs[b * 2 + 1] - resultUVs[a * 2 + 1];
3505
- });
3506
- resultNorthIndices.sort(function(a, b) {
3507
- return resultUVs[a * 2 + 0] - resultUVs[b * 2 + 0];
3508
- });
3509
- }
3510
- var Cesium3DTilesTerrainGeometryProcessor_default = Cesium3DTilesTerrainGeometryProcessor;
3511
-
3512
- export {
3513
- Cesium3DTilesTerrainGeometryProcessor_default
3514
- };