angular-three-soba 2.0.0-beta.2 → 2.0.0-beta.21

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 (321) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +24 -12
  4. package/abstractions/grid/grid.d.ts +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +31 -12
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +105 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +150 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +29 -29
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +36 -32
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  55. package/esm2022/misc/example/example.mjs +160 -0
  56. package/esm2022/misc/fbo/fbo.mjs +35 -35
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +304 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +142 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +209 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +220 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +326 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +182 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +144 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +37 -15
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +104 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +121 -117
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2214 -105
  147. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  148. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  149. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  150. package/fesm2022/angular-three-soba-performances.mjs +956 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +549 -252
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +31 -16
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +100 -24
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +26 -23
  227. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +37 -37
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +14 -10
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/accumulative-shadows/progressive-light-map.ts","../../../../libs/soba/staging/src/accumulative-shadows/accumulative-shadows.ts","../../../../libs/soba/staging/src/accumulative-shadows/randomized-lights.ts","../../../../libs/soba/staging/src/bounds/bounds.ts","../../../../libs/soba/staging/src/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/caustics/caustisc.ts","../../../../libs/soba/staging/src/center/center.ts","../../../../libs/soba/staging/src/cloud/cloud.ts","../../../../libs/soba/staging/src/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/environment/assets.ts","../../../../libs/soba/staging/src/environment/environment-input.ts","../../../../libs/soba/staging/src/environment/utils.ts","../../../../libs/soba/staging/src/environment/environment-cube.ts","../../../../libs/soba/staging/src/environment/environment-map.ts","../../../../libs/soba/staging/src/environment/environment-ground.ts","../../../../libs/soba/staging/src/environment/environment-portal.ts","../../../../libs/soba/staging/src/environment/environment.ts","../../../../libs/soba/staging/src/float/float.ts","../../../../libs/soba/staging/src/sky/sky.ts","../../../../libs/soba/staging/src/sparkles/sparkles.ts","../../../../libs/soba/staging/src/spot-light/spot-light-input.ts","../../../../libs/soba/staging/src/spot-light/volumetric-mesh.ts","../../../../libs/soba/staging/src/spot-light/spot-light.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh-input.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh.ts","../../../../libs/soba/staging/src/stage/stage.ts","../../../../libs/soba/staging/src/stars/stars.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { DiscardMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry;\n}\n\n// Based on \"Progressive Light Map Accumulator\", by [zalo](https://github.com/zalo/)\nexport class ProgressiveLightMap {\n renderer: THREE.WebGLRenderer;\n res: number;\n scene: THREE.Scene;\n object: THREE.Mesh | null;\n buffer1Active: boolean;\n progressiveLightMap1: THREE.WebGLRenderTarget;\n progressiveLightMap2: THREE.WebGLRenderTarget;\n discardMat: THREE.ShaderMaterial;\n targetMat: THREE.MeshLambertMaterial;\n previousShadowMap: { value: THREE.Texture };\n averagingWindow: { value: number };\n clearColor: THREE.Color;\n clearAlpha: number;\n lights: { object: THREE.Light; intensity: number }[];\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer;\n this.res = res;\n this.scene = scene;\n this.buffer1Active = false;\n this.lights = [];\n this.meshes = [];\n this.object = null;\n this.clearColor = new THREE.Color();\n this.clearAlpha = 0;\n\n // Create the Progressive LightMap Texture\n const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial();\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n this.previousShadowMap = { value: this.progressiveLightMap1.texture };\n this.averagingWindow = { value: 100 };\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {');\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms['previousShadowMap'] = this.previousShadowMap;\n shader.uniforms['averagingWindow'] = this.averagingWindow;\n };\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor);\n this.clearAlpha = this.renderer.getClearAlpha();\n this.renderer.setClearColor('black', 1);\n this.renderer.setRenderTarget(this.progressiveLightMap1);\n this.renderer.clear();\n this.renderer.setRenderTarget(this.progressiveLightMap2);\n this.renderer.clear();\n this.renderer.setRenderTarget(null);\n this.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n this.lights = [];\n this.meshes = [];\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material });\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity });\n }\n });\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0));\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity));\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n }\n\n configure(object: THREE.Mesh) {\n this.object = object;\n }\n\n update(camera: THREE.Camera, blendWindow = 100) {\n if (!this.object) return;\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow;\n this.object.material = this.targetMat;\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n // Render the object's surface maps\n const oldBg = this.scene.background;\n this.scene.background = null;\n this.renderer.setRenderTarget(activeMap);\n this.previousShadowMap.value = inactiveMap.texture;\n this.buffer1Active = !this.buffer1Active;\n this.renderer.render(this.scene, camera);\n this.renderer.setRenderTarget(null);\n this.scene.background = oldBg;\n }\n}\n","import {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n InjectionToken,\n Input,\n Signal,\n computed,\n effect,\n inject,\n untracked,\n} from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport { SoftShadowMaterial, SoftShadowMaterialInputs } from 'angular-three-soba/shaders';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nextend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });\n\nexport interface NgtsAccumulativeShadowsState {\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n frames: number;\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n blend: number;\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n limit: number;\n /** Scale of the plane, */\n scale: number;\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n temporal: boolean;\n /** Opacity of the plane, 1 */\n opacity: number;\n /** Discards alpha pixels, 0.65 */\n alphaTest: number;\n /** Shadow color, black */\n color: string;\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n colorBlend: number;\n /** Buffer resolution, 1024 */\n resolution: number;\n /** Texture tonemapping */\n toneMapped: boolean;\n}\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport interface NgtsAccumulativeShadowsApi {\n lights: Map<string, Signal<NgtsAccumulativeShadowsLightApi>>;\n temporal: boolean;\n frames: number;\n blend: number;\n count: number;\n getMesh: () => THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>;\n reset: () => void;\n update: (frames?: number) => void;\n}\n\nexport const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken<Signal<NgtsAccumulativeShadowsApi>>(\n 'NgtsAccumulativeShadows API'\n);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-accumulative-shadows': NgtGroup & NgtsAccumulativeShadowsState;\n }\n}\n\n@Component({\n selector: 'ngts-accumulative-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"accumulativeShadowsRef\" [traverse]=\"nullTraverse\">\n <ng-content />\n </ngt-group>\n <ngt-mesh\n [ref]=\"meshRef\"\n [receiveShadow]=\"true\"\n [scale]=\"accumulativeShadowsScale()\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-plane-geometry />\n <ngt-soft-shadow-material\n [transparent]=\"true\"\n [depthWrite]=\"false\"\n [toneMapped]=\"accumulativeShadowsToneMapped()\"\n [color]=\"accumulativeShadowsColor()\"\n [blend]=\"accumulativeShadowsColorBlend()\"\n [map]=\"pLM().progressiveLightMap2.texture\"\n />\n </ngt-mesh>\n </ngt-group>\n `,\n providers: [\n {\n provide: NGTS_ACCUMULATIVE_SHADOWS_API,\n useFactory: (shadows: NgtsAccumulativeShadows) => shadows.api,\n deps: [NgtsAccumulativeShadows],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows extends NgtSignalStore<NgtsAccumulativeShadowsState> {\n readonly nullTraverse = () => null;\n readonly Math = Math;\n\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n @Input() set blend(blend: number) {\n this.set({ blend });\n }\n\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n @Input() set limit(limit: number) {\n this.set({ limit });\n }\n\n /** Scale of the plane, */\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n @Input() set temporal(temporal: boolean) {\n this.set({ temporal });\n }\n\n /** Opacity of the plane, 1 */\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n /** Discards alpha pixels, 0.65 */\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n /** Shadow color, black */\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n @Input() set colorBlend(colorBlend: number) {\n this.set({ colorBlend });\n }\n\n /** Buffer resolution, 1024 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n /** Texture tonemapping */\n @Input() set toneMapped(toneMapped: boolean) {\n this.set({ toneMapped });\n }\n\n readonly #store = inject(NgtStore);\n readonly #gl = this.#store.select('gl');\n readonly #scene = this.#store.select('scene');\n readonly #camera = this.#store.select('camera');\n\n readonly #resolution = this.select('resolution');\n readonly #temporal = this.select('temporal');\n readonly #blend = this.select('blend');\n readonly #frames = this.select('frames');\n readonly #opacity = this.select('opacity');\n readonly #alphaTest = this.select('alphaTest');\n\n readonly accumulativeShadowsScale = this.select('scale');\n readonly accumulativeShadowsToneMapped = this.select('toneMapped');\n readonly accumulativeShadowsColor = this.select('color');\n readonly accumulativeShadowsColorBlend = this.select('colorBlend');\n\n readonly meshRef = injectNgtRef<THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>>();\n readonly accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n\n readonly pLM = computed(\n () => new ProgressiveLightMap(untracked(this.#gl), untracked(this.#scene), this.#resolution())\n );\n\n readonly api = computed(() => {\n const pLM = this.pLM();\n const alphaTest = this.#alphaTest();\n const opacity = this.#opacity();\n const camera = this.#camera();\n\n return {\n lights: new Map(),\n temporal: this.#temporal(),\n frames: Math.max(2, this.#frames()),\n blend: Math.max(2, this.#frames() === Infinity ? this.#blend() : this.#frames()),\n count: 0,\n getMesh: () => this.meshRef.nativeElement,\n reset: () => {\n if (!this.meshRef.nativeElement) return;\n // Clear buffers, reset opacities, set frame count to 0\n pLM.clear();\n const material = this.meshRef.nativeElement.material;\n material.opacity = 0;\n material.alphaTest = 0;\n this.api().count = 0;\n },\n update: (frames = 1) => {\n if (!this.meshRef.nativeElement) return;\n // Adapt the opacity-blend ratio to the number of frames\n const material = this.meshRef.nativeElement.material;\n if (!this.api().temporal) {\n material.opacity = opacity;\n material.alphaTest = alphaTest;\n } else {\n material.opacity = Math.min(opacity, material.opacity + opacity / this.api().blend);\n material.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / this.api().blend);\n }\n\n // Switch accumulative lights on\n this.accumulativeShadowsRef.nativeElement.visible = true;\n // Collect scene lights and meshes\n pLM.prepare();\n\n // Update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n this.api().lights.forEach((light) => light().update());\n pLM.update(camera, this.api().blend);\n }\n // Switch lights off\n this.accumulativeShadowsRef.nativeElement.visible = false;\n // Restore lights and meshes\n pLM.finish();\n },\n };\n });\n\n constructor() {\n super({\n frames: 40,\n limit: Infinity,\n blend: 20,\n scale: 10,\n opacity: 1,\n alphaTest: 0.75,\n color: 'black',\n colorBlend: 2,\n resolution: 1024,\n toneMapped: true,\n temporal: false,\n });\n requestAnimationInInjectionContext(() => {\n this.#configure();\n this.#resetAndUpdate();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender() {\n const invalidate = this.#store.get('invalidate');\n const limit = this.get('limit');\n const api = this.api();\n if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n invalidate();\n api.update();\n api.count++;\n }\n }\n\n #configure() {\n const trigger = computed(() => ({ pLM: this.pLM(), mesh: this.meshRef.nativeElement }));\n effect(() => {\n const { pLM, mesh } = trigger();\n if (!mesh) return;\n pLM.configure(mesh);\n });\n }\n\n #resetAndUpdate() {\n const trigger = computed(() => ({\n state: this.select()(),\n objects: getLocalState(this.#store.get('scene')).objects(),\n mesh: this.meshRef.nativeElement,\n }));\n\n effect(() => {\n const { mesh } = trigger();\n if (!mesh) return;\n const api = untracked(this.api);\n // Reset internals, buffers, ...\n api.reset();\n // Update lightmap\n if (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n });\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, inject } from '@angular/core';\nimport {\n NgtArgs,\n NgtRepeat,\n NgtSignalStore,\n extend,\n injectNgtRef,\n requestAnimationInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport interface NgtsRandomizedLightsState {\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n frames: number;\n /** Light position, [0, 0, 0] */\n position: [x: number, y: number, z: number];\n /** Radius of the jiggle, higher values make softer light, 5 */\n radius: number;\n /** Amount of lights, 8 */\n amount: number;\n /** Light intensity, 1 */\n intensity: number;\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n ambient: number;\n /** If the lights cast shadows, this is true by default */\n castShadow: boolean;\n /** Default shadow bias, 0 */\n bias: number;\n /** Default map size, 512 */\n mapSize: number;\n /** Default size of the shadow camera, 10 */\n size: number;\n /** Default shadow camera near, 0.5 */\n near: number;\n /** Default shadow camera far, 500 */\n far: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-randomized-lights': NgtGroup & NgtsRandomizedLightsState;\n }\n}\n\n@Component({\n selector: 'ngts-randomized-lights',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"lightsRef\">\n <ngt-directional-light\n *ngFor=\"let i; repeat: lightsAmount()\"\n [castShadow]=\"lightsCastShadow()\"\n [intensity]=\"lightsIntensity() / lightsAmount()\"\n >\n <ngt-value [rawValue]=\"lightsBias()\" attach=\"shadow.bias\" />\n <ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n <ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n </ngt-directional-light>\n </ngt-group>\n `,\n imports: [NgtArgs, NgtRepeat],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights extends NgtSignalStore<NgtsRandomizedLightsState> {\n @Input() lightsRef = injectNgtRef<THREE.Group>();\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** Light position, [0, 0, 0] */\n @Input() set position(position: [x: number, y: number, z: number]) {\n this.set({ position });\n }\n\n /** Radius of the jiggle, higher values make softer light, 5 */\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n /** Amount of lights, 8 */\n @Input() set amount(amount: number) {\n this.set({ amount });\n }\n\n /** Light intensity, 1 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n @Input() set ambient(ambient: number) {\n this.set({ ambient });\n }\n\n /** If the lights cast shadows, this is true by default */\n @Input() set castShadow(castShadow: boolean) {\n this.set({ castShadow });\n }\n\n /** Default shadow bias, 0 */\n @Input() set bias(bias: number) {\n this.set({ bias });\n }\n\n /** Default map size, 512 */\n @Input() set mapSize(mapSize: number) {\n this.set({ mapSize });\n }\n\n /** Default size of the shadow camera, 10 */\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n /** Default shadow camera near, 0.5 */\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n /** Default shadow camera far, 500 */\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n readonly #parent = inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n\n readonly #size = this.select('size');\n readonly #near = this.select('near');\n readonly #far = this.select('far');\n readonly #mapSize = this.select('mapSize');\n readonly #ambient = this.select('ambient');\n readonly #position = this.select('position');\n readonly #radius = this.select('radius');\n\n readonly lightsAmount = this.select('amount');\n readonly lightsCastShadow = this.select('castShadow');\n readonly lightsIntensity = this.select('intensity');\n readonly lightsBias = this.select('bias');\n\n readonly shadowMapSize = computed(() => [this.#mapSize(), this.#mapSize()]);\n readonly cameraArgs = computed(() => [\n -this.#size(),\n this.#size(),\n this.#size(),\n -this.#size(),\n this.#near(),\n this.#far(),\n ]);\n\n readonly length = computed(() => new THREE.Vector3(...this.#position()).length());\n\n readonly api = computed(() => {\n const radius = this.#radius();\n const position = this.#position();\n const ambient = this.#ambient();\n const length = this.length();\n const lights = this.lightsRef.nativeElement;\n\n const update = () => {\n let light: THREE.DirectionalLight | undefined;\n if (lights) {\n for (let l = 0; l < lights.children.length; l++) {\n light = lights.children[l] as THREE.DirectionalLight;\n if (Math.random() > ambient) {\n light.position.set(\n position[0] + THREE.MathUtils.randFloatSpread(radius),\n position[1] + THREE.MathUtils.randFloatSpread(radius),\n position[2] + THREE.MathUtils.randFloatSpread(radius)\n );\n } else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n const phi = 2 * Math.PI * Math.random();\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n );\n }\n }\n }\n };\n\n return { update };\n });\n\n constructor() {\n super({\n castShadow: true,\n bias: 0.001,\n mapSize: 512,\n size: 5,\n near: 0.5,\n far: 500,\n frames: 1,\n position: [0, 0, 0],\n radius: 1,\n amount: 8,\n intensity: 1,\n ambient: 0.5,\n });\n requestAnimationInInjectionContext(() => {\n this.#updateLightsMap();\n });\n }\n\n #updateLightsMap() {\n effect((onCleanup) => {\n const lights = this.lightsRef.nativeElement;\n if (!lights) return;\n const parent = this.#parent();\n if (parent) {\n parent.lights.set(lights.uuid, this.api);\n onCleanup(() => parent.lights.delete(lights.uuid));\n }\n });\n }\n}\n","import {\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n effect,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n Output,\n Signal,\n untracked,\n} from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n is,\n NgtSignalStore,\n NgtStore,\n requestAnimationInInjectionContext,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport type NgtsBoundsSize = {\n box: THREE.Box3;\n size: THREE.Vector3;\n center: THREE.Vector3;\n distance: number;\n};\n\nexport type NgtsBoundsApi = {\n getSize: () => NgtsBoundsSize;\n refresh: (object?: THREE.Object3D | THREE.Box3) => NgtsBoundsApi;\n clip: () => NgtsBoundsApi;\n fit: () => NgtsBoundsApi;\n to: ({\n position,\n target,\n }: {\n position: [number, number, number];\n target?: [number, number, number];\n }) => NgtsBoundsApi;\n};\n\ntype ControlsProto = {\n update(): void;\n target: THREE.Vector3;\n maxDistance: number;\n addEventListener: (event: string, callback: (event: any) => void) => void;\n removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport const NGTS_BOUNDS_API = new InjectionToken<Signal<NgtsBoundsApi>>('NgtsBounds API');\n\nexport interface NgtsBoundsState {\n damping: number;\n fit: boolean;\n clip: boolean;\n observe: boolean;\n margin: number;\n eps: number;\n}\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-bounds',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"boundsRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [{ provide: NGTS_BOUNDS_API, useFactory: (bounds: NgtsBounds) => bounds.api, deps: [NgtsBounds] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds extends NgtSignalStore<NgtsBoundsState> {\n @Input() boundsRef = injectNgtRef<Group>();\n\n @Input() set damping(damping: number) {\n this.set({ damping });\n }\n\n @Input() set fit(fit: boolean) {\n this.set({ fit });\n }\n\n @Input() set clip(clip: boolean) {\n this.set({ clip });\n }\n\n @Input() set observe(observe: boolean) {\n this.set({ observe });\n }\n\n @Input() set margin(margin: number) {\n this.set({ margin });\n }\n\n @Input() set eps(eps: number) {\n this.set({ eps });\n }\n\n @Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n readonly #store = inject(NgtStore);\n readonly #controls = this.#store.select('controls');\n readonly #camera = this.#store.select('camera');\n readonly #invalidate = this.#store.select('invalidate');\n readonly #size = this.#store.select('size');\n\n readonly #current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n readonly #goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\n readonly #box = new THREE.Box3();\n\n readonly #margin = this.select('margin');\n readonly #damping = this.select('damping');\n readonly #fit = this.select('fit');\n readonly #clip = this.select('clip');\n readonly #observe = this.select('observe');\n\n #count = 0;\n\n readonly api = computed(() => {\n const margin = this.#margin();\n const damping = this.#damping();\n\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n const invalidate = this.#invalidate();\n\n const current = this.#current;\n const goal = this.#goal;\n\n const box = this.#box;\n const ref = () => this.boundsRef.untracked;\n const fitted = this.fitted;\n\n function getSize() {\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = is.orthographicCamera(camera)\n ? maxSize * 4\n : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n return { box, size, center, distance };\n }\n\n return {\n getSize,\n refresh(object?: THREE.Object3D | THREE.Box3) {\n if (isBox3(object)) box.copy(object);\n else {\n const target = object || ref();\n if (target) {\n target.updateWorldMatrix(true, true);\n box.setFromObject(target);\n }\n }\n if (box.isEmpty()) {\n const max = camera.position.length() || 10;\n box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n }\n\n if (controls?.constructor.name === 'OrthographicTrackballControls') {\n // Put camera on a sphere along which it should move\n const { distance } = getSize();\n const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n const newPos = controls.target.clone().add(direction);\n camera.position.copy(newPos);\n }\n\n return this;\n },\n\n clip() {\n const { distance } = getSize();\n if (controls) controls.maxDistance = distance * 10;\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (controls) controls.update();\n invalidate();\n return this;\n },\n to({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n current.camera.copy(camera.position);\n const { center } = getSize();\n goal.camera.set(...position);\n\n if (target) {\n goal.focus.set(...target);\n } else {\n goal.focus.copy(center);\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.set(...position);\n }\n\n return this;\n },\n fit() {\n current.camera.copy(camera.position);\n if (controls) current.focus.copy(controls.target);\n\n const { center, distance } = getSize();\n const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n goal.camera.copy(center).sub(direction);\n goal.focus.copy(center);\n\n if (is.orthographicCamera(camera)) {\n current.zoom = camera.zoom;\n\n let maxHeight = 0,\n maxWidth = 0;\n const vertices = [\n new THREE.Vector3(box.min.x, box.min.y, box.min.z),\n new THREE.Vector3(box.min.x, box.max.y, box.min.z),\n new THREE.Vector3(box.min.x, box.min.y, box.max.z),\n new THREE.Vector3(box.min.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.min.z),\n new THREE.Vector3(box.max.x, box.min.y, box.max.z),\n new THREE.Vector3(box.max.x, box.min.y, box.min.z),\n ];\n // Transform the center and each corner to camera space\n center.applyMatrix4(camera.matrixWorldInverse);\n for (const v of vertices) {\n v.applyMatrix4(camera.matrixWorldInverse);\n maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n }\n maxHeight *= 2;\n maxWidth *= 2;\n const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n const zoomForWidth = (camera.right - camera.left) / maxWidth;\n goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n if (!damping) {\n camera.zoom = goal.zoom;\n camera.updateProjectionMatrix();\n }\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.copy(goal.camera);\n camera.lookAt(goal.focus);\n if (controls) {\n controls.target.copy(goal.focus);\n controls.update();\n }\n }\n if (fitted.observed) fitted.emit(this.getSize());\n invalidate();\n return this;\n },\n };\n });\n\n constructor() {\n super({ damping: 6, fit: false, clip: false, observe: false, margin: 1.2, eps: 0.01 });\n this.#preventDragHijacking();\n requestAnimationInInjectionContext(() => {\n this.#scalePointer();\n injectBeforeRender(this.#onBeforeRender.bind(this));\n });\n }\n\n #scalePointer() {\n const trigger = computed(() => ({\n size: this.#size(),\n fit: this.#fit(),\n clip: this.#clip(),\n observe: this.#observe(),\n camera: this.#camera(),\n controls: this.#controls(),\n }));\n effect(() => {\n const { observe, fit, clip } = trigger();\n const api = untracked(this.api);\n if (observe || this.#count++ === 0) {\n api.refresh();\n if (fit) api.fit();\n if (clip) api.clip();\n }\n });\n }\n\n #onBeforeRender({ delta }: NgtRenderState) {\n const { damping, eps } = this.get();\n const invalidate = this.#invalidate();\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n\n if (this.#current.animating) {\n damp(this.#current.focus, this.#goal.focus, damping, delta);\n damp(this.#current.camera, this.#goal.camera, damping, delta);\n this.#current.zoom = THREE.MathUtils.damp(this.#current.zoom, this.#goal.zoom, damping, delta);\n camera.position.copy(this.#current.camera);\n\n if (is.orthographicCamera(camera)) {\n camera.zoom = this.#current.zoom;\n camera.updateProjectionMatrix();\n }\n\n if (!controls) {\n camera.lookAt(this.#current.focus);\n } else {\n controls.target.copy(this.#current.focus);\n controls.update();\n }\n\n invalidate();\n if (is.orthographicCamera(camera) && !(Math.abs(this.#current.zoom - this.#goal.zoom) < eps)) return;\n if (!is.orthographicCamera(camera) && !equals(this.#current.camera, this.#goal.camera, eps)) return;\n if (controls && !equals(this.#current.focus, this.#goal.focus, eps)) return;\n this.#current.animating = false;\n }\n }\n\n #preventDragHijacking() {\n effect((onCleanup) => {\n const controls = this.#controls() as unknown as ControlsProto;\n if (controls) {\n const callback = () => (this.#current.animating = false);\n controls.addEventListener('start', callback);\n onCleanup(() => controls.removeEventListener('start', callback));\n }\n });\n }\n}\n","import { computed, Directive, effect, inject, Input, OnInit } from '@angular/core';\nimport { injectBeforeRender, NgtSignalStore, NgtStore } from 'angular-three';\nimport { SimplexNoise } from 'three-stdlib';\n\nexport interface NgtsCameraShakeState {\n intensity: number;\n decay: boolean;\n decayRate: number;\n maxYaw: number;\n maxPitch: number;\n maxRoll: number;\n yawFrequency: number;\n pitchFrequency: number;\n rollFrequency: number;\n}\n\n@Directive({ selector: 'ngts-camera-shake', standalone: true })\nexport class NgtsCameraShake extends NgtSignalStore<NgtsCameraShakeState> implements OnInit {\n readonly #store = inject(NgtStore);\n\n #initialRotation = this.#store.get('camera').rotation.clone();\n\n readonly #yawNoise = new SimplexNoise();\n readonly #rollNoise = new SimplexNoise();\n readonly #pitchNoise = new SimplexNoise();\n\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n @Input() set decay(decay: boolean) {\n this.set({ decay });\n }\n\n @Input() set decayRate(decayRate: number) {\n this.set({ decayRate });\n }\n\n @Input() set maxYaw(maxYaw: number) {\n this.set({ maxYaw });\n }\n\n @Input() set maxPitch(maxPitch: number) {\n this.set({ maxPitch });\n }\n\n @Input() set maxRoll(maxRoll: number) {\n this.set({ maxRoll });\n }\n\n @Input() set yawFrequency(yawFrequency: number) {\n this.set({ yawFrequency });\n }\n\n @Input() set pitchFrequency(pitchFrequency: number) {\n this.set({ pitchFrequency });\n }\n\n @Input() set rollFrequency(rollFrequency: number) {\n this.set({ rollFrequency });\n }\n\n constructor() {\n super({\n intensity: 1,\n decayRate: 0.65,\n maxYaw: 0.1,\n maxPitch: 0.1,\n maxRoll: 0.1,\n yawFrequency: 0.1,\n pitchFrequency: 0.1,\n rollFrequency: 0.1,\n });\n\n injectBeforeRender(({ clock, delta, camera }) => {\n const {\n intensity,\n maxYaw,\n maxPitch,\n maxRoll,\n yawFrequency,\n pitchFrequency,\n rollFrequency,\n decay,\n decayRate,\n } = this.get();\n\n const shake = Math.pow(intensity, 2);\n const yaw = maxYaw * shake * this.#yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n const pitch = maxPitch * shake * this.#pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n const roll = maxRoll * shake * this.#rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n camera.rotation.set(\n this.#initialRotation.x + pitch,\n this.#initialRotation.y + yaw,\n this.#initialRotation.z + roll\n );\n\n if (decay && intensity > 0) {\n this.set({ intensity: intensity - decayRate * delta });\n this.#constraintIntensity();\n }\n });\n\n this.#setChangeEvent();\n }\n\n ngOnInit(): void {}\n\n #setChangeEvent() {\n const camera = this.#store.select('camera');\n const controls = this.#store.select('controls');\n const trigger = computed(() => ({ camera: camera(), controls: controls() }));\n effect((onCleanup) => {\n const { camera, controls } = trigger();\n if (controls) {\n const callback = () => void (this.#initialRotation = camera.rotation.clone());\n controls.addEventListener('change', callback);\n callback();\n onCleanup(() => void controls.removeEventListener('change', callback));\n }\n });\n }\n\n getIntensity() {\n return this.get('intensity');\n }\n\n setIntensity(intensity: number) {\n this.set({ intensity });\n this.#constraintIntensity();\n }\n\n #constraintIntensity() {\n const intensity = this.get('intensity');\n if (intensity < 0 || intensity > 1) {\n this.set({ intensity: intensity < 0 ? 0 : 1 });\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, inject, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtSignalStore, NgtStore, requestAnimationInInjectionContext } from 'angular-three';\nimport { NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nextend({ Group, Scene, Mesh, PlaneGeometry, OrthographicCamera, CausticsProjectionMaterial, LineBasicMaterial });\n\nconst NORMALPROPS = {\n depth: true,\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n type: THREE.UnsignedByteType,\n};\n\nconst CAUSTICPROPS = {\n minFilter: THREE.LinearMipmapLinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n format: THREE.RGBAFormat,\n type: THREE.FloatType,\n generateMipmaps: true,\n};\n\ntype CausticsMaterialType = THREE.ShaderMaterial & {\n cameraMatrixWorld?: THREE.Matrix4;\n cameraProjectionMatrixInv?: THREE.Matrix4;\n lightPlaneNormal?: THREE.Vector3;\n lightPlaneConstant?: number;\n normalTexture?: THREE.Texture | null;\n depthTexture?: THREE.Texture | null;\n lightDir?: THREE.Vector3;\n near?: number;\n far?: number;\n modelMatrix?: THREE.Matrix4;\n worldRadius?: number;\n ior?: number;\n bounces?: number;\n resolution?: number;\n size?: number;\n intensity?: number;\n};\n\ntype CausticsProjectionMaterialType = THREE.MeshNormalMaterial & {\n viewMatrix: { value?: THREE.Matrix4 };\n color?: THREE.Color;\n causticsTexture?: THREE.Texture;\n causticsTextureB?: THREE.Texture;\n lightProjMatrix?: THREE.Matrix4;\n lightViewMatrix?: THREE.Matrix4;\n};\n\nfunction createNormalMaterial(side: THREE.Side = THREE.FrontSide) {\n const viewMatrix = { value: new THREE.Matrix4() };\n return Object.assign(new THREE.MeshNormalMaterial({ side }), {\n viewMatrix,\n onBeforeCompile: (shader: any) => {\n shader.uniforms.viewMatrix = viewMatrix;\n shader.fragmentShader =\n `vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n }\\n` +\n shader.fragmentShader.replace(\n '#include <normal_fragment_maps>',\n `#include <normal_fragment_maps>\n normal = inverseTransformDirection( normal, viewMatrix );\\n`\n );\n },\n });\n}\n\nexport interface NgtsCausticsState {\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n frames: number;\n /** Enables visual cues to help you stage your scene, default: false */\n debug: boolean;\n /** Will display caustics only and skip the models, default: false */\n causticsOnly: boolean;\n /** Will include back faces and enable the backsideIOR prop, default: false */\n backside: boolean;\n /** The IOR refraction index, default: 1.1 */\n ior: number;\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n backsideIOR: number;\n /** The texel size, default: 0.3125 */\n worldRadius: number;\n /** Intensity of the prjected caustics, default: 0.05 */\n intensity: number;\n /** Caustics color, default: white */\n color: THREE.ColorRepresentation;\n /** Buffer resolution, default: 2048 */\n resolution: number;\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>;\n}\n\n@Component({\n selector: 'ngts-caustics',\n standalone: true,\n template: `\n <ngt-group [ref]=\"causticsRef\" ngtCompound>\n <ngt-scene [ref]=\"sceneRef\">\n <ngt-orthographic-camera [ref]=\"cameraRef\" [up]=\"[0, 1, 0]\" />\n <ng-content />\n </ngt-scene>\n <ngt-mesh [renderOrder]=\"2\" [ref]=\"planeRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n <ngt-plane-geometry />\n <ngt-caustics-projection-material\n *ngIf=\"causticsTargetFbo() && causticsTargetBFbo()\"\n [transparent]=\"true\"\n [color]=\"causticsColor()\"\n [causticsTexture]=\"causticsTargetFbo().texture\"\n [causticsTextureB]=\"causticsTargetBFbo().texture\"\n [blending]=\"CustomBlending\"\n [blendSrc]=\"OneFactor\"\n [blendDst]=\"SrcAlphaFactor\"\n [depthWrite]=\"false\"\n />\n\n <ngts-edges *ngIf=\"causticsDebug()\" [withChildren]=\"true\">\n <ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n </ngts-edges>\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [NgIf, NgtsEdges],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCaustics extends NgtSignalStore<NgtsCausticsState> {\n readonly CustomBlending = THREE.CustomBlending;\n readonly OneFactor = THREE.OneFactor;\n readonly SrcAlphaFactor = THREE.SrcAlphaFactor;\n readonly Math = Math;\n\n readonly planeRef = injectNgtRef<THREE.Mesh>();\n readonly sceneRef = injectNgtRef<THREE.Scene>();\n readonly cameraRef = injectNgtRef<THREE.OrthographicCamera>();\n\n @Input() causticsRef = injectNgtRef<THREE.Group>();\n\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n /** Enables visual cues to help you stage your scene, default: false */\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n /** Will display caustics only and skip the models, default: false */\n @Input() set causticsOnly(causticsOnly: boolean) {\n this.set({ causticsOnly });\n }\n /** Will include back faces and enable the backsideIOR prop, default: false */\n @Input() set backside(backside: boolean) {\n this.set({ backside });\n }\n /** The IOR refraction index, default: 1.1 */\n @Input() set ior(ior: number) {\n this.set({ ior });\n }\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n @Input() set backsideIOR(backsideIOR: number) {\n this.set({ backsideIOR });\n }\n /** The texel size, default: 0.3125 */\n @Input() set worldRadius(worldRadius: number) {\n this.set({ worldRadius });\n }\n /** Intensity of the prjected caustics, default: 0.05 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n /** Caustics color, default: white */\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n /** Buffer resolution, default: 2048 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n @Input() set lightSource(lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>) {\n this.set({ lightSource });\n }\n\n readonly causticsColor = this.select('color');\n readonly causticsDebug = this.select('debug');\n\n readonly #resolution = this.select('resolution');\n\n readonly #normalTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: NORMALPROPS,\n }));\n\n readonly #causticsTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: CAUSTICPROPS,\n }));\n\n readonly normalTargetFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly normalTargetBFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly causticsTargetFbo = injectNgtsFBO(this.#causticsTargetSettings);\n readonly causticsTargetBFbo = injectNgtsFBO(this.#causticsTargetSettings);\n\n readonly #store = inject(NgtStore);\n\n constructor() {\n super({\n frames: 1,\n ior: 1.1,\n color: 'white',\n causticsOnly: false,\n backside: false,\n backsideIOR: 1.1,\n worldRadius: 0.3125,\n intensity: 0.05,\n resolution: 2024,\n lightSource: [5, 5, 5],\n });\n requestAnimationInInjectionContext(() => {\n this.#updateWorldMatrix();\n this.#setBeforeRender();\n });\n }\n\n #updateWorldMatrix() {\n const trigger = computed(() => ({\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n causticsChildren: this.causticsRef.children()(),\n state: this.select()(),\n }));\n\n effect(() => {\n const { caustics } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n });\n }\n\n #setBeforeRender() {\n const causticsMaterial = new CausticsMaterial() as CausticsMaterialType;\n const causticsQuad = new FullScreenQuad(causticsMaterial);\n\n const normalMaterial = createNormalMaterial();\n const normalMaterialB = createNormalMaterial(THREE.BackSide);\n\n const trigger = computed(() => ({\n scene: this.sceneRef.nativeElement,\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n camera: this.cameraRef.nativeElement,\n normalTarget: this.normalTargetFbo(),\n normalTargetB: this.normalTargetBFbo(),\n causticsTarget: this.causticsTargetFbo(),\n causticsTargetB: this.causticsTargetBFbo(),\n plane: this.planeRef.nativeElement,\n planeChildren: this.planeRef.children('both')(),\n }));\n\n effect((onCleanup) => {\n const {\n caustics,\n sceneChildren,\n scene,\n camera,\n plane,\n normalTarget,\n normalTargetB,\n causticsTarget,\n causticsTargetB,\n } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n\n if (sceneChildren.length > 1) {\n const v = new THREE.Vector3();\n const lpF = new THREE.Frustum();\n const lpM = new THREE.Matrix4();\n const lpP = new THREE.Plane();\n\n const lightDir = new THREE.Vector3();\n const lightDirInv = new THREE.Vector3();\n const bounds = new THREE.Box3();\n const focusPos = new THREE.Vector3();\n\n let count = 0;\n const sub = this.#store.get('internal').subscribe(({ gl }) => {\n const {\n frames,\n lightSource,\n resolution,\n worldRadius,\n intensity,\n backside,\n backsideIOR,\n ior,\n causticsOnly,\n } = this.get();\n\n if (frames === Infinity || count++ < frames) {\n if (Array.isArray(lightSource)) lightDir.fromArray(lightSource).normalize();\n else\n lightDir.copy(\n caustics.worldToLocal(lightSource.nativeElement.getWorldPosition(v)).normalize()\n );\n\n lightDirInv.copy(lightDir).multiplyScalar(-1);\n\n let boundsVertices: THREE.Vector3[] = [];\n scene.parent?.matrixWorld.identity();\n bounds.setFromObject(scene, true);\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.max.z));\n\n const worldVerts = boundsVertices.map((v) => v.clone());\n\n bounds.getCenter(focusPos);\n boundsVertices = boundsVertices.map((v) => v.clone().sub(focusPos));\n const lightPlane = lpP.set(lightDirInv, 0);\n const projectedVerts = boundsVertices.map((v) =>\n lightPlane.projectPoint(v, new THREE.Vector3())\n );\n\n const centralVert = projectedVerts\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(projectedVerts.length);\n const radius = projectedVerts\n .map((v) => v.distanceTo(centralVert))\n .reduce((a, b) => Math.max(a, b));\n const dirLength = boundsVertices.map((x) => x.dot(lightDir)).reduce((a, b) => Math.max(a, b));\n\n // Shadows\n camera.position.copy(lightDir.clone().multiplyScalar(dirLength).add(focusPos));\n camera.lookAt(scene.localToWorld(focusPos.clone()));\n const dirMatrix = lpM.lookAt(camera.position, focusPos, v.set(0, 1, 0));\n camera.left = -radius;\n camera.right = radius;\n camera.top = radius;\n camera.bottom = -radius;\n const yOffset = v.set(0, radius, 0).applyMatrix4(dirMatrix);\n const yTime = (camera.position.y + yOffset.y) / lightDir.y;\n camera.near = 0.1;\n camera.far = yTime;\n camera.updateProjectionMatrix();\n camera.updateMatrixWorld();\n\n // Now find size of ground plane\n const groundProjectedCoords = worldVerts.map((v) =>\n v.add(lightDir.clone().multiplyScalar(-v.y / lightDir.y))\n );\n const centerPos = groundProjectedCoords\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(groundProjectedCoords.length);\n const maxSize =\n 2 *\n groundProjectedCoords\n .map((v) => Math.hypot(v.x - centerPos.x, v.z - centerPos.z))\n .reduce((a, b) => Math.max(a, b));\n plane.scale.setScalar(maxSize);\n plane.position.copy(centerPos);\n\n // if (debug) helper.current?.update();\n\n // Inject uniforms\n normalMaterialB.viewMatrix.value = normalMaterial.viewMatrix.value = camera.matrixWorldInverse;\n\n const dirLightNearPlane = lpF.setFromProjectionMatrix(\n lpM.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse)\n ).planes[4];\n\n causticsMaterial.cameraMatrixWorld = camera.matrixWorld;\n causticsMaterial.cameraProjectionMatrixInv = camera.projectionMatrixInverse;\n causticsMaterial.lightDir = lightDirInv;\n\n causticsMaterial.lightPlaneNormal = dirLightNearPlane.normal;\n causticsMaterial.lightPlaneConstant = dirLightNearPlane.constant;\n\n causticsMaterial.near = camera.near;\n causticsMaterial.far = camera.far;\n causticsMaterial.resolution = resolution;\n causticsMaterial.size = radius;\n causticsMaterial.intensity = intensity;\n causticsMaterial.worldRadius = worldRadius;\n\n // Switch the scene on\n scene.visible = true;\n\n // Render front face normals\n gl.setRenderTarget(normalTarget);\n gl.clear();\n scene.overrideMaterial = normalMaterial;\n gl.render(scene, camera);\n\n // Render back face normals, if enabled\n gl.setRenderTarget(normalTargetB);\n gl.clear();\n if (backside) {\n scene.overrideMaterial = normalMaterialB;\n gl.render(scene, camera);\n }\n\n // Remove the override material\n scene.overrideMaterial = null;\n\n // Render front face caustics\n causticsMaterial.ior = ior;\n (plane.material as CausticsProjectionMaterialType).lightProjMatrix = camera.projectionMatrix;\n (plane.material as CausticsProjectionMaterialType).lightViewMatrix = camera.matrixWorldInverse;\n causticsMaterial.normalTexture = normalTarget.texture;\n causticsMaterial.depthTexture = normalTarget.depthTexture;\n gl.setRenderTarget(causticsTarget);\n gl.clear();\n causticsQuad.render(gl);\n\n // Render back face caustics, if enabled\n causticsMaterial.ior = backsideIOR;\n causticsMaterial.normalTexture = normalTargetB.texture;\n causticsMaterial.depthTexture = normalTargetB.depthTexture;\n gl.setRenderTarget(causticsTargetB);\n gl.clear();\n if (backside) causticsQuad.render(gl);\n\n // Reset render target\n gl.setRenderTarget(null);\n\n // Switch the scene off if caustics is all that's wanted\n if (causticsOnly) scene.visible = false;\n }\n });\n\n onCleanup(() => sub());\n }\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, Input, Output } from '@angular/core';\nimport { extend, injectNgtRef, NgtSignalStore, requestAnimationInInjectionContext, type NgtGroup } from 'angular-three';\nimport { Box3, Group, Sphere, Vector3 } from 'three';\n\nexport type NgtsCenterState = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n front?: boolean;\n back?: boolean;\n /** Disable all axes */\n disable?: boolean;\n /** Disable x-axis centering */\n disableX?: boolean;\n /** Disable y-axis centering */\n disableY?: boolean;\n /** Disable z-axis centering */\n disableZ?: boolean;\n /** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n precise: boolean;\n};\n\nextend({ Group });\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-center': NgtsCenterState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-center',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"centerRef\">\n <ngt-group [ref]=\"outerRef\">\n <ngt-group [ref]=\"innerRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter extends NgtSignalStore<NgtsCenterState> {\n @Input() centerRef = injectNgtRef<Group>();\n\n readonly outerRef = injectNgtRef<Group>();\n readonly innerRef = injectNgtRef<Group>();\n\n @Input() set top(top: boolean) {\n this.set({ top });\n }\n\n @Input() set right(right: boolean) {\n this.set({ right });\n }\n\n @Input() set bottom(bottom: boolean) {\n this.set({ bottom });\n }\n\n @Input() set left(left: boolean) {\n this.set({ left });\n }\n\n @Input() set front(front: boolean) {\n this.set({ front });\n }\n\n @Input() set back(back: boolean) {\n this.set({ back });\n }\n\n @Input() set disableX(disableX: boolean) {\n this.set({ disableX });\n }\n\n @Input() set disableY(disableY: boolean) {\n this.set({ disableY });\n }\n\n @Input() set disableZ(disableZ: boolean) {\n this.set({ disableZ });\n }\n\n @Input() set disable(disable: boolean) {\n this.set({ disable });\n }\n\n @Input() set precise(precise: boolean) {\n this.set({ precise });\n }\n\n @Output() centered = new EventEmitter<{\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }>();\n\n constructor() {\n super({ precise: true });\n requestAnimationInInjectionContext(() => {\n this.#setPosition();\n });\n }\n\n #setPosition() {\n const trigger = computed(() => {\n const center = this.centerRef.nativeElement;\n const outer = this.outerRef.nativeElement;\n const inner = this.innerRef.nativeElement;\n const innerChildren = this.innerRef.children();\n return { center, outer, inner, innerChildren: innerChildren() };\n });\n\n effect(() => {\n const { center: centerGroup, outer, inner } = trigger();\n if (!outer || !inner) return;\n const { precise, top, left, front, disable, disableX, disableY, disableZ, back, bottom, right } =\n this.get();\n outer.matrixWorld.identity();\n const box3 = new Box3().setFromObject(inner, precise);\n const center = new Vector3();\n const sphere = new Sphere();\n const width = box3.max.x - box3.min.x;\n const height = box3.max.y - box3.min.y;\n const depth = box3.max.z - box3.min.z;\n\n box3.getCenter(center);\n box3.getBoundingSphere(sphere);\n\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n const hAlign = left ? -width / 2 : right ? width / 2 : 0;\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n outer.position.set(\n disable || disableX ? 0 : -center.x + hAlign,\n disable || disableY ? 0 : -center.y + vAlign,\n disable || disableZ ? 0 : -center.z + dAlign\n );\n\n if (this.centered.observed) {\n this.centered.emit({\n parent: centerGroup.parent!,\n container: centerGroup,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n });\n }\n });\n }\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, inject } from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n injectNgtRef,\n type NgtBeforeRenderEvent,\n type NgtGroup,\n} from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Group, Mesh, MeshStandardMaterial, PlaneGeometry } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n(injectNgtsTextureLoader as any).preload(() => CLOUD_URL);\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\nexport interface NgtsCloudState {\n opacity: number;\n speed: number;\n width: number;\n depth: number;\n segments: number;\n texture: string;\n color: THREE.ColorRepresentation;\n depthTest: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-cloud': NgtsCloudState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-cloud',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"groupRef\">\n <ngt-group\n [position]=\"[0, 0, (cloudSegments() / 2) * cloudDepth()]\"\n (beforeRender)=\"onBeforeRender($event)\"\n >\n <ngts-billboard\n *ngFor=\"let cloud of clouds(); let i = index\"\n [position]=\"[cloud.x, cloud.y, -i * cloudDepth()]\"\n >\n <ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n <ngt-plane-geometry />\n <!-- we use ngIf here for texture because by the time ngt-value is initialized -->\n <!-- [map] has not been resolved yet. we ngIf it so that texture is available before hand -->\n <ngt-mesh-standard-material\n *ngIf=\"cloudTexture() as cloudTexture\"\n [transparent]=\"true\"\n [map]=\"cloudTexture\"\n [depthTest]=\"cloudDepthTest()\"\n [opacity]=\"(cloud.scale / 6) * cloud.density * cloudOpacity()\"\n [color]=\"cloudColor()\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-standard-material>\n </ngt-mesh>\n </ngts-billboard>\n </ngt-group>\n </ngt-group>\n `,\n imports: [NgFor, NgtsBillboard, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud extends NgtSignalStore<NgtsCloudState> {\n @Input() groupRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set segments(segments: number) {\n this.set({ segments });\n }\n\n @Input() set texture(texture: string) {\n this.set({ texture });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthTest(depthTest: boolean) {\n this.set({ depthTest });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #width = this.select('width');\n readonly #speed = this.select('speed');\n\n readonly cloudSegments = this.select('segments');\n readonly cloudDepth = this.select('depth');\n readonly cloudDepthTest = this.select('depthTest');\n readonly cloudOpacity = this.select('opacity');\n readonly cloudColor = this.select('color');\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n\n readonly cloudTexture = injectNgtsTextureLoader(this.select('texture'));\n readonly clouds = computed(() =>\n [...new Array(this.cloudSegments())].map((_, index) => ({\n x: this.#width() / 2 - Math.random() * this.#width(),\n y: this.#width() / 2 - Math.random() * this.#width(),\n scale: 0.4 + Math.sin(((index + 1) / this.cloudSegments()) * Math.PI) * ((0.2 + Math.random()) * 10),\n density: Math.max(0.2, Math.random()),\n rotation: Math.max(0.002, 0.005 * Math.random()) * this.#speed(),\n }))\n );\n\n constructor() {\n super({\n opacity: 0.5,\n speed: 0.4,\n width: 10,\n depth: 1.5,\n segments: 20,\n texture: CLOUD_URL,\n color: '#ffffff',\n depthTest: true,\n });\n }\n\n onBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n const clouds = this.clouds();\n object.children.forEach((cloud, index) => {\n cloud.children[0].rotation.z += clouds[index].rotation;\n cloud.children[0].scale.setScalar(\n clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10\n );\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtGroup,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\nexport interface NgtsContactShadowsState {\n opacity: number;\n width: number;\n height: number;\n blur: number;\n far: number;\n smooth: boolean;\n resolution: number;\n frames: number;\n scale: number | [x: number, y: number];\n color: THREE.ColorRepresentation;\n depthWrite: boolean;\n renderOrder: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-contact-shadows': NgtsContactShadowsState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-contact-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n <ngt-mesh\n [renderOrder]=\"shadowRenderOrder() ?? 0\"\n [geometry]=\"contactShadows().planeGeometry\"\n [scale]=\"[1, -1, 1]\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-mesh-basic-material\n [map]=\"contactShadows().renderTarget.texture\"\n [transparent]=\"true\"\n [opacity]=\"shadowOpacity() ?? 1\"\n [depthWrite]=\"shadowDepthWrite() ?? false\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n <ngt-orthographic-camera *args=\"cameraArgs()\" [ref]=\"shadowCameraRef\" />\n </ngt-group>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows extends NgtSignalStore<NgtsContactShadowsState> {\n @Input() contactShadowsRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set smooth(smooth: boolean) {\n this.set({ smooth });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set scale(scale: number | [x: number, y: number]) {\n this.set({ scale });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthWrite(depthWrite: boolean) {\n this.set({ depthWrite });\n }\n\n @Input() set renderOrder(renderOrder: number) {\n this.set({ renderOrder });\n }\n\n readonly Math = Math;\n readonly #store = inject(NgtStore);\n\n readonly shadowCameraRef = injectNgtRef<OrthographicCamera>();\n\n readonly #scale = this.select('scale');\n readonly #width = this.select('width');\n readonly #height = this.select('height');\n readonly #far = this.select('far');\n readonly #resolution = this.select('resolution');\n readonly #color = this.select('color');\n\n readonly #scaledWidth = computed(() => {\n const scale = this.#scale();\n return this.#width() * (Array.isArray(scale) ? scale[0] : scale || 1);\n });\n readonly #scaledHeight = computed(() => {\n const scale = this.#scale();\n return this.#height() * (Array.isArray(scale) ? scale[1] : scale || 1);\n });\n\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n readonly shadowRenderOrder = this.select('renderOrder');\n readonly shadowOpacity = this.select('opacity');\n readonly shadowDepthWrite = this.select('depthWrite');\n\n readonly cameraArgs = computed(() => {\n const width = this.#scaledWidth();\n const height = this.#scaledHeight();\n return [-width / 2, width / 2, height / 2, -height / 2, 0, this.#far()];\n });\n readonly contactShadows = computed(() => {\n const color = this.#color();\n const resolution = this.#resolution();\n const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n const planeGeometry = new THREE.PlaneGeometry(this.#scaledWidth(), this.#scaledHeight()).rotateX(Math.PI / 2);\n const blurPlane = new Mesh(planeGeometry);\n const depthMaterial = new THREE.MeshDepthMaterial();\n depthMaterial.depthTest = depthMaterial.depthWrite = false;\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ucolor: { value: new THREE.Color(color) },\n };\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 ucolor;\n void main() {\n `\n );\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n );\n };\n\n const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n return {\n renderTarget,\n planeGeometry,\n depthMaterial,\n blurPlane,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTargetBlur,\n };\n });\n\n constructor() {\n super({\n scale: 10,\n frames: Infinity,\n opacity: 1,\n width: 1,\n height: 1,\n blur: 1,\n far: 10,\n resolution: 512,\n smooth: true,\n color: '#000000',\n depthWrite: false,\n renderOrder: 0,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 0));\n }\n\n #onBeforeRender(count: number, { scene, gl }: NgtRenderState) {\n const { frames = Infinity, blur = 1, smooth = true } = this.get();\n const { depthMaterial, renderTarget } = this.contactShadows();\n const shadowCamera = this.shadowCameraRef.nativeElement;\n if (shadowCamera && (frames === Infinity || count < frames)) {\n const initialBackground = scene.background;\n scene.background = null;\n const initialOverrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = depthMaterial;\n gl.setRenderTarget(renderTarget);\n gl.render(scene, shadowCamera);\n scene.overrideMaterial = initialOverrideMaterial;\n\n this.#blurShadows(blur);\n if (smooth) this.#blurShadows(blur * 0.4);\n\n gl.setRenderTarget(null);\n scene.background = initialBackground;\n count++;\n }\n }\n\n #blurShadows(blur: number) {\n const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n this.contactShadows();\n const gl = this.#store.get('gl');\n const shadowCamera = this.shadowCameraRef.nativeElement;\n\n blurPlane.visible = true;\n\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n horizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTargetBlur);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n verticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTarget);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.visible = false;\n }\n}\n","export const ngtsEnvironmentPresetsObj = {\n sunset: 'venice/venice_sunset_1k.hdr',\n dawn: 'kiara/kiara_1_dawn_1k.hdr',\n night: 'dikhololo/dikhololo_night_1k.hdr',\n warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n forest: 'forrest-slope/forest_slope_1k.hdr',\n apartment: 'lebombo/lebombo_1k.hdr',\n studio: 'studio-small-3/studio_small_03_1k.hdr',\n city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n park: 'rooitou/rooitou_park_1k.hdr',\n lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ngtsEnvironmentPresetsObj;\n","import { Directive, ElementRef, Input, computed } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\nimport { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport { NgtsEnvironmentPresetsType } from './assets';\n\nexport interface NgtsEnvironmentInputState {\n frames?: number;\n near?: number;\n far?: number;\n resolution?: number;\n background?: boolean | 'only';\n blur?: number;\n map?: Texture;\n files?: string | string[];\n path?: string;\n preset?: NgtsEnvironmentPresetsType;\n scene?: Scene | ElementRef<Scene>;\n extensions?: (loader: Loader) => void;\n ground?: boolean | { radius?: number; height?: number; scale?: number };\n encoding?: TextureEncoding;\n}\n\n@Directive()\nexport abstract class NgtsEnvironmentInput extends NgtSignalStore<NgtsEnvironmentInputState> {\n @Input() set frames(frames: NgtsEnvironmentInputState['frames']) {\n this.set({ frames });\n }\n\n @Input() set near(near: NgtsEnvironmentInputState['near']) {\n this.set({ near });\n }\n\n @Input() set far(far: NgtsEnvironmentInputState['far']) {\n this.set({ far });\n }\n\n @Input() set resolution(resolution: NgtsEnvironmentInputState['resolution']) {\n this.set({ resolution });\n }\n\n @Input() set background(background: NgtsEnvironmentInputState['background']) {\n this.set({ background });\n }\n\n @Input() set blur(blur: NgtsEnvironmentInputState['blur']) {\n this.set({ blur });\n }\n\n @Input() set map(map: NgtsEnvironmentInputState['map']) {\n this.set({ map });\n }\n\n @Input() set files(files: NgtsEnvironmentInputState['files']) {\n this.set({ files });\n }\n\n @Input() set path(path: NgtsEnvironmentInputState['path']) {\n this.set({ path });\n }\n\n @Input() set preset(preset: NgtsEnvironmentInputState['preset']) {\n this.set({ preset });\n }\n\n @Input() set scene(scene: NgtsEnvironmentInputState['scene']) {\n this.set({ scene });\n }\n\n @Input() set extensions(extensions: NgtsEnvironmentInputState['extensions']) {\n this.set({ extensions });\n }\n\n @Input() set ground(ground: NgtsEnvironmentInputState['ground']) {\n this.set({ ground });\n }\n\n @Input() set encoding(encoding: NgtsEnvironmentInputState['encoding']) {\n this.set({ encoding });\n }\n\n readonly environmentFrames = this.select('frames');\n readonly environmentNear = this.select('near');\n readonly environmentFar = this.select('far');\n readonly environmentResolution = this.select('resolution');\n readonly environmentBackground = this.select('background');\n readonly environmentBlur = this.select('blur');\n readonly environmentMap = this.select('map');\n readonly environmentFiles = this.select('files');\n readonly environmentPath = this.select('path');\n readonly environmentPreset = this.select('preset');\n readonly environmentScene = this.select('scene');\n readonly environmentExtensions = this.select('extensions');\n readonly environmentGround = this.select('ground');\n readonly environmentEncoding = this.select('encoding');\n\n readonly environmentParams = computed(() => ({\n files: this.environmentFiles(),\n path: this.environmentPath(),\n preset: this.environmentPreset(),\n extensions: this.environmentExtensions(),\n encoding: this.environmentEncoding(),\n }));\n}\n","import {\n ChangeDetectorRef,\n DestroyRef,\n ElementRef,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';\nimport {\n CubeReflectionMapping,\n CubeTexture,\n CubeTextureLoader,\n EquirectangularReflectionMapping,\n LinearEncoding,\n sRGBEncoding,\n} from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { ngtsEnvironmentPresetsObj } from './assets';\nimport { type NgtsEnvironmentInput } from './environment-input';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n return is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n background: boolean | 'only',\n scene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n defaultScene: THREE.Scene,\n texture: THREE.Texture,\n blur = 0\n) {\n const target = resolveScene(scene || defaultScene);\n const oldbg = target.background;\n const oldenv = target.environment;\n const oldBlur = target.backgroundBlurriness || 0;\n\n if (background !== 'only') target.environment = texture;\n if (background) target.background = texture;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n return () => {\n if (background !== 'only') target.environment = oldenv;\n if (background) target.background = oldbg;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n };\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n Pick<NgtsEnvironmentInput, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\nexport function injectNgtsEnvironment(paramsFactory: () => Partial<NgtsInjectEnvironmentParams>, injector?: Injector) {\n injector = assertInjectionContext(injectNgtsEnvironment, injector);\n return runInInjectionContext(injector, () => {\n const cdr = inject(ChangeDetectorRef);\n const textureRef = injectNgtRef<THREE.Texture | CubeTexture>();\n\n inject(DestroyRef).onDestroy(() => {\n textureRef.untracked.dispose();\n });\n\n const params = computed(() => {\n let { files, preset, encoding, path, extensions } = paramsFactory() as NgtsInjectEnvironmentParams;\n\n if (files == null) {\n files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n }\n\n if (path == null) {\n path = '';\n }\n\n if (preset) {\n if (!(preset in ngtsEnvironmentPresetsObj))\n throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));\n files = ngtsEnvironmentPresetsObj[preset];\n path = CUBEMAP_ROOT;\n }\n\n return { files, preset, encoding, path, extensions } as NgtsInjectEnvironmentParams;\n });\n\n const loaderResult = injectNgtLoader(\n // @ts-expect-error\n () => {\n const { files } = params();\n return Array.isArray(files) ? CubeTextureLoader : RGBELoader;\n },\n () => {\n const { files } = params();\n return Array.isArray(files) ? [files] : files;\n },\n {\n extensions: (loader) => {\n const { path, extensions } = params();\n loader.setPath(path);\n if (extensions) extensions(loader);\n },\n }\n );\n\n effect(\n () => {\n const result = loaderResult();\n if (!result) return;\n const { files, encoding } = params();\n const texture: THREE.Texture | THREE.CubeTexture = Array.isArray(files) ? result[0] : result;\n texture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n texture.encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;\n\n textureRef.nativeElement = texture;\n safeDetectChanges(cdr);\n },\n { allowSignalWrites: true }\n );\n\n return textureRef;\n });\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-cube',\n standalone: true,\n})\nexport class NgtsEnvironmentCube {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n readonly textureRef = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.textureRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-map',\n standalone: true,\n})\nexport class NgtsEnvironmentMap {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n @Input() set map(map: THREE.Texture) {\n this.environmentInput.set({ map });\n }\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.environmentInput.environmentMap(),\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n selector: 'ngts-environment-ground',\n standalone: true,\n template: `\n <ngts-environment-map [map]=\"texture()\" [background]=\"!!environmentInput.environmentBackground()\" />\n <ngt-ground-projected-env *args=\"groundArgs()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n `,\n imports: [NgtsEnvironmentMap, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #defaultTexture = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n readonly texture = computed(() => {\n const defaultTexture = this.#defaultTexture.nativeElement;\n return this.environmentInput.environmentMap() || defaultTexture;\n });\n\n readonly groundArgs = computed(() => (this.texture() ? [this.texture()] : []));\n readonly height = computed(() => (this.environmentInput.environmentGround() as any)?.height);\n readonly radius = computed(() => (this.environmentInput.environmentGround() as any)?.radius);\n readonly scale = computed(() => (this.environmentInput.environmentGround() as any)?.scale ?? 1000);\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPortal,\n NgtPortalContent,\n NgtRenderState,\n NgtStore,\n prepare,\n requestAnimationInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n selector: 'ngts-environment-portal',\n standalone: true,\n template: `\n <ngt-portal [container]=\"virtualSceneRef\">\n <ng-template ngtPortalContent>\n <ng-content />\n <ngt-cube-camera *args=\"cameraArgs()\" [ref]=\"cubeCameraRef\" />\n <ng-container\n *ngIf=\"\n environmentInput.environmentFiles() || environmentInput.environmentPreset();\n else environmentMap\n \"\n >\n <ngts-environment-cube [background]=\"true\" />\n </ng-container>\n <ng-template #environmentMap>\n <ngts-environment-map\n *ngIf=\"environmentInput.environmentMap() as map\"\n [background]=\"true\"\n [map]=\"map\"\n />\n </ng-template>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n readonly virtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n readonly cubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n readonly #fbo = computed(() => {\n const fbo = new THREE.WebGLCubeRenderTarget(this.environmentInput.environmentResolution());\n fbo.texture.type = THREE.HalfFloatType;\n return fbo;\n });\n readonly cameraArgs = computed(() => [\n this.environmentInput.environmentNear()!,\n this.environmentInput.environmentFar()!,\n this.#fbo(),\n ]);\n\n constructor() {\n this.environmentInput.patch({\n near: 1,\n far: 1000,\n resolution: 256,\n frames: 1,\n background: false,\n preset: undefined,\n });\n requestAnimationInInjectionContext(() => {\n this.#setEnvProps();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 1));\n }\n\n #setEnvProps() {\n const gl = this.#store.select('gl');\n const scene = this.#store.select('scene');\n\n const trigger = computed(() => ({\n gl: gl(),\n defaultScene: scene(),\n fbo: this.#fbo(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n frames: this.environmentInput.environmentFrames(),\n blur: this.environmentInput.environmentBlur(),\n virtualScene: this.virtualSceneRef.nativeElement,\n cubeCamera: this.cubeCameraRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { virtualScene, blur, frames, background, scene, fbo, defaultScene, gl, cubeCamera } = trigger();\n if (!cubeCamera || !virtualScene) return;\n if (frames === 1) cubeCamera.update(gl, virtualScene);\n onCleanup(setEnvProps(background!, scene, defaultScene, fbo.texture, blur));\n });\n }\n\n #onBeforeRender(count: number, { gl }: NgtRenderState) {\n const { frames } = this.environmentInput.get();\n if (frames === Infinity || count < frames!) {\n const camera = this.cubeCameraRef.nativeElement;\n const virtualScene = this.virtualSceneRef.nativeElement;\n if (camera && virtualScene) {\n camera.update(gl, virtualScene);\n count++;\n }\n }\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, Directive, TemplateRef } from '@angular/core';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Directive({ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true })\nexport class NgtsEnvironmentContent {}\n\n@Component({\n selector: 'ngts-environment',\n standalone: true,\n template: `\n <ngts-environment-ground *ngIf=\"environmentGround(); else noGround\" />\n <ng-template #noGround>\n <ngts-environment-map\n *ngIf=\"environmentMap() as map; else noMap\"\n [map]=\"map\"\n [background]=\"!!environmentBackground()\"\n />\n <ng-template #noMap>\n <ngts-environment-portal *ngIf=\"content; else noPortal\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </ngts-environment-portal>\n <ng-template #noPortal>\n <ngts-environment-cube [background]=\"!!environmentBackground()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n `,\n imports: [\n NgtsEnvironmentMap,\n NgtsEnvironmentGround,\n NgtsEnvironmentCube,\n NgtsEnvironmentPortal,\n NgIf,\n NgTemplateOutlet,\n ],\n providers: [{ provide: NgtsEnvironmentInput, useExisting: NgtsEnvironment }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInput {\n @ContentChild(NgtsEnvironmentContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtRenderState, NgtSignalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsFloatState = {\n enabled: boolean;\n speed: number;\n floatIntensity: number;\n rotationIntensity: number;\n floatingRange: [number?, number?];\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-float': NgtsFloatState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-float',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"floatRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat extends NgtSignalStore<NgtsFloatState> {\n readonly #offset = Math.random() * 10000;\n\n @Input() floatRef = injectNgtRef<THREE.Group>();\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set rotationIntensity(rotationIntensity: number) {\n this.set({ rotationIntensity });\n }\n\n @Input() set floatIntensity(floatIntensity: number) {\n this.set({ floatIntensity });\n }\n\n @Input() set floatingRange(floatingRange: [number?, number?]) {\n this.set({ floatingRange });\n }\n\n constructor() {\n super({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1], enabled: true });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n const float = this.floatRef.untracked;\n if (!float) return;\n const { enabled, speed, floatingRange, floatIntensity, rotationIntensity } = this.get();\n if (!enabled || speed === 0) return;\n\n const t = this.#offset + clock.getElapsedTime();\n float.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n let yPosition = Math.sin((t / 4) * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n float.position.y = yPosition * floatIntensity;\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nfunction calcPosFromAngles(inclination: number, azimuth: number, vector = new THREE.Vector3()) {\n const theta = Math.PI * (inclination - 0.5);\n const phi = 2 * Math.PI * (azimuth - 0.5);\n\n vector.x = Math.cos(phi);\n vector.y = Math.sin(theta);\n vector.z = Math.sin(phi);\n\n return vector;\n}\n\nexport interface NgtsSkyState {\n distance: number;\n sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>;\n inclination: number;\n azimuth: number;\n mieCoefficient: number;\n mieDirectionalG: number;\n rayleigh: number;\n turbidity: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-sky': NgtsSkyState & Sky;\n }\n}\n\n@Component({\n selector: 'ngts-sky',\n standalone: true,\n template: `\n <ngt-primitive ngtCompound *args=\"[sky]\" [ref]=\"skyRef\" [scale]=\"scale()\">\n <ngt-value [rawValue]=\"skyMieCoefficient()\" attach=\"material.uniforms.mieCoefficient.value\" />\n <ngt-value [rawValue]=\"skyMieDirectionalG()\" attach=\"material.uniforms.mieDirectionalG.value\" />\n <ngt-value [rawValue]=\"skyRayleigh()\" attach=\"material.uniforms.rayleigh.value\" />\n <ngt-value [rawValue]=\"calculatedSunPosition()\" attach=\"material.uniforms.sunPosition.value\" />\n <ngt-value [rawValue]=\"skyTurbidity()\" attach=\"material.uniforms.turbidity.value\" />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky extends NgtSignalStore<NgtsSkyState> {\n @Input() skyRef = injectNgtRef<Sky>();\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ sunPosition });\n }\n\n @Input() set inclination(inclination: number) {\n this.set({ inclination });\n }\n\n @Input() set azimuth(azimuth: number) {\n this.set({ azimuth });\n }\n\n @Input() set mieCoefficient(mieCoefficient: number) {\n this.set({ mieCoefficient });\n }\n\n @Input() set mieDirectionalG(mieDirectionalG: number) {\n this.set({ mieDirectionalG });\n }\n\n @Input() set rayleigh(rayleigh: number) {\n this.set({ rayleigh });\n }\n\n @Input() set turbidity(turbidity: number) {\n this.set({ turbidity });\n }\n\n readonly #inclination = this.select('inclination');\n readonly #azimuth = this.select('azimuth');\n readonly #sunPosition = this.select('sunPosition');\n readonly #distance = this.select('distance');\n\n readonly sky = new Sky();\n\n readonly skyMieCoefficient = this.select('mieCoefficient');\n readonly skyMieDirectionalG = this.select('mieDirectionalG');\n readonly skyRayleigh = this.select('rayleigh');\n readonly skyTurbidity = this.select('turbidity');\n\n readonly calculatedSunPosition = computed(\n () => this.#sunPosition() || calcPosFromAngles(this.#inclination(), this.#azimuth())\n );\n readonly scale = computed(() => new THREE.Vector3().setScalar(this.#distance()));\n\n constructor() {\n super({\n inclination: 0.6,\n azimuth: 0.1,\n distance: 1000,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.8,\n rayleigh: 0.5,\n turbidity: 10,\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, isSignal, Signal } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtRenderState,\n} from 'angular-three';\nimport { SparklesMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;\nconst normalizeVector = (v: any): number[] => {\n if (Array.isArray(v)) return v;\n else if (isVector(v)) return v.toArray();\n return [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T = any>(count: number, prop?: T | Float32Array, setDefault?: (v: T) => number) {\n if (prop !== undefined) {\n if (isFloat32Array(prop)) {\n return prop as Float32Array;\n } else {\n if (prop instanceof Color) {\n const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n return Float32Array.from(a);\n } else if (isVector(prop) || Array.isArray(prop)) {\n const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n return Float32Array.from(a);\n }\n return Float32Array.from({ length: count }, () => prop as unknown as number);\n }\n }\n return Float32Array.from({ length: count }, setDefault!);\n}\n\nexport interface NgtsSparklesState {\n /** Number of particles (default: 100) */\n count: number;\n /** Speed of particles (default: 1) */\n speed: number | Float32Array;\n /** Opacity of particles (default: 1) */\n opacity: number | Float32Array;\n /** Color of particles (default: 100) */\n color?: THREE.ColorRepresentation | Float32Array;\n /** Size of particles (default: randomized between 0 and 1) */\n size?: number | Float32Array;\n /** The space the particles occupy (default: 1) */\n scale: number | [number, number, number] | THREE.Vector3;\n /** Movement factor (default: 1) */\n noise: number | [number, number, number] | THREE.Vector3 | Float32Array;\n}\n\n@Component({\n selector: 'ngts-sparkles',\n standalone: true,\n template: `\n <ngt-points ngtCompount [ref]=\"pointsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute *args=\"[positions(), 3]\" attach=\"attributes.position\" />\n <ngt-buffer-attribute *args=\"[sizes(), 1]\" attach=\"attributes.size\" />\n <ngt-buffer-attribute *args=\"[opacities(), 1]\" attach=\"attributes.opacity\" />\n <ngt-buffer-attribute *args=\"[speeds(), 1]\" attach=\"attributes.speed\" />\n <ngt-buffer-attribute *args=\"[colors(), 3]\" attach=\"attributes.color\" />\n <ngt-buffer-attribute *args=\"[noises(), 3]\" attach=\"attributes.noise\" />\n </ngt-buffer-geometry>\n <ngt-sparkles-material [ref]=\"materialRef\" [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr()\" />\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles extends NgtSignalStore<NgtsSparklesState> {\n @Input() pointsRef = injectNgtRef<Points>();\n\n /** Number of particles (default: 100) */\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n /** Speed of particles (default: 1) */\n @Input() set speed(speed: number | Float32Array) {\n this.set({ speed });\n }\n\n /** Opacity of particles (default: 1) */\n @Input() set opacity(opacity: number | Float32Array) {\n this.set({ opacity });\n }\n\n /** Color of particles (default: 100) */\n @Input() set color(color: THREE.ColorRepresentation | Float32Array) {\n this.set({ color });\n }\n\n /** Size of particles (default: randomized between 0 and 1) */\n @Input() set size(size: number | Float32Array) {\n this.set({ size });\n }\n\n /** The space the particles occupy (default: 1) */\n @Input() set scale(scale: number | [number, number, number] | THREE.Vector3) {\n this.set({ scale });\n }\n\n /** Movement factor (default: 1) */\n @Input() set noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n this.set({ noise });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #count = this.select('count');\n readonly #scale = this.select('scale');\n readonly #color = this.select('color');\n\n readonly materialRef = injectNgtRef<InstanceType<typeof SparklesMaterial>>();\n\n readonly dpr = this.#store.select('viewport', 'dpr');\n readonly positions = computed(() =>\n Float32Array.from(\n Array.from({ length: this.#count() }, () =>\n normalizeVector(this.#scale()).map(MathUtils.randFloatSpread)\n ).flat()\n )\n );\n\n readonly sizes = this.#getComputed('size', this.#count, Math.random);\n readonly opacities = this.#getComputed('opacity', this.#count);\n readonly speeds = this.#getComputed('speed', this.#count);\n readonly noises = this.#getComputed('noise', () => this.#count() * 3);\n readonly colors = this.#getComputed(\n computed(() => {\n const color = this.#color();\n return !isFloat32Array(color) ? new THREE.Color(color) : color;\n }),\n () => (this.#color() === undefined ? this.#count() * 3 : this.#count()),\n () => 1\n );\n\n #getComputed<TKey extends keyof NgtsSparklesState>(\n nameOrComputed: TKey | Signal<NgtsSparklesState[TKey]>,\n count: () => number,\n setDefault?: (value: NgtsSparklesState[TKey]) => number\n ) {\n const value =\n typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)\n ? nameOrComputed\n : this.select(nameOrComputed);\n return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));\n }\n\n constructor() {\n super({\n noise: 1,\n count: 100,\n speed: 1,\n opacity: 1,\n scale: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightInputState {\n depthBuffer?: THREE.DepthTexture;\n angle: number;\n distance: number;\n attenuation: number;\n anglePower: number;\n radiusTop: number;\n radiusBottom: number;\n opacity: number;\n color: string | number;\n debug: boolean;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightInput extends NgtSignalStore<NgtsSpotLightInputState> {\n @Input() set depthBuffer(depthBuffer: THREE.DepthTexture) {\n this.set({ depthBuffer });\n }\n\n @Input() set angle(angle: number) {\n this.set({ angle });\n }\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set attenuation(attenuation: number) {\n this.set({ attenuation });\n }\n\n @Input() set anglePower(anglePower: number) {\n this.set({ anglePower });\n }\n\n @Input() set radiusTop(radiusTop: number) {\n this.set({ radiusTop });\n }\n\n @Input() set radiusBottom(radiusBottom: number) {\n this.set({ radiusBottom });\n }\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set color(color: string | number) {\n this.set({ color });\n }\n\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n\n readonly lightDebug = this.select('debug');\n readonly lightColor = this.select('color');\n readonly lightOpacity = this.select('opacity');\n readonly lightRadiusBottom = this.select('radiusBottom');\n readonly lightRadiusTop = this.select('radiusTop');\n readonly lightAnglePower = this.select('anglePower');\n readonly lightAttenuation = this.select('attenuation');\n readonly lightDistance = this.select('distance');\n readonly lightAngle = this.select('angle');\n readonly lightDepthBuffer = this.select('depthBuffer');\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore } from 'angular-three';\nimport { SpotLightMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\n\nextend({ Mesh });\n\n@Component({\n selector: 'ngts-volumetric-mesh',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"mesh\" [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n <ngt-primitive *args=\"[material]\" attach=\"material\">\n <ngt-value [rawValue]=\"spotLightInput.lightOpacity()\" attach=\"uniforms.opacity.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightColor()\" attach=\"uniforms.lightColor.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAttenuation()\" attach=\"uniforms.attenuation.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAnglePower()\" attach=\"uniforms.anglePower.value\" />\n <ngt-value [rawvalue]=\"spotLightInput.lightDepthBuffer()\" attach=\"uniforms.depth.value\" />\n <ngt-value [rawvalue]=\"near()\" attach=\"uniforms.cameraNear.value\" />\n <ngt-value [rawvalue]=\"far()\" attach=\"uniforms.cameraFar.value\" />\n <ngt-value [rawvalue]=\"resolution()\" attach=\"uniforms.resolution.value\" />\n </ngt-primitive>\n </ngt-mesh>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsVolumetricMesh {\n protected readonly spotLightInput = inject(NgtsSpotLightInput);\n readonly mesh = injectNgtRef<THREE.Mesh>();\n readonly material = new SpotLightMaterial();\n readonly nullRaycast = () => null;\n\n readonly #vec = new THREE.Vector3();\n readonly #store = inject(NgtStore);\n readonly #camera = this.#store.select('camera');\n readonly #size = this.#store.select('size');\n readonly #dpr = this.#store.select('viewport', 'dpr');\n\n readonly #normalizedRadiusTop = computed(() =>\n this.spotLightInput.lightRadiusTop() === undefined ? 0.1 : this.spotLightInput.lightRadiusTop()\n );\n readonly #normalizedRadiusBottom = computed(() =>\n this.spotLightInput.lightRadiusBottom() === undefined\n ? this.spotLightInput.lightAngle() * 7\n : this.spotLightInput.lightRadiusBottom()\n );\n readonly geometry = computed(() => {\n const distance = this.spotLightInput.lightDistance();\n const radiusTop = this.#normalizedRadiusTop();\n const radiusBottom = this.#normalizedRadiusBottom();\n\n const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n return geometry;\n });\n readonly near = computed(() => this.#camera().near);\n readonly far = computed(() => this.#camera().far);\n readonly resolution = computed(() =>\n this.spotLightInput.lightDepthBuffer()\n ? [this.#size().width * this.#dpr(), this.#size().height * this.#dpr()]\n : [0, 0]\n );\n\n constructor() {\n this.spotLightInput.patch({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n });\n injectBeforeRender(() => {\n const mesh = this.mesh.nativeElement;\n if (!mesh) return;\n this.material.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(this.#vec));\n mesh.lookAt((mesh.parent as THREE.SpotLight).target.getWorldPosition(this.#vec));\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input } from '@angular/core';\nimport { NgtArgs, NgtInjectedRef, extend, injectNgtRef } from 'angular-three';\nimport { Group, SpotLight, SpotLightHelper } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\nimport { NgtsVolumetricMesh } from './volumetric-mesh';\n\nextend({ SpotLight, SpotLightHelper, Group });\n\ndeclare module './spot-light-input' {\n interface NgtsSpotLightInputState {\n volumetric: boolean;\n }\n}\n\nexport type NgtsSpotLightApi = {\n spotLight: NgtInjectedRef<THREE.SpotLight>;\n debug: () => boolean;\n};\n\nexport const NGTS_SPOT_LIGHT_API = new InjectionToken<NgtsSpotLightApi>('NgtsSpotLight API');\n\nfunction spotLightApiFactory(spotLight: NgtsSpotLight): NgtsSpotLightApi {\n return {\n spotLight: spotLight.spotLightRef,\n debug: spotLight.lightDebug,\n };\n}\n\n@Component({\n selector: 'ngts-spot-light',\n standalone: true,\n template: `\n <ngt-group>\n <ng-container *ngIf=\"lightDebug() && spotLightRef.nativeElement\">\n <ngt-spot-light-helper *args=\"[spotLightRef.nativeElement]\" />\n </ng-container>\n <ngt-spot-light\n [ref]=\"spotLightRef\"\n [color]=\"lightColor()\"\n [distance]=\"lightDistance()\"\n [angle]=\"lightAngle()\"\n [castShadow]=\"true\"\n ngtCompound\n >\n <ngts-volumetric-mesh *ngIf=\"showVolumetric()\" />\n </ngt-spot-light>\n <ng-content />\n </ngt-group>\n `,\n providers: [\n { provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] },\n { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight },\n ],\n imports: [NgIf, NgtArgs, NgtsVolumetricMesh],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLight extends NgtsSpotLightInput {\n @Input() spotLightRef = injectNgtRef<THREE.SpotLight>();\n\n @Input() set volumetric(volumetric: boolean) {\n this.set({ volumetric });\n }\n\n readonly showVolumetric = this.select('volumetric');\n\n constructor() {\n super();\n this.set({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n volumetric: true,\n debug: false,\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightShadowMeshInputState {\n distance: number;\n alphaTest: number;\n scale: number;\n map: THREE.Texture;\n shader: string;\n width: number;\n height: number;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightShadowMeshInput extends NgtSignalStore<NgtsSpotLightShadowMeshInputState> {\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n @Input() set map(map: THREE.Texture) {\n this.set({ map });\n }\n\n @Input() set shader(shader: string) {\n this.set({ shader });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n readonly shadowMeshDistance = this.select('distance');\n readonly shadowMeshAlphaTest = this.select('alphaTest');\n readonly shadowMeshScale = this.select('scale');\n readonly shadowMeshMap = this.select('map');\n readonly shadowMeshShader = this.select('shader');\n readonly shadowMeshWidth = this.select('width');\n readonly shadowMeshHeight = this.select('height');\n}\n","import { NgIf } from '@angular/common';\nimport {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport {\n NgtInjectedRef,\n assertInjectionContext,\n checkUpdate,\n extend,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { NGTS_SPOT_LIGHT_API } from './spot-light';\nimport { NgtsSpotLightShadowMeshInput } from './spot-light-shadow-mesh-input';\n\nconst isSpotLight = (child: THREE.Object3D | null): child is THREE.SpotLight => {\n return (child as THREE.SpotLight)?.isSpotLight;\n};\n\nfunction injectShadowMeshCommon(\n spotLightRef: NgtInjectedRef<THREE.SpotLight>,\n meshRef: NgtInjectedRef<THREE.Mesh>,\n width: () => number,\n height: () => number,\n distance: () => number,\n injector?: Injector\n) {\n injector = assertInjectionContext(injectShadowMeshCommon, injector);\n runInInjectionContext(injector, () => {\n const pos = new THREE.Vector3();\n const dir = new THREE.Vector3();\n\n requestAnimationInInjectionContext(() => {\n effect(() => {\n const spotLight = spotLightRef.nativeElement;\n if (!spotLight) return;\n if (isSpotLight(spotLight)) {\n spotLight.shadow.mapSize.set(width(), height());\n spotLight.shadow.map.setSize(width(), height());\n spotLight.shadow.needsUpdate = true;\n } else {\n throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');\n }\n });\n });\n\n injectBeforeRender(() => {\n const spotLight = spotLightRef.nativeElement;\n const mesh = meshRef.nativeElement;\n\n if (!spotLight) return;\n\n const A = spotLight.position;\n const B = spotLight.target.position;\n\n dir.copy(B).sub(A);\n const len = dir.length();\n dir.normalize().multiplyScalar(len * distance());\n pos.copy(A).add(dir);\n\n if (mesh) {\n mesh.position.copy(pos);\n mesh.lookAt(spotLight.target.position);\n }\n });\n });\n}\n\nextend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-no-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"shadowMeshInput.shadowMeshMap()\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshNoShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly DoubleSide = THREE.DoubleSide;\n\n readonly debug = this.#spotLightApi.debug;\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });\n\n requestAnimationInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n map.wrapS = map.wrapT = THREE.RepeatWrapping;\n checkUpdate(map);\n }\n });\n });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"renderTarget().texture\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapS\" />\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapT\" />\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly DoubleSide = THREE.DoubleSide;\n readonly RepeatWrapping = THREE.RepeatWrapping;\n\n readonly debug = this.#spotLightApi.debug;\n readonly renderTarget = computed(() => {\n const width = this.shadowMeshInput.shadowMeshWidth();\n const height = this.shadowMeshInput.shadowMeshHeight();\n\n return new THREE.WebGLRenderTarget(width, height, {\n format: THREE.RGBAFormat,\n encoding: THREE.LinearEncoding,\n stencilBuffer: false,\n // depthTexture: null!\n });\n });\n readonly uniforms = {\n uShadowMap: { value: this.shadowMeshInput.shadowMeshMap() },\n uTime: { value: 0 },\n };\n\n readonly #fsQuad = computed(() => {\n const shader = this.shadowMeshInput.shadowMeshShader();\n if (!shader) return null;\n return new FullScreenQuad(\n new THREE.ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: shader,\n })\n );\n });\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 4 });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n\n injectBeforeRender(({ delta, gl }) => {\n this.uniforms.uTime.value += delta;\n const fsQuad = this.#fsQuad();\n const renderTarget = this.renderTarget();\n if (fsQuad && renderTarget) {\n gl.setRenderTarget(renderTarget);\n fsQuad.render(gl);\n gl.setRenderTarget(null);\n }\n });\n\n requestAnimationInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n this.uniforms.uShadowMap.value = map;\n }\n });\n\n effect((onCleanup) => {\n const fsQuad = this.#fsQuad();\n onCleanup(() => {\n if (fsQuad) {\n fsQuad.dispose();\n fsQuad.material.dispose();\n }\n });\n });\n\n effect((onCleanup) => {\n const renderTarget = this.renderTarget();\n onCleanup(() => {\n renderTarget.dispose();\n });\n });\n });\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow',\n standalone: true,\n template: `\n <ngts-spot-light-shadow-mesh-shader *ngIf=\"shadowMeshShader(); else noShader\" />\n <ng-template #noShader>\n <ngts-spot-light-shadow-mesh-no-shader />\n </ng-template>\n `,\n imports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],\n providers: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],\n})\nexport class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { createSignal, extend, NgtArgs, NgtSignalStore, safeDetectChanges } from 'angular-three';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';\nimport { NGTS_BOUNDS_API, NgtsBounds } from '../bounds/bounds';\nimport { NgtsCenter } from '../center/center';\nimport { NgtsContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { NgtsEnvironmentInput } from '../environment/environment-input';\n\nconst presets = {\n rembrandt: {\n main: [1, 2, 1],\n fill: [-2, -0.5, -2],\n },\n portrait: {\n main: [-1, 2, 0.5],\n fill: [-1, 0.5, -1.5],\n },\n upfront: {\n main: [0, 2, 1],\n fill: [-1, 0.5, -1.5],\n },\n soft: {\n main: [-2, 4, 4],\n fill: [-1, 0.5, -1.5],\n },\n};\n\ntype NgtsStageShadows = Partial<NgtsAccumulativeShadows> &\n Partial<NgtsRandomizedLights> &\n Partial<NgtsContactShadows> & {\n type: 'contact' | 'accumulative';\n /** Shadow plane offset, default: 0 */\n offset?: number;\n /** Shadow bias, default: -0.0001 */\n bias?: number;\n /** Shadow normal bias, default: 0 */\n normalBias?: number;\n /** Shadow map size, default: 1024 */\n size?: number;\n };\n\ninterface NgtsStageProps {\n /** Lighting setup, default: \"rembrandt\" */\n preset:\n | 'rembrandt'\n | 'portrait'\n | 'upfront'\n | 'soft'\n | { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n /** Controls the ground shadows, default: \"contact\" */\n shadows: boolean | 'contact' | 'accumulative' | NgtsStageShadows;\n /** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n adjustCamera: boolean | number;\n /** The default environment, default: \"city\" */\n environment: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInput>;\n /** The lighting intensity, default: 0.5 */\n intensity: number;\n /** To adjust centering, default: undefined */\n center?: Partial<NgtsCenter>;\n}\n\n@Directive({ selector: 'ngts-stage-refit', standalone: true })\nexport class NgtsStageRefit implements OnChanges {\n readonly #boundsApi = inject(NGTS_BOUNDS_API);\n\n @Input() radius = 0;\n @Input() adjustCamera = true;\n\n ngOnChanges() {\n if (this.adjustCamera) {\n this.#boundsApi().refresh().clip().fit();\n }\n }\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Component({\n selector: 'ngts-stage',\n standalone: true,\n template: `\n <ngt-ambient-light [intensity]=\"stageIntensity() / 3\" />\n <ngt-spot-light\n [penumbra]=\"1\"\n [position]=\"spotLightPosition()\"\n [intensity]=\"stageIntensity() * 2\"\n [castShadow]=\"!!stageShadows()\"\n >\n <ngt-value [rawValue]=\"shadowsInfo().shadowBias\" attach=\"shadow.bias\" />\n <ngt-value [rawValue]=\"shadowsInfo().normalBias\" attach=\"shadow.normalBias\" />\n <ngt-vector2 *args=\"[shadowsInfo().shadowSize, shadowsInfo().shadowSize]\" attach=\"shadow.mapSize\" />\n </ngt-spot-light>\n <ngt-point-light [position]=\"pointLightPosition()\" [intensity]=\"stageIntensity()\" />\n\n <ngts-bounds\n [fit]=\"!!stageAdjustCamera()\"\n [clip]=\"!!stageAdjustCamera()\"\n [margin]=\"Number(stageAdjustCamera())\"\n [observe]=\"true\"\n >\n <ngts-stage-refit [radius]=\"boundingState().radius\" [adjustCamera]=\"!!stageAdjustCamera()\" />\n <ngts-center\n [position]=\"[0, shadowsInfo().shadowOffset / 2, 0]\"\n [top]=\"!!stageCenter()?.top\"\n [right]=\"!!stageCenter()?.right\"\n [bottom]=\"!!stageCenter()?.bottom\"\n [left]=\"!!stageCenter()?.left\"\n [front]=\"!!stageCenter()?.front\"\n [back]=\"!!stageCenter()?.back\"\n [disableX]=\"!!stageCenter()?.disableX\"\n [disableY]=\"!!stageCenter()?.disableY\"\n [disableZ]=\"!!stageCenter()?.disableZ\"\n [precise]=\"!!stageCenter()?.precise\"\n (centered)=\"onCentered($event)\"\n >\n <ng-content />\n </ngts-center>\n </ngts-bounds>\n <ngt-group [position]=\"[0, -boundingState().height / 2 - shadowsInfo().shadowOffset / 2, 0]\">\n <ngts-contact-shadows\n *ngIf=\"shadowsInfo().contactShadow\"\n [scale]=\"boundingState().radius * 4\"\n [far]=\"boundingState().radius\"\n [blur]=\"2\"\n [opacity]=\"shadowsInfo().opacity\"\n [width]=\"shadowsInfo().width\"\n [height]=\"shadowsInfo().height\"\n [smooth]=\"shadowsInfo().smooth\"\n [resolution]=\"shadowsInfo().resolution\"\n [frames]=\"shadowsInfo().frames\"\n [scale]=\"shadowsInfo().scale\"\n [color]=\"shadowsInfo().color\"\n [depthWrite]=\"shadowsInfo().depthWrite\"\n [renderOrder]=\"shadowsInfo().renderOrder\"\n />\n <ngts-accumulative-shadows\n *ngIf=\"shadowsInfo().accumulativeShadow\"\n [temporal]=\"true\"\n [frames]=\"100\"\n [alphaTest]=\"0.9\"\n [toneMapped]=\"true\"\n [scale]=\"boundingState().radius * 4\"\n [opacity]=\"shadowsInfo().opacity\"\n [alphaTest]=\"shadowsInfo().alphaTest\"\n [color]=\"shadowsInfo().color\"\n [colorBlend]=\"shadowsInfo().colorBlend\"\n [resolution]=\"shadowsInfo().resolution\"\n >\n <ngts-randomized-lights\n [amount]=\"shadowsInfo().amount ?? 8\"\n [radius]=\"shadowsInfo().radius ?? boundingState().radius\"\n [ambient]=\"shadowsInfo().ambient ?? 0.5\"\n [intensity]=\"shadowsInfo().intensity ?? 1\"\n [position]=\"spotLightPosition()\"\n [size]=\"boundingState().radius * 4\"\n [bias]=\"-shadowsInfo().shadowBias\"\n [mapSize]=\"shadowsInfo().shadowSize\"\n />\n </ngts-accumulative-shadows>\n </ngt-group>\n <ngts-environment\n *ngIf=\"environmentInfo() as environmentInfo\"\n [frames]=\"environmentInfo.frames\"\n [near]=\"environmentInfo.near\"\n [far]=\"environmentInfo.far\"\n [resolution]=\"environmentInfo.resolution\"\n [background]=\"environmentInfo.background\"\n [blur]=\"environmentInfo.blur\"\n [map]=\"environmentInfo.map\"\n [files]=\"environmentInfo.files\"\n [path]=\"environmentInfo.path\"\n [preset]=\"environmentInfo.preset\"\n [scene]=\"environmentInfo.scene\"\n [extensions]=\"environmentInfo.extensions\"\n [ground]=\"environmentInfo.ground\"\n [encoding]=\"environmentInfo.encoding\"\n />\n `,\n imports: [\n NgtArgs,\n NgtsBounds,\n NgtsStageRefit,\n NgtsCenter,\n NgIf,\n NgtsContactShadows,\n NgtsAccumulativeShadows,\n NgtsRandomizedLights,\n NgtsEnvironment,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage extends NgtSignalStore<NgtsStageProps> {\n readonly #cdr = inject(ChangeDetectorRef);\n readonly Number = Number;\n\n @Input() set preset(preset: NgtsStageProps['preset']) {\n this.set({ preset });\n }\n\n @Input() set shadows(shadows: NgtsStageProps['shadows']) {\n this.set({ shadows });\n }\n\n @Input() set adjustCamera(adjustCamera: NgtsStageProps['adjustCamera']) {\n this.set({ adjustCamera });\n }\n\n @Input() set environment(environment: NgtsStageProps['environment']) {\n this.set({ environment });\n }\n\n @Input() set intensity(intensity: NgtsStageProps['intensity']) {\n this.set({ intensity });\n }\n\n @Input() set center(center: NgtsStageProps['center']) {\n this.set({ center });\n }\n\n @Output() centered = new EventEmitter() as NgtsCenter['centered'];\n\n readonly boundingState = createSignal({ radius: 0, width: 0, height: 0, depth: 0 });\n\n readonly #preset = this.select('preset');\n readonly #environment = this.select('environment');\n\n readonly stageShadows = this.select('shadows');\n readonly stageIntensity = this.select('intensity');\n readonly stageAdjustCamera = this.select('adjustCamera');\n readonly stageCenter = this.select('center');\n\n readonly config = computed(() => {\n const preset = this.#preset();\n return typeof preset === 'string' ? presets[preset] : preset;\n });\n\n readonly shadowsInfo = computed<any>(() => {\n const shadows = this.stageShadows();\n const restProps = typeof shadows === 'string' ? {} : (shadows as NgtsStageShadows) || {};\n return {\n contactShadow: shadows === 'contact' || (shadows as NgtsStageShadows)?.type === 'contact',\n accumulativeShadow: shadows === 'accumulative' || (shadows as NgtsStageShadows)?.type === 'accumulative',\n shadowBias: (shadows as NgtsStageShadows)?.bias ?? -0.0001,\n normalBias: (shadows as NgtsStageShadows)?.normalBias ?? 0,\n shadowSize: (shadows as NgtsStageShadows)?.size ?? 1024,\n shadowOffset: (shadows as NgtsStageShadows)?.offset ?? 0,\n ...restProps,\n };\n });\n\n readonly spotLightPosition = computed<[number, number, number]>(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.main[0] * radius, config.main[1] * radius, config.main[2] * radius];\n });\n\n readonly pointLightPosition = computed(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.fill[0] * radius, config.fill[1] * radius, config.fill[2] * radius];\n });\n\n readonly environmentInfo = computed(() => {\n const environment = this.#environment();\n if (!environment) return null;\n if (typeof environment === 'string') return { preset: environment };\n return environment;\n });\n\n constructor() {\n super({\n adjustCamera: true,\n intensity: 0.5,\n shadows: 'contact',\n environment: 'city',\n preset: 'rembrandt',\n });\n }\n\n onCentered(props: {\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }) {\n const { boundingSphere, width, height, depth } = props;\n this.boundingState.set({ radius: boundingSphere.radius, width, height, depth });\n safeDetectChanges(this.#cdr);\n if (this.centered.observed) this.centered.emit(props);\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, type NgtRenderState } from 'angular-three';\nimport { StarFieldMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nconst genStar = (r: number) => {\n return new THREE.Vector3().setFromSpherical(\n new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n );\n};\n\nexport interface NgtsStarsState {\n radius: number;\n depth: number;\n count: number;\n factor: number;\n saturation: number;\n fade: boolean;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-stars',\n standalone: true,\n template: `\n <ngt-points [ref]=\"starsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute attach=\"attributes.position\" *args=\"[bufferAttributes().positions, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.color\" *args=\"[bufferAttributes().colors, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.size\" *args=\"[bufferAttributes().sizes, 1]\" />\n </ngt-buffer-geometry>\n <ngt-primitive\n *args=\"[material]\"\n attach=\"material\"\n [blending]=\"AdditiveBlending\"\n [depthWrite]=\"false\"\n [transparent]=\"true\"\n [vertexColors]=\"true\"\n >\n <ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"fade()\" />\n </ngt-primitive>\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars extends NgtSignalStore<NgtsStarsState> {\n readonly AdditiveBlending = THREE.AdditiveBlending;\n readonly material = new StarFieldMaterial();\n\n @Input() starsRef = injectNgtRef<Points>();\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set saturation(saturation: number) {\n this.set({ saturation });\n }\n\n @Input('fade') set starsFade(fade: boolean) {\n this.set({ fade });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly #count = this.select('count');\n readonly #depth = this.select('depth');\n readonly #factor = this.select('factor');\n readonly #radius = this.select('radius');\n readonly #saturation = this.select('saturation');\n\n readonly fade = this.select('fade');\n readonly bufferAttributes = computed(() => {\n const positions: number[] = [];\n const colors: number[] = [];\n const sizes = Array.from({ length: this.#count() }, () => (0.5 + 0.5 * Math.random()) * this.#factor());\n const color = new THREE.Color();\n let r = this.#radius() + this.#depth();\n const increment = this.#depth() / this.#count();\n for (let i = 0; i < this.#count(); i++) {\n r -= increment * Math.random();\n positions.push(...genStar(r).toArray());\n color.setHSL(i / this.#count(), this.#saturation(), 0.9);\n colors.push(color.r, color.g, color.b);\n }\n return {\n positions: new Float32Array(positions),\n colors: new Float32Array(colors),\n sizes: new Float32Array(sizes),\n };\n });\n\n constructor() {\n super({\n radius: 100,\n depth: 50,\n count: 5000,\n saturation: 0,\n factor: 4,\n fade: false,\n speed: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/accumulative-shadows/progressive-light-map.ts","../../../../libs/soba/staging/src/accumulative-shadows/accumulative-shadows.ts","../../../../libs/soba/staging/src/accumulative-shadows/randomized-lights.ts","../../../../libs/soba/staging/src/backdrop/backdrop.ts","../../../../libs/soba/staging/src/bb-anchor/bb-anchor.ts","../../../../libs/soba/staging/src/bounds/bounds.ts","../../../../libs/soba/staging/src/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/center/center.ts","../../../../libs/soba/staging/src/cloud/cloud.ts","../../../../libs/soba/staging/src/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/environment/assets.ts","../../../../libs/soba/staging/src/environment/environment-input.ts","../../../../libs/soba/staging/src/environment/utils.ts","../../../../libs/soba/staging/src/environment/environment-cube.ts","../../../../libs/soba/staging/src/environment/environment-map.ts","../../../../libs/soba/staging/src/environment/environment-ground.ts","../../../../libs/soba/staging/src/environment/environment-portal.ts","../../../../libs/soba/staging/src/environment/environment.ts","../../../../libs/soba/staging/src/float/float.ts","../../../../libs/soba/staging/src/matcap-texture/matcap-texture.ts","../../../../libs/soba/staging/src/normal-texture/normal-texture.ts","../../../../libs/soba/staging/src/sky/sky.ts","../../../../libs/soba/staging/src/sparkles/sparkles.ts","../../../../libs/soba/staging/src/spot-light/shadow-mesh-input.ts","../../../../libs/soba/staging/src/spot-light/spot-light-input.ts","../../../../libs/soba/staging/src/spot-light/volumetric-mesh.ts","../../../../libs/soba/staging/src/spot-light/spot-light.ts","../../../../libs/soba/staging/src/spot-light/shadow-mesh.ts","../../../../libs/soba/staging/src/stage/stage.ts","../../../../libs/soba/staging/src/stars/stars.ts","../../../../libs/soba/staging/src/wireframe/wireframe-input.ts","../../../../libs/soba/staging/src/wireframe/wireframe.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { DiscardMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n\treturn object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n\treturn !!object.geometry;\n}\n\n// Based on \"Progressive Light Map Accumulator\", by [zalo](https://github.com/zalo/)\nexport class ProgressiveLightMap {\n\trenderer: THREE.WebGLRenderer;\n\tres: number;\n\tscene: THREE.Scene;\n\tobject: THREE.Mesh | null;\n\tbuffer1Active: boolean;\n\tprogressiveLightMap1: THREE.WebGLRenderTarget;\n\tprogressiveLightMap2: THREE.WebGLRenderTarget;\n\tdiscardMat: THREE.ShaderMaterial;\n\ttargetMat: THREE.MeshLambertMaterial;\n\tpreviousShadowMap: { value: THREE.Texture };\n\taveragingWindow: { value: number };\n\tclearColor: THREE.Color;\n\tclearAlpha: number;\n\tlights: { object: THREE.Light; intensity: number }[];\n\tmeshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n\tconstructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n\t\tthis.renderer = renderer;\n\t\tthis.res = res;\n\t\tthis.scene = scene;\n\t\tthis.buffer1Active = false;\n\t\tthis.lights = [];\n\t\tthis.meshes = [];\n\t\tthis.object = null;\n\t\tthis.clearColor = new THREE.Color();\n\t\tthis.clearAlpha = 0;\n\n\t\t// Create the Progressive LightMap Texture\n\t\tconst format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n\t\tthis.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n\t\t\ttype: format,\n\t\t});\n\t\tthis.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n\t\t\ttype: format,\n\t\t});\n\n\t\t// Inject some spicy new logic into a standard phong material\n\t\tthis.discardMat = new DiscardMaterial();\n\t\tthis.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n\t\tthis.previousShadowMap = { value: this.progressiveLightMap1.texture };\n\t\tthis.averagingWindow = { value: 100 };\n\t\tthis.targetMat.onBeforeCompile = (shader) => {\n\t\t\t// Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n\t\t\tshader.vertexShader =\n\t\t\t\t'varying vec2 vUv;\\n' +\n\t\t\t\tshader.vertexShader.slice(0, -1) +\n\t\t\t\t'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n\t\t\t// Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n\t\t\tconst bodyStart = shader.fragmentShader.indexOf('void main() {');\n\t\t\tshader.fragmentShader =\n\t\t\t\t'varying vec2 vUv;\\n' +\n\t\t\t\tshader.fragmentShader.slice(0, bodyStart) +\n\t\t\t\t'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n\t\t\t\tshader.fragmentShader.slice(bodyStart - 1, -1) +\n\t\t\t\t`\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n\t\t\t// Set the Previous Frame's Texture Buffer and Averaging Window\n\t\t\t// Set the Previous Frame's Texture Buffer and Averaging Window\n\t\t\tshader.uniforms['previousShadowMap'] = this.previousShadowMap;\n\t\t\tshader.uniforms['averagingWindow'] = this.averagingWindow;\n\t\t};\n\t}\n\n\tclear() {\n\t\tthis.renderer.getClearColor(this.clearColor);\n\t\tthis.clearAlpha = this.renderer.getClearAlpha();\n\t\tthis.renderer.setClearColor('black', 1);\n\t\tthis.renderer.setRenderTarget(this.progressiveLightMap1);\n\t\tthis.renderer.clear();\n\t\tthis.renderer.setRenderTarget(this.progressiveLightMap2);\n\t\tthis.renderer.clear();\n\t\tthis.renderer.setRenderTarget(null);\n\t\tthis.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n\t\tthis.lights = [];\n\t\tthis.meshes = [];\n\t\tthis.scene.traverse((object) => {\n\t\t\tif (isGeometry(object)) {\n\t\t\t\tthis.meshes.push({ object, material: object.material });\n\t\t\t} else if (isLight(object)) {\n\t\t\t\tthis.lights.push({ object, intensity: object.intensity });\n\t\t\t}\n\t\t});\n\t}\n\n\tprepare() {\n\t\tthis.lights.forEach((light) => (light.object.intensity = 0));\n\t\tthis.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n\t}\n\n\tfinish() {\n\t\tthis.lights.forEach((light) => (light.object.intensity = light.intensity));\n\t\tthis.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n\t}\n\n\tconfigure(object: THREE.Mesh) {\n\t\tthis.object = object;\n\t}\n\n\tupdate(camera: THREE.Camera, blendWindow = 100) {\n\t\tif (!this.object) return;\n\t\t// Set each object's material to the UV Unwrapped Surface Mapping Version\n\t\tthis.averagingWindow.value = blendWindow;\n\t\tthis.object.material = this.targetMat;\n\t\t// Ping-pong two surface buffers for reading/writing\n\t\tconst activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n\t\tconst inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n\t\t// Render the object's surface maps\n\t\tconst oldBg = this.scene.background;\n\t\tthis.scene.background = null;\n\t\tthis.renderer.setRenderTarget(activeMap);\n\t\tthis.previousShadowMap.value = inactiveMap.texture;\n\t\tthis.buffer1Active = !this.buffer1Active;\n\t\tthis.renderer.render(this.scene, camera);\n\t\tthis.renderer.setRenderTarget(null);\n\t\tthis.scene.background = oldBg;\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInput,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tuntracked,\n\ttype Signal,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsignalStore,\n\ttype NgtGroup,\n} from 'angular-three';\nimport { SoftShadowMaterial, type NgtSoftShadowMaterialState } from 'angular-three-soba/shaders';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nextend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });\n\nexport type NgtsAccumulativeShadowsState = {\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\tframes: number;\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\tblend: number;\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\tlimit: number;\n\t/** Scale of the plane, */\n\tscale: number;\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\ttemporal: boolean;\n\t/** Opacity of the plane, 1 */\n\topacity: number;\n\t/** Discards alpha pixels, 0.65 */\n\talphaTest: number;\n\t/** Shadow color, black */\n\tcolor: string;\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\tcolorBlend: number;\n\t/** Buffer resolution, 1024 */\n\tresolution: number;\n\t/** Texture tonemapping */\n\ttoneMapped: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-accumulative-shadows': NgtsAccumulativeShadowsState & NgtGroup;\n\t}\n}\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport const [injectNgtsAccumulativeShadowsApi, provideNgtsAccumulativeShadowsApi] = createInjectionToken(\n\t(shadows: NgtsAccumulativeShadows) => shadows.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsAccumulativeShadows)] },\n);\n\n@Component({\n\tselector: 'ngts-accumulative-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group [traverse]=\"nullTraverse\" [ref]=\"accumulativeShadowsRef\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t\t<ngt-mesh [receiveShadow]=\"true\" [ref]=\"meshRef\" [scale]=\"scale()\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-soft-shadow-material\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t\t[toneMapped]=\"toneMapped()\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[blend]=\"colorBlend()\"\n\t\t\t\t\t[map]=\"map()\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tproviders: [provideNgtsAccumulativeShadowsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows {\n\tprivate inputs = signalStore<NgtsAccumulativeShadowsState>({\n\t\tframes: 40,\n\t\tlimit: Infinity,\n\t\tblend: 20,\n\t\tscale: 10,\n\t\topacity: 1,\n\t\talphaTest: 0.75,\n\t\tcolor: 'black',\n\t\tcolorBlend: 2,\n\t\tresolution: 1024,\n\t\ttoneMapped: true,\n\t\ttemporal: false,\n\t});\n\n\tnullTraverse = () => null;\n\tMath = Math;\n\n\t@Input() accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\t@Input({ alias: 'blend' }) set _blend(blend: number) {\n\t\tthis.inputs.set({ blend });\n\t}\n\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t/** Scale of the plane, */\n\t@Input({ alias: 'scale' }) set _scale(scale: number) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\t@Input({ alias: 'temporal' }) set _temporal(temporal: boolean) {\n\t\tthis.inputs.set({ temporal });\n\t}\n\n\t/** Opacity of the plane, 1 */\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t/** Discards alpha pixels, 0.65 */\n\t@Input({ alias: 'alphaTest' }) set _alphaTest(alphaTest: number) {\n\t\tthis.inputs.set({ alphaTest });\n\t}\n\n\t/** Shadow color, black */\n\t@Input({ alias: 'color' }) set _color(color: string) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\t@Input({ alias: 'colorBlend' }) set _colorBlend(colorBlend: number) {\n\t\tthis.inputs.set({ colorBlend });\n\t}\n\n\t/** Buffer resolution, 1024 */\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t/** Texture tonemapping */\n\t@Input({ alias: 'toneMapped' }) set _toneMapped(toneMapped: boolean) {\n\t\tthis.inputs.set({ toneMapped });\n\t}\n\n\tmeshRef = injectNgtRef<THREE.Mesh<THREE.PlaneGeometry, NgtSoftShadowMaterialState & THREE.ShaderMaterial>>();\n\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate scene = this.store.select('scene');\n\tprivate camera = this.store.select('camera');\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate resolution = this.inputs.select('resolution');\n\tprivate alphaTest = this.inputs.select('alphaTest');\n\tprivate opacity = this.inputs.select('opacity');\n\tprivate temporal = this.inputs.select('temporal');\n\tprivate blend = this.inputs.select('blend');\n\tprivate frames = this.inputs.select('frames');\n\n\tpLM = computed(() => new ProgressiveLightMap(untracked(this.gl), untracked(this.scene), this.resolution()));\n\n\tscale = this.inputs.select('scale');\n\ttoneMapped = this.inputs.select('toneMapped');\n\tcolor = this.inputs.select('color');\n\tcolorBlend = this.inputs.select('colorBlend');\n\tmap = computed(() => this.pLM().progressiveLightMap2.texture);\n\n\tapi = computed(() => {\n\t\tconst [pLM, alphaTest, opacity, camera, temporal, blend, frames] = [\n\t\t\tthis.pLM(),\n\t\t\tthis.alphaTest(),\n\t\t\tthis.opacity(),\n\t\t\tthis.camera(),\n\t\t\tthis.temporal(),\n\t\t\tthis.blend(),\n\t\t\tthis.frames(),\n\t\t];\n\t\tconst api = {\n\t\t\tlights: new Map<string, Signal<NgtsAccumulativeShadowsLightApi>>(),\n\t\t\ttemporal,\n\t\t\tframes: Math.max(2, frames),\n\t\t\tblend: Math.max(2, frames === Infinity ? blend : frames),\n\t\t\tcount: 0,\n\t\t\tgetMesh: () => this.meshRef.nativeElement,\n\t\t\treset: () => {\n\t\t\t\tif (!this.meshRef.nativeElement) return;\n\t\t\t\t// Clear buffers, reset opacities, set frame count to 0\n\t\t\t\tpLM.clear();\n\t\t\t\tconst material = this.meshRef.nativeElement.material;\n\t\t\t\tmaterial.opacity = 0;\n\t\t\t\tmaterial.alphaTest = 0;\n\t\t\t\tapi.count = 0;\n\t\t\t},\n\t\t\tupdate: (frames = 1) => {\n\t\t\t\tif (!this.meshRef.nativeElement) return;\n\t\t\t\t// Adapt the opacity-blend ratio to the number of frames\n\t\t\t\tconst material = this.meshRef.nativeElement.material;\n\t\t\t\tif (!api.temporal) {\n\t\t\t\t\tmaterial.opacity = opacity;\n\t\t\t\t\tmaterial.alphaTest = alphaTest;\n\t\t\t\t} else {\n\t\t\t\t\tmaterial.opacity = Math.min(opacity, material.opacity + opacity / api.blend);\n\t\t\t\t\tmaterial.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / api.blend);\n\t\t\t\t}\n\n\t\t\t\t// Switch accumulative lights on\n\t\t\t\tthis.accumulativeShadowsRef.nativeElement.visible = true;\n\t\t\t\t// Collect scene lights and meshes\n\t\t\t\tpLM.prepare();\n\n\t\t\t\t// Update the lightmap and the accumulative lights\n\t\t\t\tfor (let i = 0; i < frames; i++) {\n\t\t\t\t\tapi.lights.forEach((light) => light().update());\n\t\t\t\t\tpLM.update(camera, api.blend);\n\t\t\t\t}\n\n\t\t\t\t// Switch lights off\n\t\t\t\tthis.accumulativeShadowsRef.nativeElement.visible = false;\n\t\t\t\t// Restore lights and meshes\n\t\t\t\tpLM.finish();\n\t\t\t},\n\t\t};\n\n\t\treturn api;\n\t});\n\n\tconstructor() {\n\t\tthis.configure();\n\t\tthis.resetAndUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate configure() {\n\t\teffect(() => {\n\t\t\tconst [pLM, mesh] = [this.pLM(), this.meshRef.nativeElement];\n\t\t\tif (!mesh) return;\n\t\t\tpLM.configure(mesh);\n\t\t});\n\t}\n\n\tprivate resetAndUpdate() {\n\t\teffect(() => {\n\t\t\tconst [, , mesh] = [\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tgetLocalState(untracked(this.scene)).objects(),\n\t\t\t\tthis.meshRef.nativeElement,\n\t\t\t];\n\t\t\tif (!mesh) return;\n\t\t\tconst api = untracked(this.api);\n\t\t\t// Reset internals, buffers, ...\n\t\t\tapi.reset();\n\t\t\t// Update lightmap\n\t\t\tif (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [api, limit] = [this.api(), this.inputs.get('limit')];\n\t\t\tif ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n\t\t\t\tthis.invalidate();\n\t\t\t\tapi.update();\n\t\t\t\tapi.count++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';\nimport { NgtArgs, NgtRepeat, extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { injectNgtsAccumulativeShadowsApi } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport type NgtsRandomizedLightsState = {\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\tframes: number;\n\t/** Light position, [0, 0, 0] */\n\tposition: [x: number, y: number, z: number];\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\tradius: number;\n\t/** Amount of lights, 8 */\n\tamount: number;\n\t/** Light intensity, 1 */\n\tintensity: number;\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\tambient: number;\n\t/** If the lights cast shadows, this is true by default */\n\tcastShadow: boolean;\n\t/** Default shadow bias, 0 */\n\tbias: number;\n\t/** Default map size, 512 */\n\tmapSize: number;\n\t/** Default size of the shadow camera, 10 */\n\tsize: number;\n\t/** Default shadow camera near, 0.5 */\n\tnear: number;\n\t/** Default shadow camera far, 500 */\n\tfar: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-randomized-lights': NgtsRandomizedLightsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-randomized-lights',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"lightsRef\">\n\t\t\t<ngt-directional-light\n\t\t\t\t*ngFor=\"let i; repeat: amount()\"\n\t\t\t\t[castShadow]=\"castShadow()\"\n\t\t\t\t[intensity]=\"intensity() / amount()\"\n\t\t\t>\n\t\t\t\t<ngt-value [rawValue]=\"bias()\" attach=\"shadow.bias\" />\n\t\t\t\t<ngt-vector2 *args=\"shadowsMapSize()\" attach=\"shadow.mapSize\" />\n\t\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n\t\t\t</ngt-directional-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtRepeat, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights {\n\tprivate inputs = signalStore<NgtsRandomizedLightsState>({\n\t\tcastShadow: true,\n\t\tbias: 0.001,\n\t\tmapSize: 512,\n\t\tsize: 5,\n\t\tnear: 0.5,\n\t\tfar: 500,\n\t\tframes: 1,\n\t\tposition: [0, 0, 0],\n\t\tradius: 1,\n\t\tamount: 8,\n\t\tintensity: 1,\n\t\tambient: 0.5,\n\t});\n\tMath = Math;\n\n\t@Input() lightsRef = injectNgtRef<Group>();\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t/** Light position, [0, 0, 0] */\n\t@Input({ alias: 'position' }) set _position(position: [x: number, y: number, z: number]) {\n\t\tthis.inputs.set({ position });\n\t}\n\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\t@Input({ alias: 'radius' }) set _radius(radius: number) {\n\t\tthis.inputs.set({ radius });\n\t}\n\n\t/** Amount of lights, 8 */\n\t@Input({ alias: 'amount' }) set _amount(amount: number) {\n\t\tthis.inputs.set({ amount });\n\t}\n\n\t/** Light intensity, 1 */\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\t@Input({ alias: 'ambient' }) set _ambient(ambient: number) {\n\t\tthis.inputs.set({ ambient });\n\t}\n\n\t/** If the lights cast shadows, this is true by default */\n\t@Input({ alias: 'castShadow' }) set _castShadow(castShadow: boolean) {\n\t\tthis.inputs.set({ castShadow });\n\t}\n\n\t/** Default shadow bias, 0 */\n\t@Input({ alias: 'bias' }) set _bias(bias: number) {\n\t\tthis.inputs.set({ bias });\n\t}\n\n\t/** Default map size, 512 */\n\t@Input({ alias: 'mapSize' }) set _mapSize(mapSize: number) {\n\t\tthis.inputs.set({ mapSize });\n\t}\n\n\t/** Default size of the shadow camera, 10 */\n\t@Input({ alias: 'size' }) set _size(size: number) {\n\t\tthis.inputs.set({ size });\n\t}\n\n\t/** Default shadow camera near, 0.5 */\n\t@Input({ alias: 'near' }) set _near(near: number) {\n\t\tthis.inputs.set({ near });\n\t}\n\n\t/** Default shadow camera far, 500 */\n\t@Input({ alias: 'far' }) set _far(far: number) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\tprivate position = this.inputs.select('position');\n\tprivate ambient = this.inputs.select('ambient');\n\tprivate radius = this.inputs.select('radius');\n\tprivate mapSize = this.inputs.select('mapSize');\n\tprivate size = this.inputs.select('size');\n\tprivate near = this.inputs.select('near');\n\tprivate far = this.inputs.select('far');\n\n\tprivate length = computed(() => new THREE.Vector3(...this.position()).length());\n\n\tprivate shadowsApi = injectNgtsAccumulativeShadowsApi();\n\n\tamount = this.inputs.select('amount');\n\tcastShadow = this.inputs.select('castShadow');\n\tintensity = this.inputs.select('intensity');\n\tbias = this.inputs.select('bias');\n\n\tshadowsMapSize = computed(() => [this.mapSize(), this.mapSize()]);\n\tcameraArgs = computed(() => [-this.size(), this.size(), this.size(), -this.size(), this.near(), this.far()]);\n\n\tapi = computed(() => {\n\t\tconst [lights, ambient, radius, length, position] = [\n\t\t\tthis.lightsRef.nativeElement,\n\t\t\tthis.ambient(),\n\t\t\tthis.radius(),\n\t\t\tthis.length(),\n\t\t\tthis.position(),\n\t\t];\n\n\t\tconst update = () => {\n\t\t\tif (lights) {\n\t\t\t\tfor (let l = 0; l < lights.children.length; l++) {\n\t\t\t\t\tconst light = lights.children[l] as THREE.DirectionalLight;\n\t\t\t\t\tif (Math.random() > ambient) {\n\t\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\t\tposition[0] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t\tposition[1] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t\tposition[2] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n\t\t\t\t\t\tconst phi = 2 * Math.PI * Math.random();\n\t\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\t\tMath.cos(lambda) * Math.cos(phi) * length,\n\t\t\t\t\t\t\tMath.abs(Math.cos(lambda) * Math.sin(phi) * length),\n\t\t\t\t\t\t\tMath.sin(lambda) * length,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn { update };\n\t});\n\n\tconstructor() {\n\t\tthis.updateLightMap();\n\t}\n\n\tprivate updateLightMap() {\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.lightsRef.nativeElement;\n\t\t\tif (!lights) return;\n\t\t\tconst shadowsApi = this.shadowsApi();\n\t\t\tif (shadowsApi) {\n\t\t\t\tshadowsApi.lights.set(lights.uuid, this.api);\n\t\t\t\tonCleanup(() => shadowsApi.lights.delete(lights.uuid));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, effect } from '@angular/core';\nimport { NgtArgs, checkUpdate, extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport { Group, Mesh, PlaneGeometry, type BufferAttribute } from 'three';\n\nconst easeInExpo = (x: number) => (x === 0 ? 0 : Math.pow(2, 10 * x - 10));\n\nexport type NgtsBackdropState = {\n\tfloor: number;\n\tsegments: number;\n\treceiveShadow: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-backdrop': NgtsBackdropState & NgtGroup;\n\t}\n}\n\nextend({ Group, Mesh, PlaneGeometry });\n\n@Component({\n\tselector: 'ngts-backdrop',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-mesh [receiveShadow]=\"receiveShadow()\" [rotation]=\"[-Math.PI / 2, 0, Math.PI / 2]\">\n\t\t\t\t<ngt-plane-geometry [ref]=\"planeRef\" *args=\"[1, 1, segments(), segments()]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBackdrop {\n\tMath = Math;\n\n\tprivate inputs = signalStore<NgtsBackdropState>({ floor: 0.25, segments: 20, receiveShadow: false });\n\n\t@Input({ alias: 'floor' }) set _floor(floor: number) {\n\t\tthis.inputs.set({ floor });\n\t}\n\n\t@Input({ alias: 'segments' }) set _segments(segments: number) {\n\t\tthis.inputs.set({ segments });\n\t}\n\n\t@Input({ alias: 'receiveShadow' }) set _receiveShadow(receiveShadow: boolean) {\n\t\tthis.inputs.set({ receiveShadow });\n\t}\n\n\tprivate floor = this.inputs.select('floor');\n\n\tplaneRef = injectNgtRef<PlaneGeometry>();\n\tsegments = this.inputs.select('segments');\n\treceiveShadow = this.inputs.select('receiveShadow');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst plane = this.planeRef.nativeElement;\n\t\t\tif (!plane) return;\n\t\t\tconst [segments, floor] = [this.segments(), this.floor()];\n\t\t\tconst offset = segments / segments / 2;\n\t\t\tconst position = plane.attributes['position'] as BufferAttribute;\n\t\t\tlet i = 0;\n\t\t\tfor (let x = 0; x < segments + 1; x++) {\n\t\t\t\tfor (let y = 0; y < segments + 1; y++) {\n\t\t\t\t\tposition.setXYZ(\n\t\t\t\t\t\ti++,\n\t\t\t\t\t\tx / segments - offset + (x === 0 ? -floor : 0),\n\t\t\t\t\t\ty / segments - offset,\n\t\t\t\t\t\teaseInExpo(x / segments),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckUpdate(position);\n\t\t\tplane.computeVertexNormals();\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nconst boundingBox = new THREE.Box3();\nconst boundingBoxSize = new THREE.Vector3();\n\nexport type NgtsBBAnchorState = {\n\tanchor: THREE.Vector3 | [number, number, number];\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-bb-anchor': NgtsBBAnchorState & NgtGroup;\n\t}\n}\n\nextend({ Group });\n\n@Component({\n\tselector: 'ngts-bb-anchor',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"groupRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBBAnchor {\n\tprivate inputs = signalStore<NgtsBBAnchorState>();\n\n\t@Input({ required: true, alias: 'anchor' }) set _anchor(anchor: NgtsBBAnchorState['anchor']) {\n\t\tthis.inputs.set({ anchor });\n\t}\n\n\tgroupRef = injectNgtRef<Group>();\n\tprivate parentRef = injectNgtRef<THREE.Object3D | null>();\n\tprivate anchor = this.inputs.select('anchor');\n\tprivate xyz = computed(() => {\n\t\tconst anchor = this.anchor();\n\t\treturn Array.isArray(anchor) ? anchor : [anchor.x, anchor.y, anchor.z];\n\t});\n\n\tconstructor() {\n\t\tthis.reattachParent();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate reattachParent() {\n\t\teffect(() => {\n\t\t\tconst group = this.groupRef.nativeElement;\n\t\t\tif (!group) return;\n\t\t\tif (group.parent?.parent) {\n\t\t\t\tthis.parentRef.nativeElement = group.parent.parent;\n\t\t\t\tgroup.parent.parent.add(group);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [parent, group, anchor] = [this.parentRef.nativeElement, this.groupRef.nativeElement, this.xyz()];\n\n\t\t\tif (parent) {\n\t\t\t\tboundingBox.setFromObject(parent);\n\t\t\t\tboundingBox.getSize(boundingBoxSize);\n\n\t\t\t\tgroup.position.set(\n\t\t\t\t\tparent.position.x + (boundingBoxSize.x * anchor[0]) / 2,\n\t\t\t\t\tparent.position.y + (boundingBoxSize.y * anchor[1]) / 2,\n\t\t\t\t\tparent.position.z + (boundingBoxSize.z * anchor[2]) / 2,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tuntracked,\n\ttype Signal,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\tsignalStore,\n\ttype NgtGroup,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsBoundsSize = {\n\tbox: THREE.Box3;\n\tsize: THREE.Vector3;\n\tcenter: THREE.Vector3;\n\tdistance: number;\n};\n\ntype ControlsProto = {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\tmaxDistance: number;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: any): def is THREE.Box3 => def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n\treturn Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n\tv.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n\tv.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n\tv.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport type NgtsBoundsState = {\n\tdamping: number;\n\tfit: boolean;\n\tclip: boolean;\n\tobserve: boolean;\n\tmargin: number;\n\teps: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-bounds': NgtsBoundsState & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsBoundsApi, provideNgtsBoundsApi] = createInjectionToken((bounds: NgtsBounds) => bounds.api, {\n\tisRoot: false,\n\tdeps: [forwardRef(() => NgtsBounds)],\n});\n\n@Component({\n\tselector: 'ngts-bounds',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"boundsRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tproviders: [provideNgtsBoundsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds {\n\tprivate inputs = signalStore<NgtsBoundsState>({\n\t\tdamping: 6,\n\t\tfit: false,\n\t\tclip: false,\n\t\tobserve: false,\n\t\tmargin: 1.2,\n\t\teps: 0.01,\n\t});\n\n\t@Input() boundsRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'damping' }) set _damping(damping: number) {\n\t\tthis.inputs.set({ damping });\n\t}\n\n\t@Input({ alias: 'fit' }) set _fit(fit: boolean) {\n\t\tthis.inputs.set({ fit });\n\t}\n\n\t@Input({ alias: 'clip' }) set _clip(clip: boolean) {\n\t\tthis.inputs.set({ clip });\n\t}\n\n\t@Input({ alias: 'observe' }) set _observe(observe: boolean) {\n\t\tthis.inputs.set({ observe });\n\t}\n\n\t@Input({ alias: 'margin' }) set _margin(margin: number) {\n\t\tthis.inputs.set({ margin });\n\t}\n\n\t@Input({ alias: 'eps' }) set _eps(eps: number) {\n\t\tthis.inputs.set({ eps });\n\t}\n\n\t@Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n\tprivate store = injectNgtStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate size = this.store.select('size');\n\tprivate camera = this.store.select('camera');\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprivate fit = this.inputs.select('fit');\n\tprivate clip = this.inputs.select('clip');\n\tprivate observe = this.inputs.select('observe');\n\tprivate margin = this.inputs.select('margin');\n\tprivate damping = this.inputs.select('damping');\n\n\tprivate current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\tprivate goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\tprivate box = new THREE.Box3();\n\n\tapi = computed(() => {\n\t\tconst { box, boundsRef, current, goal, fitted } = this;\n\t\tconst [camera, margin, controls, invalidate, damping] = [\n\t\t\tthis.camera(),\n\t\t\tthis.margin(),\n\t\t\tthis.controls(),\n\t\t\tthis.invalidate(),\n\t\t\tthis.damping(),\n\t\t];\n\n\t\tfunction getSize() {\n\t\t\tconst size = box.getSize(new THREE.Vector3());\n\t\t\tconst center = box.getCenter(new THREE.Vector3());\n\t\t\tconst maxSize = Math.max(size.x, size.y, size.z);\n\t\t\tconst fitHeightDistance = is.orthographicCamera(camera)\n\t\t\t\t? maxSize * 4\n\t\t\t\t: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n\t\t\tconst fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n\t\t\tconst distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n\t\t\treturn { box, size, center, distance };\n\t\t}\n\n\t\treturn {\n\t\t\tgetSize,\n\t\t\trefresh(object?: THREE.Object3D | THREE.Box3) {\n\t\t\t\tif (isBox3(object)) box.copy(object);\n\t\t\t\telse {\n\t\t\t\t\tconst target = object || boundsRef.nativeElement;\n\t\t\t\t\tif (!target) return this;\n\t\t\t\t\ttarget.updateWorldMatrix(true, true);\n\t\t\t\t\tbox.setFromObject(target);\n\t\t\t\t}\n\t\t\t\tif (box.isEmpty()) {\n\t\t\t\t\tconst max = camera.position.length() || 10;\n\t\t\t\t\tbox.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n\t\t\t\t}\n\n\t\t\t\tif (controls?.constructor.name === 'OrthographicTrackballControls') {\n\t\t\t\t\t// Put camera on a sphere along which it should move\n\t\t\t\t\tconst { distance } = getSize();\n\t\t\t\t\tconst direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n\t\t\t\t\tconst newPos = controls.target.clone().add(direction);\n\t\t\t\t\tcamera.position.copy(newPos);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tclip() {\n\t\t\t\tconst { distance } = getSize();\n\t\t\t\tif (controls) controls.maxDistance = distance * 10;\n\t\t\t\tcamera.near = distance / 100;\n\t\t\t\tcamera.far = distance * 100;\n\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\tif (controls) controls.update();\n\t\t\t\tinvalidate();\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tto({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n\t\t\t\tcurrent.camera.copy(camera.position);\n\t\t\t\tconst { center } = getSize();\n\t\t\t\tgoal.camera.set(...position);\n\n\t\t\t\tif (target) {\n\t\t\t\t\tgoal.focus.set(...target);\n\t\t\t\t} else {\n\t\t\t\t\tgoal.focus.copy(center);\n\t\t\t\t}\n\n\t\t\t\tif (damping) {\n\t\t\t\t\tcurrent.animating = true;\n\t\t\t\t} else {\n\t\t\t\t\tcamera.position.set(...position);\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfit() {\n\t\t\t\tcurrent.camera.copy(camera.position);\n\t\t\t\tif (controls) current.focus.copy(controls.target);\n\n\t\t\t\tconst { center, distance } = getSize();\n\t\t\t\tconst direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n\t\t\t\tgoal.camera.copy(center).sub(direction);\n\t\t\t\tgoal.focus.copy(center);\n\n\t\t\t\tif (is.orthographicCamera(camera)) {\n\t\t\t\t\tcurrent.zoom = camera.zoom;\n\n\t\t\t\t\tlet maxHeight = 0,\n\t\t\t\t\t\tmaxWidth = 0;\n\t\t\t\t\tconst vertices = [\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.min.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.max.z),\n\t\t\t\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.min.z),\n\t\t\t\t\t];\n\t\t\t\t\t// Transform the center and each corner to camera space\n\t\t\t\t\tcenter.applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t\tfor (const v of vertices) {\n\t\t\t\t\t\tv.applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t\t\tmaxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n\t\t\t\t\t\tmaxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight *= 2;\n\t\t\t\t\tmaxWidth *= 2;\n\t\t\t\t\tconst zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n\t\t\t\t\tconst zoomForWidth = (camera.right - camera.left) / maxWidth;\n\t\t\t\t\tgoal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n\t\t\t\t\tif (!damping) {\n\t\t\t\t\t\tcamera.zoom = goal.zoom;\n\t\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (damping) {\n\t\t\t\t\tcurrent.animating = true;\n\t\t\t\t} else {\n\t\t\t\t\tcamera.position.copy(goal.camera);\n\t\t\t\t\tcamera.lookAt(goal.focus);\n\t\t\t\t\tif (controls) {\n\t\t\t\t\t\tcontrols.target.copy(goal.focus);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (fitted.observed) {\n\t\t\t\t\tfitted.emit(this.getSize());\n\t\t\t\t}\n\t\t\t\tinvalidate();\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tthis.preventDragHijacking();\n\t\tthis.scalePointer();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate preventDragHijacking() {\n\t\teffect((onCleanup) => {\n\t\t\tconst controls = this.controls();\n\t\t\tif (controls) {\n\t\t\t\tconst callback = () => (this.current.animating = false);\n\t\t\t\tcontrols.addEventListener('start', callback);\n\t\t\t\tonCleanup(() => controls.removeEventListener('start', callback));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate scalePointer() {\n\t\tlet count = 0;\n\t\teffect(() => {\n\t\t\tconst [observe, fit, clip, api] = [\n\t\t\t\tthis.observe(),\n\t\t\t\tthis.fit(),\n\t\t\t\tthis.clip(),\n\t\t\t\tuntracked(this.api),\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.size(),\n\t\t\t];\n\n\t\t\tif (observe || count++ === 0) {\n\t\t\t\tapi.refresh();\n\t\t\t\tif (fit) api.fit();\n\t\t\t\tif (clip) api.clip();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [{ damping, eps }, camera, controls, invalidate] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\n\t\t\tif (this.current.animating) {\n\t\t\t\tdamp(this.current.focus, this.goal.focus, damping, delta);\n\t\t\t\tdamp(this.current.camera, this.goal.camera, damping, delta);\n\t\t\t\tthis.current.zoom = THREE.MathUtils.damp(this.current.zoom, this.goal.zoom, damping, delta);\n\t\t\t\tcamera.position.copy(this.current.camera);\n\n\t\t\t\tif (is.orthographicCamera(camera)) {\n\t\t\t\t\tcamera.zoom = this.current.zoom;\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tif (!controls) {\n\t\t\t\t\tcamera.lookAt(this.current.focus);\n\t\t\t\t} else {\n\t\t\t\t\tcontrols.target.copy(this.current.focus);\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\n\t\t\t\tinvalidate();\n\t\t\t\tif (is.orthographicCamera(camera) && !(Math.abs(this.current.zoom - this.goal.zoom) < eps)) return;\n\t\t\t\tif (!is.orthographicCamera(camera) && !equals(this.current.camera, this.goal.camera, eps)) return;\n\t\t\t\tif (controls && !equals(this.current.focus, this.goal.focus, eps)) return;\n\t\t\t\tthis.current.animating = false;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed, effect, type Signal } from '@angular/core';\nimport { injectBeforeRender, injectNgtStore, signalStore } from 'angular-three';\nimport { SimplexNoise } from 'three-stdlib';\n\ntype ControlsProto = {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nexport type NgtsCameraShakeState = {\n\tdecay?: boolean;\n\tintensity: number;\n\tdecayRate: number;\n\tmaxYaw: number;\n\tmaxPitch: number;\n\tmaxRoll: number;\n\tyawFrequency: number;\n\tpitchFrequency: number;\n\trollFrequency: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-camera-shake': NgtsCameraShakeState;\n\t}\n}\n\n@Directive({\n\tselector: 'ngts-camera-shake',\n\tstandalone: true,\n})\nexport class NgtsCameraShake {\n\tprivate inputs = signalStore<NgtsCameraShakeState>({\n\t\tintensity: 1,\n\t\tdecayRate: 0.65,\n\t\tmaxYaw: 0.1,\n\t\tmaxPitch: 0.1,\n\t\tmaxRoll: 0.1,\n\t\tyawFrequency: 0.1,\n\t\tpitchFrequency: 0.1,\n\t\trollFrequency: 0.1,\n\t});\n\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t@Input({ alias: 'decay' }) set _decay(decay: boolean) {\n\t\tthis.inputs.set({ decay });\n\t}\n\n\t@Input({ alias: 'decayRate' }) set _decayRate(decayRate: number) {\n\t\tthis.inputs.set({ decayRate });\n\t}\n\n\t@Input({ alias: 'maxYaw' }) set _maxYaw(maxYaw: number) {\n\t\tthis.inputs.set({ maxYaw });\n\t}\n\n\t@Input({ alias: 'maxPitch' }) set _maxPitch(maxPitch: number) {\n\t\tthis.inputs.set({ maxPitch });\n\t}\n\n\t@Input({ alias: 'maxRoll' }) set _maxRoll(maxRoll: number) {\n\t\tthis.inputs.set({ maxRoll });\n\t}\n\n\t@Input({ alias: 'yawFrequency' }) set _yawFrequency(yawFrequency: number) {\n\t\tthis.inputs.set({ yawFrequency });\n\t}\n\n\t@Input({ alias: 'pitchFrequency' }) set _pitchFrequency(pitchFrequency: number) {\n\t\tthis.inputs.set({ pitchFrequency });\n\t}\n\n\t@Input({ alias: 'rollFrequency' }) set _rollFrequency(rollFrequency: number) {\n\t\tthis.inputs.set({ rollFrequency });\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate camera = this.store.select('camera');\n\tprivate controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\n\tprivate initialRotation = this.store.get('camera').rotation.clone();\n\tprivate yawNoise = new SimplexNoise();\n\tprivate rollNoise = new SimplexNoise();\n\tprivate pitchNoise = new SimplexNoise();\n\n\tprivate intensity = this.inputs.select('intensity');\n\tprivate constrainedIntensity = computed(() => {\n\t\tconst intensity = this.intensity();\n\t\tif (intensity < 0 || intensity > 1) {\n\t\t\treturn intensity < 0 ? 0 : 1;\n\t\t}\n\t\treturn intensity;\n\t});\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t\tthis.setEvents();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ clock, delta }) => {\n\t\t\tconst [\n\t\t\t\t{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate },\n\t\t\t\tintensity,\n\t\t\t\tcamera,\n\t\t\t] = [this.inputs.get(), this.constrainedIntensity(), this.camera()];\n\n\t\t\tconst shake = Math.pow(intensity, 2);\n\t\t\tconst yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n\t\t\tconst pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n\t\t\tconst roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n\t\t\tcamera.rotation.set(\n\t\t\t\tthis.initialRotation.x + pitch,\n\t\t\t\tthis.initialRotation.y + yaw,\n\t\t\t\tthis.initialRotation.z + roll,\n\t\t\t);\n\n\t\t\tif (decay && intensity > 0) {\n\t\t\t\tthis.inputs.set((state) => ({ intensity: state.intensity - decayRate * delta }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [camera, controls] = [this.camera(), this.controls()];\n\t\t\tif (controls) {\n\t\t\t\tconst callback = () => void (this.initialRotation = camera.rotation.clone());\n\t\t\t\tcontrols.addEventListener('change', callback);\n\t\t\t\tcallback();\n\t\t\t\tonCleanup(() => void controls.removeEventListener('change', callback));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, effect } from '@angular/core';\nimport { extend, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsCenteredEvent = {\n\t/** The next parent above <Center> */\n\tparent: THREE.Object3D;\n\t/** The outmost container group of the <Center> component */\n\tcontainer: THREE.Object3D;\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tboundingBox: THREE.Box3;\n\tboundingSphere: THREE.Sphere;\n\tcenter: THREE.Vector3;\n\tverticalAlignment: number;\n\thorizontalAlignment: number;\n\tdepthAlignment: number;\n};\n\nexport type NgtsCenterState = {\n\ttop?: boolean;\n\tright?: boolean;\n\tbottom?: boolean;\n\tleft?: boolean;\n\tfront?: boolean;\n\tback?: boolean;\n\t/** Disable all axes */\n\tdisable?: boolean;\n\t/** Disable x-axis centering */\n\tdisableX?: boolean;\n\t/** Disable y-axis centering */\n\tdisableY?: boolean;\n\t/** Disable z-axis centering */\n\tdisableZ?: boolean;\n\t/** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n\tprecise?: boolean;\n\t/** Optional cacheKey to keep the component from recalculating on every render */\n\tcacheKey?: any;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-center': NgtsCenterState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-center',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"centerRef\" ngtCompound>\n\t\t\t<ngt-group [ref]=\"outerRef\">\n\t\t\t\t<ngt-group [ref]=\"innerRef\">\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter {\n\tprivate inputs = signalStore<NgtsCenterState>({\n\t\tprecise: true,\n\t\tcacheKey: 0,\n\t});\n\n\t@Input() centerRef = injectNgtRef<Group>();\n\touterRef = injectNgtRef<Group>();\n\tinnerRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'top' }) set _top(top: boolean) {\n\t\tthis.inputs.set({ top });\n\t}\n\n\t@Input({ alias: 'right' }) set _right(right: boolean) {\n\t\tthis.inputs.set({ right });\n\t}\n\n\t@Input({ alias: 'bottom' }) set _bottom(bottom: boolean) {\n\t\tthis.inputs.set({ bottom });\n\t}\n\n\t@Input({ alias: 'left' }) set _left(left: boolean) {\n\t\tthis.inputs.set({ left });\n\t}\n\n\t@Input({ alias: 'front' }) set _front(front: boolean) {\n\t\tthis.inputs.set({ front });\n\t}\n\n\t@Input({ alias: 'back' }) set _back(back: boolean) {\n\t\tthis.inputs.set({ back });\n\t}\n\n\t@Input({ alias: 'disableX' }) set _disableX(disableX: boolean) {\n\t\tthis.inputs.set({ disableX });\n\t}\n\n\t@Input({ alias: 'disableY' }) set _disableY(disableY: boolean) {\n\t\tthis.inputs.set({ disableY });\n\t}\n\n\t@Input({ alias: 'disableZ' }) set _disableZ(disableZ: boolean) {\n\t\tthis.inputs.set({ disableZ });\n\t}\n\n\t@Input({ alias: 'disable' }) set _disable(disable: boolean) {\n\t\tthis.inputs.set({ disable });\n\t}\n\n\t@Input({ alias: 'precise' }) set _precise(precise: boolean) {\n\t\tthis.inputs.set({ precise });\n\t}\n\n\t@Input({ alias: 'cacheKey' }) set _cacheKey(cacheKey: any) {\n\t\tthis.inputs.set({ cacheKey });\n\t}\n\n\t@Output() centered = new EventEmitter<NgtsCenteredEvent>();\n\n\tconstructor() {\n\t\tthis.setPosition();\n\t}\n\n\tprivate setPosition() {\n\t\tconst innerChildren = this.innerRef.children();\n\n\t\teffect(() => {\n\t\t\tconst [\n\t\t\t\touter,\n\t\t\t\tinner,\n\t\t\t\tcenterRef,\n\t\t\t\t{ precise, top, bottom, left, front, right, back, disable, disableX, disableY, disableZ },\n\t\t\t] = [\n\t\t\t\tthis.outerRef.nativeElement,\n\t\t\t\tthis.innerRef.nativeElement,\n\t\t\t\tthis.centerRef.nativeElement,\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tinnerChildren(),\n\t\t\t];\n\n\t\t\tif (outer && inner && centerRef) {\n\t\t\t\touter.matrixWorld.identity();\n\t\t\t\tconst box3 = new THREE.Box3().setFromObject(inner, precise);\n\t\t\t\tconst center = new THREE.Vector3();\n\t\t\t\tconst sphere = new THREE.Sphere();\n\t\t\t\tconst width = box3.max.x - box3.min.x;\n\t\t\t\tconst height = box3.max.y - box3.min.y;\n\t\t\t\tconst depth = box3.max.z - box3.min.z;\n\t\t\t\tbox3.getCenter(center);\n\t\t\t\tbox3.getBoundingSphere(sphere);\n\t\t\t\tconst vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n\t\t\t\tconst hAlign = left ? -width / 2 : right ? width / 2 : 0;\n\t\t\t\tconst dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n\t\t\t\touter.position.set(\n\t\t\t\t\tdisable || disableX ? 0 : -center.x + hAlign,\n\t\t\t\t\tdisable || disableY ? 0 : -center.y + vAlign,\n\t\t\t\t\tdisable || disableZ ? 0 : -center.z + dAlign,\n\t\t\t\t);\n\n\t\t\t\tif (this.centered.observed) {\n\t\t\t\t\tthis.centered.emit({\n\t\t\t\t\t\tparent: centerRef.parent!,\n\t\t\t\t\t\tcontainer: centerRef,\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tdepth,\n\t\t\t\t\t\tboundingBox: box3,\n\t\t\t\t\t\tboundingSphere: sphere,\n\t\t\t\t\t\tcenter: center,\n\t\t\t\t\t\tverticalAlignment: vAlign,\n\t\t\t\t\t\thorizontalAlignment: hAlign,\n\t\t\t\t\t\tdepthAlignment: dAlign,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { extend, injectNgtRef, signalStore, type NgtBeforeRenderEvent, type NgtGroup } from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Group, Mesh, MeshStandardMaterial, PlaneGeometry } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n(injectNgtsTextureLoader as any).preload(() => CLOUD_URL);\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\nexport type NgtsCloudState = {\n\topacity: number;\n\tspeed: number;\n\twidth: number;\n\tdepth: number;\n\tsegments: number;\n\ttexture: string;\n\tcolor: THREE.ColorRepresentation;\n\tdepthTest: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-cloud': NgtsCloudState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-cloud',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group\n\t\t\t\t[position]=\"[0, 0, (segments() / 2) * depth()]\"\n\t\t\t\t[ref]=\"groupRef\"\n\t\t\t\t(beforeRender)=\"onBeforeRender($event)\"\n\t\t\t>\n\t\t\t\t<ngts-billboard\n\t\t\t\t\t*ngFor=\"let cloud of clouds(); let i = index\"\n\t\t\t\t\t[position]=\"[cloud.x, cloud.y, -i * depth()]\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n\t\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t\t<ngt-mesh-standard-material\n\t\t\t\t\t\t\t[map]=\"texture()\"\n\t\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t\t[opacity]=\"(cloud.scale / 6) * cloud.density * opacity()\"\n\t\t\t\t\t\t\t[depthTest]=\"depthTest()\"\n\t\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ngt-mesh>\n\t\t\t\t</ngts-billboard>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgFor, NgtsBillboard, NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud {\n\tprivate inputs = signalStore<NgtsCloudState>({\n\t\topacity: 0.5,\n\t\tspeed: 0.4,\n\t\twidth: 10,\n\t\tdepth: 1.5,\n\t\tsegments: 20,\n\t\ttexture: CLOUD_URL,\n\t\tcolor: '#ffffff',\n\t\tdepthTest: true,\n\t});\n\n\t@Input() groupRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'depth' }) set _depth(depth: number) {\n\t\tthis.inputs.set({ depth });\n\t}\n\n\t@Input({ alias: 'segments' }) set _segments(segments: number) {\n\t\tthis.inputs.set({ segments });\n\t}\n\n\t@Input({ alias: 'texture' }) set _texture(texture: string) {\n\t\tthis.inputs.set({ texture });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'depthTest' }) set _depthTest(depthTest: boolean) {\n\t\tthis.inputs.set({ depthTest });\n\t}\n\n\tprivate width = this.inputs.select('width');\n\tprivate speed = this.inputs.select('speed');\n\n\tsegments = this.inputs.select('segments');\n\tdepth = this.inputs.select('depth');\n\tdepthTest = this.inputs.select('depthTest');\n\topacity = this.inputs.select('opacity');\n\tcolor = this.inputs.select('color');\n\ttexture = injectNgtsTextureLoader(this.inputs.select('texture'));\n\n\tclouds = computed(() =>\n\t\t[...new Array(this.segments())].map((_, index) => ({\n\t\t\tx: this.width() / 2 - Math.random() * this.width(),\n\t\t\ty: this.width() / 2 - Math.random() * this.width(),\n\t\t\tscale: 0.4 + Math.sin(((index + 1) / this.segments()) * Math.PI) * ((0.2 + Math.random()) * 10),\n\t\t\tdensity: Math.max(0.2, Math.random()),\n\t\t\trotation: Math.max(0.002, 0.005 * Math.random()) * this.speed(),\n\t\t})),\n\t);\n\tonBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n\t\tconst clouds = this.clouds();\n\t\tobject.children.forEach((cloud, index) => {\n\t\t\tcloud.children[0].rotation.z += clouds[index].rotation;\n\t\t\tcloud.children[0].scale.setScalar(\n\t\t\t\tclouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10,\n\t\t\t);\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport {\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\nexport type NgtsContactShadowsState = {\n\topacity: number;\n\twidth: number;\n\theight: number;\n\tblur: number;\n\tfar: number;\n\tsmooth: boolean;\n\tresolution: number;\n\tframes: number;\n\tscale: number | [x: number, y: number];\n\tcolor: THREE.ColorRepresentation;\n\tdepthWrite: boolean;\n\trenderOrder: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-contact-shadows': NgtsContactShadowsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-contact-shadows',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n\t\t\t<ngt-mesh\n\t\t\t\t[renderOrder]=\"renderOrder() ?? 0\"\n\t\t\t\t[geometry]=\"contactShadows().planeGeometry\"\n\t\t\t\t[scale]=\"[1, -1, 1]\"\n\t\t\t\t[rotation]=\"[-Math.PI / 2, 0, 0]\"\n\t\t\t>\n\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t[map]=\"contactShadows().renderTarget.texture\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[opacity]=\"opacity() ?? 1\"\n\t\t\t\t\t[depthWrite]=\"depthWrite() ?? false\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" [ref]=\"shadowCameraRef\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows {\n\tprivate inputs = signalStore<NgtsContactShadowsState>({\n\t\tscale: 10,\n\t\tframes: Infinity,\n\t\topacity: 1,\n\t\twidth: 1,\n\t\theight: 1,\n\t\tblur: 1,\n\t\tfar: 10,\n\t\tresolution: 512,\n\t\tsmooth: true,\n\t\tcolor: '#000000',\n\t\tdepthWrite: false,\n\t\trenderOrder: 0,\n\t});\n\n\t@Input() contactShadowsRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'height' }) set _height(height: number) {\n\t\tthis.inputs.set({ height });\n\t}\n\n\t@Input({ alias: 'blur' }) set _blur(blur: number) {\n\t\tthis.inputs.set({ blur });\n\t}\n\n\t@Input({ alias: 'far' }) set _far(far: number) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\t@Input({ alias: 'smooth' }) set _smooth(smooth: boolean) {\n\t\tthis.inputs.set({ smooth });\n\t}\n\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: number | [x: number, y: number]) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'depthWrite' }) set _depthWrite(depthWrite: boolean) {\n\t\tthis.inputs.set({ depthWrite });\n\t}\n\n\t@Input({ alias: 'renderOrder' }) set _renderOrder(renderOrder: number) {\n\t\tthis.inputs.set({ renderOrder });\n\t}\n\n\tMath = Math;\n\n\tprivate store = injectNgtStore();\n\n\tshadowCameraRef = injectNgtRef<OrthographicCamera>();\n\n\tprivate scale = this.inputs.select('scale');\n\tprivate width = this.inputs.select('width');\n\tprivate height = this.inputs.select('height');\n\tprivate far = this.inputs.select('far');\n\tprivate resolution = this.inputs.select('resolution');\n\tprivate color = this.inputs.select('color');\n\n\tprivate scaledWidth = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn this.width() * (Array.isArray(scale) ? scale[0] : scale || 1);\n\t});\n\tprivate scaledHeight = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn this.height() * (Array.isArray(scale) ? scale[1] : scale || 1);\n\t});\n\n\trenderOrder = this.inputs.select('renderOrder');\n\topacity = this.inputs.select('opacity');\n\tdepthWrite = this.inputs.select('depthWrite');\n\n\tcameraArgs = computed(() => {\n\t\tconst width = this.scaledWidth();\n\t\tconst height = this.scaledHeight();\n\t\treturn [-width / 2, width / 2, height / 2, -height / 2, 0, this.far()];\n\t});\n\tcontactShadows = computed(() => {\n\t\tconst color = this.color();\n\t\tconst resolution = this.resolution();\n\t\tconst renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\tconst renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\trenderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n\t\tconst planeGeometry = new THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2);\n\t\tconst blurPlane = new Mesh(planeGeometry);\n\t\tconst depthMaterial = new THREE.MeshDepthMaterial();\n\t\tdepthMaterial.depthTest = depthMaterial.depthWrite = false;\n\t\tdepthMaterial.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms = {\n\t\t\t\t...shader.uniforms,\n\t\t\t\tucolor: { value: new THREE.Color(color) },\n\t\t\t};\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`void main() {`, //\n\t\t\t\t`uniform vec3 ucolor;\n void main() {\n `,\n\t\t\t);\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n\t\t\t\t// Colorize the shadow, multiply by the falloff so that the center can remain darker\n\t\t\t\t'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );',\n\t\t\t);\n\t\t};\n\n\t\tconst horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n\t\tconst verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n\t\tverticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n\t\treturn {\n\t\t\trenderTarget,\n\t\t\tplaneGeometry,\n\t\t\tdepthMaterial,\n\t\t\tblurPlane,\n\t\t\thorizontalBlurMaterial,\n\t\t\tverticalBlurMaterial,\n\t\t\trenderTargetBlur,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(this.beforeRender.bind(this, 0));\n\t}\n\n\tprivate beforeRender(count: number, { scene, gl }: NgtRenderState) {\n\t\tconst { frames = Infinity, blur = 1, smooth = true } = this.inputs.get();\n\t\tconst { depthMaterial, renderTarget } = this.contactShadows();\n\t\tconst shadowCamera = this.shadowCameraRef.nativeElement;\n\t\tif (shadowCamera && (frames === Infinity || count < frames)) {\n\t\t\tconst initialBackground = scene.background;\n\t\t\tscene.background = null;\n\t\t\tconst initialOverrideMaterial = scene.overrideMaterial;\n\t\t\tscene.overrideMaterial = depthMaterial;\n\t\t\tgl.setRenderTarget(renderTarget);\n\t\t\tgl.render(scene, shadowCamera);\n\t\t\tscene.overrideMaterial = initialOverrideMaterial;\n\n\t\t\tthis.blurShadows(blur);\n\t\t\tif (smooth) this.blurShadows(blur * 0.4);\n\n\t\t\tgl.setRenderTarget(null);\n\t\t\tscene.background = initialBackground;\n\t\t\tcount++;\n\t\t}\n\t}\n\n\tprivate blurShadows(blur: number) {\n\t\tconst { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n\t\t\tthis.contactShadows();\n\t\tconst gl = this.store.get('gl');\n\t\tconst shadowCamera = this.shadowCameraRef.nativeElement;\n\n\t\tblurPlane.visible = true;\n\n\t\tblurPlane.material = horizontalBlurMaterial;\n\t\thorizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n\t\thorizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\n\t\tgl.setRenderTarget(renderTargetBlur);\n\t\tgl.render(blurPlane, shadowCamera);\n\n\t\tblurPlane.material = verticalBlurMaterial;\n\t\tverticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n\t\tverticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(blurPlane, shadowCamera);\n\n\t\tblurPlane.visible = false;\n\t}\n}\n","export const ENVIRONMENT_PRESETS = {\n\tapartment: 'lebombo_1k.hdr',\n\tcity: 'potsdamer_platz_1k.hdr',\n\tdawn: 'kiara_1_dawn_1k.hdr',\n\tforest: 'forest_slope_1k.hdr',\n\tlobby: 'st_fagans_interior_1k.hdr',\n\tnight: 'dikhololo_night_1k.hdr',\n\tpark: 'rooitou_park_1k.hdr',\n\tstudio: 'studio_small_03_1k.hdr',\n\tsunset: 'venice_sunset_1k.hdr',\n\twarehouse: 'empty_warehouse_01_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ENVIRONMENT_PRESETS;\n","import { Directive, ElementRef, Input, computed } from '@angular/core';\nimport { signalStore } from 'angular-three';\nimport type { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport type { NgtsEnvironmentPresetsType } from './assets';\n\nexport type NgtsEnvironmentInputState = {\n\tframes?: number;\n\tnear?: number;\n\tfar?: number;\n\tresolution?: number;\n\tbackground?: boolean | 'only';\n\tblur?: number;\n\tmap?: Texture;\n\tfiles?: string | string[];\n\tpath?: string;\n\tpreset?: NgtsEnvironmentPresetsType;\n\tscene?: Scene | ElementRef<Scene>;\n\textensions?: (loader: Loader) => void;\n\tground?: boolean | { radius?: number; height?: number; scale?: number };\n\tencoding?: TextureEncoding;\n};\n\n@Directive()\nexport abstract class NgtsEnvironmentInput {\n\tinputs = signalStore<NgtsEnvironmentInputState>({});\n\n\t@Input({ alias: 'frames' }) set _frames(frames: NgtsEnvironmentInputState['frames']) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@Input({ alias: 'near' }) set _near(near: NgtsEnvironmentInputState['near']) {\n\t\tthis.inputs.set({ near });\n\t}\n\n\t@Input({ alias: 'far' }) set _far(far: NgtsEnvironmentInputState['far']) {\n\t\tthis.inputs.set({ far });\n\t}\n\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: NgtsEnvironmentInputState['resolution']) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\n\t@Input({ alias: 'background' }) set _background(background: NgtsEnvironmentInputState['background']) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\t@Input({ alias: 'blur' }) set _blur(blur: NgtsEnvironmentInputState['blur']) {\n\t\tthis.inputs.set({ blur });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: NgtsEnvironmentInputState['map']) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'files' }) set _files(files: NgtsEnvironmentInputState['files']) {\n\t\tthis.inputs.set({ files });\n\t}\n\n\t@Input({ alias: 'path' }) set _path(path: NgtsEnvironmentInputState['path']) {\n\t\tthis.inputs.set({ path });\n\t}\n\n\t@Input({ alias: 'preset' }) set _preset(preset: NgtsEnvironmentInputState['preset']) {\n\t\tthis.inputs.set({ preset });\n\t}\n\n\t@Input({ alias: 'scene' }) set _scene(scene: NgtsEnvironmentInputState['scene']) {\n\t\tthis.inputs.set({ scene });\n\t}\n\n\t@Input({ alias: 'extensions' }) set _extensions(extensions: NgtsEnvironmentInputState['extensions']) {\n\t\tthis.inputs.set({ extensions });\n\t}\n\n\t@Input({ alias: 'ground' }) set _ground(ground: NgtsEnvironmentInputState['ground']) {\n\t\tthis.inputs.set({ ground });\n\t}\n\n\t@Input({ alias: 'encoding' }) set _encoding(encoding: NgtsEnvironmentInputState['encoding']) {\n\t\tthis.inputs.set({ encoding });\n\t}\n\n\tframes = this.inputs.select('frames');\n\tnear = this.inputs.select('near');\n\tfar = this.inputs.select('far');\n\tresolution = this.inputs.select('resolution');\n\tbackground = this.inputs.select('background');\n\tblur = this.inputs.select('blur');\n\tmap = this.inputs.select('map');\n\tfiles = this.inputs.select('files');\n\tpath = this.inputs.select('path');\n\tpreset = this.inputs.select('preset');\n\tscene = this.inputs.select('scene');\n\textensions = this.inputs.select('extensions');\n\tground = this.inputs.select('ground');\n\tencoding = this.inputs.select('encoding');\n\n\tparams = computed(() => ({\n\t\tfiles: this.files(),\n\t\tpath: this.path(),\n\t\tpreset: this.preset(),\n\t\textensions: this.extensions(),\n\t\tencoding: this.encoding(),\n\t}));\n}\n","import {\n\tChangeDetectorRef,\n\tDestroyRef,\n\tElementRef,\n\tInjector,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';\nimport { CubeReflectionMapping, CubeTexture, CubeTextureLoader, EquirectangularReflectionMapping } from 'three';\nimport { EXRLoader, RGBELoader } from 'three-stdlib';\nimport { ENVIRONMENT_PRESETS } from './assets';\nimport { type NgtsEnvironmentInputState } from './environment-input';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n\treturn is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n\tbackground: boolean | 'only',\n\tscene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n\tdefaultScene: THREE.Scene,\n\ttexture: THREE.Texture,\n\tblur = 0,\n) {\n\tconst target = resolveScene(scene || defaultScene);\n\tconst oldbg = target.background;\n\tconst oldenv = target.environment;\n\tconst oldBlur = target.backgroundBlurriness || 0;\n\n\tif (background !== 'only') target.environment = texture;\n\tif (background) target.background = texture;\n\tif (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n\treturn () => {\n\t\tif (background !== 'only') target.environment = oldenv;\n\t\tif (background) target.background = oldbg;\n\t\tif (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n\t};\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n\tPick<NgtsEnvironmentInputState, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';\n\nexport function injectNgtsEnvironment(paramsFactory: () => Partial<NgtsInjectEnvironmentParams>, injector?: Injector) {\n\tinjector = assertInjectionContext(injectNgtsEnvironment, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst textureRef = injectNgtRef<THREE.Texture | CubeTexture>();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\ttextureRef.nativeElement.dispose();\n\t\t});\n\n\t\tconst params = computed(() => {\n\t\t\tlet { files, preset, encoding, path, extensions } = paramsFactory() as NgtsInjectEnvironmentParams;\n\n\t\t\tif (files == null) {\n\t\t\t\tfiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n\t\t\t}\n\n\t\t\tif (path == null) {\n\t\t\t\tpath = '';\n\t\t\t}\n\n\t\t\tif (preset) {\n\t\t\t\tif (!(preset in ENVIRONMENT_PRESETS))\n\t\t\t\t\tthrow new Error('Preset must be one of: ' + Object.keys(ENVIRONMENT_PRESETS).join(', '));\n\t\t\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\t\t\tpath = CUBEMAP_ROOT;\n\t\t\t}\n\n\t\t\treturn { files, preset, encoding, path, extensions } as NgtsInjectEnvironmentParams;\n\t\t});\n\n\t\tconst loaderResult = injectNgtLoader(\n\t\t\t// @ts-expect-error\n\t\t\t() => {\n\t\t\t\tconst { files = '' } = params();\n\n\t\t\t\tconst isCubeMap = Array.isArray(files);\n\t\t\t\tconst extension = Array.isArray(files)\n\t\t\t\t\t? 'cube'\n\t\t\t\t\t: files.startsWith('data:application/exr')\n\t\t\t\t\t? 'exr'\n\t\t\t\t\t: files.startsWith('data:application/hdr')\n\t\t\t\t\t? 'hdr'\n\t\t\t\t\t: files.split('.').pop()?.split('?')?.shift()?.toLowerCase();\n\t\t\t\treturn isCubeMap\n\t\t\t\t\t? CubeTextureLoader\n\t\t\t\t\t: extension === 'hdr'\n\t\t\t\t\t? RGBELoader\n\t\t\t\t\t: extension === 'exr'\n\t\t\t\t\t? EXRLoader\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tconst { files } = params();\n\t\t\t\treturn Array.isArray(files) ? [files] : files;\n\t\t\t},\n\t\t\t{\n\t\t\t\textensions: (loader) => {\n\t\t\t\t\tconst { path, extensions } = params();\n\t\t\t\t\tloader.setPath(path);\n\t\t\t\t\tif (extensions) extensions(loader);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tconst sRGBEncoding = 3001;\n\t\tconst LinearEncoding = 3000;\n\n\t\teffect(() => {\n\t\t\tconst result = loaderResult();\n\t\t\tif (!result) return;\n\t\t\tconst { files, encoding } = params();\n\t\t\tconst texture: THREE.Texture | THREE.CubeTexture = Array.isArray(files) ? result[0] : result;\n\t\t\ttexture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n\t\t\tif ('colorSpace' in texture) {\n\t\t\t\ttexture.colorSpace = encoding ?? Array.isArray(files) ? 'srgb' : 'srgb-linear';\n\t\t\t} else {\n\t\t\t\t(texture as any).encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;\n\t\t\t}\n\n\t\t\ttextureRef.nativeElement = texture;\n\t\t\tsafeDetectChanges(cdr);\n\t\t});\n\n\t\treturn textureRef;\n\t});\n}\n","import { Directive, Input, effect, inject } from '@angular/core';\nimport { injectNgtStore, signalStore } from 'angular-three';\nimport { NgtsEnvironmentInput, type NgtsEnvironmentInputState } from './environment-input';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n\tselector: 'ngts-environment-cube',\n\tstandalone: true,\n})\nexport class NgtsEnvironmentCube {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\n\tprivate inputs = signalStore<Pick<NgtsEnvironmentInputState, 'background'>>({ background: false });\n\n\t@Input({ alias: 'background' }) set _background(background: boolean) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate scene = this.store.select('scene');\n\n\tprivate background = this.inputs.select('background');\n\tprivate textureRef = injectNgtsEnvironment(this.environmentInput.params);\n\n\tconstructor() {\n\t\tthis.setEnvProps();\n\t}\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [defaultScene, scene, background, blur, texture] = [\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.textureRef.nativeElement,\n\t\t\t];\n\t\t\tif (!texture) return;\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n}\n","import { Directive, Input, effect, inject } from '@angular/core';\nimport { injectNgtStore, signalStore } from 'angular-three';\nimport { NgtsEnvironmentInput, type NgtsEnvironmentInputState } from './environment-input';\nimport { setEnvProps } from './utils';\n\n@Directive({\n\tselector: 'ngts-environment-map',\n\tstandalone: true,\n})\nexport class NgtsEnvironmentMap {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate store = injectNgtStore();\n\n\tprivate inputs = signalStore<Pick<NgtsEnvironmentInputState, 'map' | 'background'>>({ background: false });\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'background' }) set _background(background: boolean) {\n\t\tthis.inputs.set({ background });\n\t}\n\n\tconstructor() {\n\t\tthis.setEnvProps();\n\t}\n\n\tprivate scene = this.store.select('scene');\n\tprivate background = this.inputs.select('background');\n\tprivate map = this.inputs.select('map');\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [defaultScene, scene, background, blur, texture] = [\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.map(),\n\t\t\t];\n\t\t\tif (!texture) return;\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n\tselector: 'ngts-environment-ground',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-environment-map [map]=\"texture()\" [background]=\"!!environmentInput.background()\" />\n\t\t<ngt-ground-projected-env *args=\"groundArgs()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n\t`,\n\timports: [NgtsEnvironmentMap, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate defaultTexture = injectNgtsEnvironment(this.environmentInput.params);\n\n\ttexture = computed(() => {\n\t\tconst defaultTexture = this.defaultTexture.nativeElement;\n\t\treturn this.environmentInput.map() || defaultTexture;\n\t});\n\n\tgroundArgs = computed(() => (this.texture() ? [this.texture()] : []));\n\theight = computed(() => (this.environmentInput.ground() as any)?.height);\n\tradius = computed(() => (this.environmentInput.ground() as any)?.radius);\n\tscale = computed(() => (this.environmentInput.ground() as any)?.scale ?? 1000);\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject } from '@angular/core';\nimport {\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\tNgtPortal,\n\tNgtPortalContent,\n\tprepare,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n\tselector: 'ngts-environment-portal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualSceneRef\">\n\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t<ng-content />\n\t\t\t\t<ngt-cube-camera *args=\"cameraArgs()\" [ref]=\"cubeCameraRef\" />\n\t\t\t\t<ng-container *ngIf=\"environmentInput.files() || environmentInput.preset(); else environmentMap\">\n\t\t\t\t\t<ngts-environment-cube [background]=\"true\" />\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #environmentMap>\n\t\t\t\t\t<ngts-environment-map *ngIf=\"environmentInput.map() as map\" [background]=\"true\" [map]=\"map\" />\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal {\n\tenvironmentInput = inject(NgtsEnvironmentInput);\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate scene = this.store.select('scene');\n\n\tvirtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n\tcubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n\tprivate fbo = computed(() => {\n\t\tconst fbo = new THREE.WebGLCubeRenderTarget(this.environmentInput.resolution());\n\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\treturn fbo;\n\t});\n\tcameraArgs = computed(() => [this.environmentInput.near()!, this.environmentInput.far()!, this.fbo()]);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.environmentInput.inputs.patch({\n\t\t\t\tnear: 1,\n\t\t\t\tfar: 1000,\n\t\t\t\tresolution: 256,\n\t\t\t\tframes: 1,\n\t\t\t\tbackground: false,\n\t\t\t\tpreset: undefined,\n\t\t\t});\n\t\t});\n\t\tthis.setEnvProps();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setEnvProps() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [virtualScene, blur, frames, background, scene, fbo, defaultScene, gl, cubeCamera] = [\n\t\t\t\tthis.virtualSceneRef.nativeElement,\n\t\t\t\tthis.environmentInput.blur(),\n\t\t\t\tthis.environmentInput.frames(),\n\t\t\t\tthis.environmentInput.background(),\n\t\t\t\tthis.environmentInput.scene(),\n\t\t\t\tthis.fbo(),\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.gl(),\n\t\t\t\tthis.cubeCameraRef.nativeElement,\n\t\t\t];\n\t\t\tif (!cubeCamera || !virtualScene) return;\n\t\t\tif (frames === 1) cubeCamera.update(gl, virtualScene);\n\t\t\tconst cleanUp = setEnvProps(background!, scene, defaultScene, fbo.texture, blur);\n\t\t\tonCleanup(cleanUp);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 1;\n\t\tinjectBeforeRender(({ gl }) => {\n\t\t\tconst { frames } = this.environmentInput.inputs.get();\n\t\t\tif (frames === Infinity || count < frames!) {\n\t\t\t\tconst camera = this.cubeCameraRef.nativeElement;\n\t\t\t\tconst virtualScene = this.virtualSceneRef.nativeElement;\n\t\t\t\tif (camera && virtualScene) {\n\t\t\t\t\tcamera.update(gl, virtualScene);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, TemplateRef } from '@angular/core';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Component({\n\tselector: 'ngts-environment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-environment-ground *ngIf=\"ground(); else noGround\" />\n\t\t<ng-template #noGround>\n\t\t\t<ngts-environment-map *ngIf=\"map() as map; else noMap\" [map]=\"map\" [background]=\"!!background()\" />\n\t\t\t<ng-template #noMap>\n\t\t\t\t<ngts-environment-portal *ngIf=\"content; else noPortal\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t\t</ngts-environment-portal>\n\t\t\t\t<ng-template #noPortal>\n\t\t\t\t\t<ngts-environment-cube [background]=\"!!background()\" />\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</ng-template>\n\t`,\n\timports: [\n\t\tNgtsEnvironmentMap,\n\t\tNgtsEnvironmentGround,\n\t\tNgtsEnvironmentCube,\n\t\tNgtsEnvironmentPortal,\n\t\tNgIf,\n\t\tNgTemplateOutlet,\n\t],\n\tproviders: [{ provide: NgtsEnvironmentInput, useExisting: NgtsEnvironment }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInput {\n\t@ContentChild(NgtsSobaContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, signalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsFloatState = {\n\tenabled: boolean;\n\tspeed: number;\n\trotationIntensity: number;\n\tfloatIntensity: number;\n\tfloatingRange: [number?, number?];\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-float': NgtsFloatState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-float',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound>\n\t\t\t<ngt-group [ref]=\"floatRef\" [matrixAutoUpdate]=\"false\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat {\n\tprivate inputs = signalStore<NgtsFloatState>({\n\t\tenabled: true,\n\t\tspeed: 1,\n\t\trotationIntensity: 1,\n\t\tfloatIntensity: 1,\n\t\tfloatingRange: [-0.1, 0.1],\n\t});\n\n\t@Input() floatRef = injectNgtRef<Group>();\n\t@Input({ alias: 'enabled' }) set _enabled(enabled: boolean) {\n\t\tthis.inputs.set({ enabled });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t@Input({ alias: 'rotationIntensity' }) set _rotationIntensity(rotationIntensity: number) {\n\t\tthis.inputs.set({ rotationIntensity });\n\t}\n\n\t@Input({ alias: 'floatIntensity' }) set _floatIntensity(floatIntensity: number) {\n\t\tthis.inputs.set({ floatIntensity });\n\t}\n\n\t@Input({ alias: 'floatingRange' }) set _floatingRange(floatingRange: [number?, number?]) {\n\t\tthis.inputs.set({ floatingRange });\n\t}\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tconst offset = Math.random() * 10_000;\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst float = this.floatRef.nativeElement;\n\t\t\tif (!float) return;\n\n\t\t\tconst { enabled, speed, rotationIntensity, floatingRange, floatIntensity } = this.inputs.get();\n\n\t\t\tif (!enabled || speed === 0) return;\n\t\t\tconst t = offset + clock.getElapsedTime();\n\t\t\tfloat.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n\t\t\tfloat.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n\t\t\tfloat.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n\t\t\tlet yPosition = Math.sin((t / 4) * speed) / 10;\n\t\t\tyPosition = THREE.MathUtils.mapLinear(\n\t\t\t\tyPosition,\n\t\t\t\t-0.1,\n\t\t\t\t0.1,\n\t\t\t\tfloatingRange?.[0] ?? -0.1,\n\t\t\t\tfloatingRange?.[1] ?? 0.1,\n\t\t\t);\n\t\t\tfloat.position.y = yPosition * floatIntensity;\n\t\t\tfloat.updateMatrix();\n\t\t});\n\t}\n}\n","import { computed, effect, runInInjectionContext, signal, untracked, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext } from 'angular-three';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\n\nfunction getFormatString(format: number) {\n\tswitch (format) {\n\t\tcase 64:\n\t\t\treturn '-64px';\n\t\tcase 128:\n\t\t\treturn '-128px';\n\t\tcase 256:\n\t\t\treturn '-256px';\n\t\tcase 512:\n\t\t\treturn '-512px';\n\t\tdefault:\n\t\t\treturn '';\n\t}\n}\n\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport type NgtsMatcapTextureState = {\n\tid: string | number;\n\tformat: number;\n\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n};\n\nconst defaultState: NgtsMatcapTextureState = {\n\tid: 0,\n\tformat: 1024,\n};\n\nexport function injectNgtsMatcapTexture(\n\tmatcapTextureState: () => Partial<NgtsMatcapTextureState>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsMatcapTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => ({ ...defaultState, ...matcapTextureState() }));\n\n\t\tconst matcapList = signal<Record<string, string>>({});\n\n\t\tconst DEFAULT_MATCAP = () => matcapList()[0];\n\t\tconst numTot = () => Object.keys(matcapList()).length;\n\n\t\teffect(() => {\n\t\t\tif (!untracked(numTot)) {\n\t\t\t\tfetch(LIST_URL)\n\t\t\t\t\t.then((res) => res.json())\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tmatcapList.set(data);\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst fileHash = () => {\n\t\t\tconst id = state().id;\n\t\t\tif (typeof id === 'string') {\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\tif (typeof id === 'number' && matcapList()[id]) {\n\t\t\t\treturn matcapList()[id];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tconst fileName = () => `${fileHash() || DEFAULT_MATCAP()}${getFormatString(state().format)}.png`;\n\t\tconst url = () => `${MATCAP_ROOT}/${state().format}/${fileName()}`;\n\n\t\tlet texture: Signal<THREE.Texture | null>;\n\t\tconst matcapTexture = computed(() => {\n\t\t\tif (url().includes('undefined')) return null;\n\t\t\tif (!texture) {\n\t\t\t\ttexture = injectNgtsTextureLoader(url, { onLoad: state().onLoad, injector });\n\t\t\t}\n\t\t\treturn texture();\n\t\t});\n\n\t\treturn { texture: matcapTexture, numTot, url };\n\t});\n}\n","import { computed, effect, runInInjectionContext, signal, untracked, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext } from 'angular-three';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport * as THREE from 'three';\n\nconst NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';\n\nexport type NgtsNormalTextureState = {\n\tid: string | number;\n\trepeat: number[];\n\tanisotropy: number;\n\toffset: number[];\n\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n};\n\nconst defaultState: NgtsNormalTextureState = {\n\tid: 0,\n\trepeat: [1, 1],\n\tanisotropy: 1,\n\toffset: [0, 0],\n};\n\nexport function injectNgtsNormalTexture(\n\tnormalTextureState: () => Partial<NgtsNormalTextureState>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsNormalTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => ({ ...defaultState, ...normalTextureState() }));\n\t\tconst normalsList = signal<Record<string, string>>({});\n\n\t\tconst DEFAULT_NORMAL = () => normalsList()[0];\n\t\tconst numTot = () => Object.keys(normalsList()).length;\n\n\t\teffect(() => {\n\t\t\tif (!untracked(numTot)) {\n\t\t\t\tfetch(LIST_URL)\n\t\t\t\t\t.then((res) => res.json())\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tnormalsList.set(data);\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst imageName = () => normalsList()[state().id] || DEFAULT_NORMAL();\n\t\tconst url = () => `${NORMAL_ROOT}/normals/${imageName()}`;\n\n\t\tlet texture: Signal<THREE.Texture | null>;\n\t\tconst normalTexture = computed(() => {\n\t\t\tif (url().includes('undefined')) return null;\n\t\t\tif (!texture) {\n\t\t\t\ttexture = injectNgtsTextureLoader(url, { onLoad: state().onLoad, injector });\n\t\t\t}\n\t\t\treturn texture();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst _texture = normalTexture();\n\t\t\tif (!_texture) return;\n\n\t\t\tconst { repeat, offset, anisotropy } = state();\n\t\t\t_texture.wrapS = _texture.wrapT = THREE.RepeatWrapping;\n\t\t\t_texture.repeat = new THREE.Vector2(repeat[0], repeat[1]);\n\t\t\t_texture.offset = new THREE.Vector2(offset[0], offset[1]);\n\t\t\t_texture.anisotropy = anisotropy;\n\t\t});\n\n\t\treturn { texture: normalTexture, numTot, url };\n\t});\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, injectNgtRef, signalStore, type NgtMesh } from 'angular-three';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nfunction calcPosFromAngles(inclination: number, azimuth: number, vector = new THREE.Vector3()) {\n\tconst theta = Math.PI * (inclination - 0.5);\n\tconst phi = 2 * Math.PI * (azimuth - 0.5);\n\n\tvector.x = Math.cos(phi);\n\tvector.y = Math.sin(theta);\n\tvector.z = Math.sin(phi);\n\n\treturn vector;\n}\n\nexport interface NgtsSkyState {\n\tdistance: number;\n\tsunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>;\n\tinclination: number;\n\tazimuth: number;\n\tmieCoefficient: number;\n\tmieDirectionalG: number;\n\trayleigh: number;\n\tturbidity: number;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends three-stdlib|Sky\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-sky': NgtsSkyState & Sky & NgtMesh;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sky',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[sky]\" [ref]=\"skyRef\" [scale]=\"scale()\" ngtCompound>\n\t\t\t<ngt-value [rawValue]=\"mieCoefficient()\" attach=\"material.uniforms.mieCoefficient.value\" />\n\t\t\t<ngt-value [rawValue]=\"mieDirectionalG()\" attach=\"material.uniforms.mieDirectionalG.value\" />\n\t\t\t<ngt-value [rawValue]=\"rayleigh()\" attach=\"material.uniforms.rayleigh.value\" />\n\t\t\t<ngt-value [rawValue]=\"sunPosition()\" attach=\"material.uniforms.sunPosition.value\" />\n\t\t\t<ngt-value [rawValue]=\"turbidity()\" attach=\"material.uniforms.turbidity.value\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky {\n\tprivate inputs = signalStore<NgtsSkyState>({\n\t\tinclination: 0.6,\n\t\tazimuth: 0.1,\n\t\tdistance: 1000,\n\t\tmieCoefficient: 0.005,\n\t\tmieDirectionalG: 0.8,\n\t\trayleigh: 0.5,\n\t\tturbidity: 10,\n\t});\n\n\t@Input() skyRef = injectNgtRef<Sky>();\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'sunPosition' }) set _sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n\t\tthis.inputs.set({ sunPosition });\n\t}\n\n\t@Input({ alias: 'inclination' }) set _inclination(inclination: number) {\n\t\tthis.inputs.set({ inclination });\n\t}\n\n\t@Input({ alias: 'azimuth' }) set _azimuth(azimuth: number) {\n\t\tthis.inputs.set({ azimuth });\n\t}\n\n\t@Input({ alias: 'mieCoefficient' }) set _mieCoefficient(mieCoefficient: number) {\n\t\tthis.inputs.set({ mieCoefficient });\n\t}\n\n\t@Input({ alias: 'mieDirectionalG' }) set _mieDirectionalG(mieDirectionalG: number) {\n\t\tthis.inputs.set({ mieDirectionalG });\n\t}\n\n\t@Input({ alias: 'rayleigh' }) set _rayleigh(rayleigh: number) {\n\t\tthis.inputs.set({ rayleigh });\n\t}\n\n\t@Input({ alias: 'turbidity' }) set _turbidity(turbidity: number) {\n\t\tthis.inputs.set({ turbidity });\n\t}\n\n\tprivate inclination = this.inputs.select('inclination');\n\tprivate azimuth = this.inputs.select('azimuth');\n\tprivate sunPos = this.inputs.select('sunPosition');\n\tprivate distance = this.inputs.select('distance');\n\n\tsunPosition = computed(() => this.sunPos() || calcPosFromAngles(this.inclination(), this.azimuth()));\n\tscale = computed(() => new THREE.Vector3().setScalar(this.distance()));\n\tmieCoefficient = this.inputs.select('mieCoefficient');\n\tmieDirectionalG = this.inputs.select('mieDirectionalG');\n\trayleigh = this.inputs.select('rayleigh');\n\tturbidity = this.inputs.select('turbidity');\n\n\tsky = new Sky();\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, isSignal, type Signal } from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtKey,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsignalStore,\n\ttype NgtPoints,\n} from 'angular-three';\nimport { SparklesMaterial, type NgtSparklesMaterialState } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\n\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n\tv instanceof THREE.Vector2 || v instanceof THREE.Vector3 || v instanceof THREE.Vector4;\n\nconst normalizeVector = (v: any): number[] => {\n\tif (Array.isArray(v)) return v;\n\telse if (isVector(v)) return v.toArray();\n\treturn [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T extends any>(\n\tcount: number,\n\tprop?: T | Float32Array,\n\tsetDefault?: (v: T) => number,\n) {\n\tif (prop !== undefined) {\n\t\tif (isFloat32Array(prop)) {\n\t\t\treturn prop as Float32Array;\n\t\t}\n\n\t\tif (prop instanceof THREE.Color) {\n\t\t\tconst a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n\t\t\treturn Float32Array.from(a);\n\t\t}\n\n\t\tif (isVector(prop) || Array.isArray(prop)) {\n\t\t\tconst a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n\t\t\treturn Float32Array.from(a);\n\t\t}\n\n\t\treturn Float32Array.from({ length: count }, () => prop as number);\n\t}\n\n\treturn Float32Array.from({ length: count }, setDefault!);\n}\n\nexport type NgtsSparklesState = {\n\t/** Number of particles (default: 100) */\n\tcount: number;\n\t/** Speed of particles (default: 1) */\n\tspeed: number | Float32Array;\n\t/** Opacity of particles (default: 1) */\n\topacity: number | Float32Array;\n\t/** Color of particles (default: 100) */\n\tcolor?: THREE.ColorRepresentation | Float32Array;\n\t/** Size of particles (default: randomized between 0 and 1) */\n\tsize?: number | Float32Array;\n\t/** The space the particles occupy (default: 1) */\n\tscale: number | [number, number, number] | THREE.Vector3;\n\t/** Movement factor (default: 1) */\n\tnoise: number | [number, number, number] | THREE.Vector3 | Float32Array;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-sparkles': NgtsSparklesState & NgtPoints;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sparkles',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points *key=\"key()\" ngtCompound [ref]=\"sparklesRef\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.position\" *args=\"[positions(), 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.size\" *args=\"[sizes(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.opacity\" *args=\"[opacities(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.speed\" *args=\"[speeds(), 1]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.color\" *args=\"[colors(), 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.noise\" *args=\"[noises(), 3]\" />\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ngt-sparkles-material [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr()\" />\n\t\t</ngt-points>\n\t`,\n\timports: [NgtArgs, NgtKey],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles {\n\tprivate inputs = signalStore<NgtsSparklesState>({\n\t\tnoise: 1,\n\t\tcount: 100,\n\t\tspeed: 1,\n\t\topacity: 1,\n\t\tscale: 1,\n\t});\n\n\t@Input() sparklesRef = injectNgtRef<Points>();\n\n\t/** Number of particles (default: 100) */\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t/** Speed of particles (default: 1) */\n\t@Input({ alias: 'speed' }) set _speed(speed: number | Float32Array) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\t/** Opacity of particles (default: 1) */\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number | Float32Array) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t/** Color of particles (default: 100) */\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation | Float32Array) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t/** Size of particles (default: randomized between 0 and 1) */\n\t@Input({ alias: 'size' }) set _size(size: number | Float32Array) {\n\t\tthis.inputs.set({ size });\n\t}\n\n\t/** The space the particles occupy (default: 1) */\n\t@Input({ alias: 'scale' }) set _scale(scale: number | [number, number, number] | THREE.Vector3) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t/** Movement factor (default: 1) */\n\t@Input({ alias: 'noise' }) set _noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n\t\tthis.inputs.set({ noise });\n\t}\n\n\tprivate store = injectNgtStore();\n\n\tdpr = this.store.select('viewport', 'dpr');\n\n\tprivate scale = this.inputs.select('scale');\n\tprivate count = this.inputs.select('count');\n\tprivate color = this.inputs.select('color');\n\n\tpositions = computed(() =>\n\t\tFloat32Array.from(\n\t\t\tArray.from({ length: this.count() }, () =>\n\t\t\t\tnormalizeVector(this.scale()).map(THREE.MathUtils.randFloatSpread),\n\t\t\t).flat(),\n\t\t),\n\t);\n\tsizes = this.getComputed('size', this.count, Math.random);\n\topacities = this.getComputed('opacity', this.count);\n\tspeeds = this.getComputed('speed', this.count);\n\tnoises = this.getComputed('noise', () => this.count() * 3);\n\tcolors = this.getComputed(\n\t\tcomputed(() => {\n\t\t\tconst color = this.color();\n\t\t\treturn !isFloat32Array(color) ? new THREE.Color(color) : color;\n\t\t}),\n\t\t() => (this.color() === undefined ? this.count() * 3 : this.count()),\n\t\t() => 1,\n\t);\n\tkey = computed(() => `particle-${this.count()}-${JSON.stringify(this.scale())}`);\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst sparkles = this.sparklesRef.nativeElement;\n\t\t\tif (!sparkles || !sparkles.material) return;\n\t\t\t(sparkles.material as NgtSparklesMaterialState).time = clock.elapsedTime;\n\t\t});\n\t}\n\n\tprivate getComputed<TKey extends keyof NgtsSparklesState>(\n\t\tnameOrComputed: TKey | Signal<NgtsSparklesState[TKey]>,\n\t\tcount: () => number,\n\t\tsetDefault?: (value: NgtsSparklesState[TKey]) => number,\n\t) {\n\t\tconst value =\n\t\t\ttypeof nameOrComputed !== 'string' && isSignal(nameOrComputed)\n\t\t\t\t? nameOrComputed\n\t\t\t\t: this.inputs.select(nameOrComputed);\n\t\treturn computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));\n\t}\n}\n","import { Directive, Input } from '@angular/core';\nimport { signalStore } from 'angular-three';\n\nexport type NgtsSpotLightShadowMeshInputState = {\n\tdistance: number;\n\talphaTest: number;\n\tscale: number;\n\tmap: THREE.Texture;\n\tshader: string;\n\twidth: number;\n\theight: number;\n};\n\n@Directive()\nexport abstract class NgtsSpotLightShadowMeshInput {\n\tinputs = signalStore<NgtsSpotLightShadowMeshInputState>({});\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'alphaTest' }) set _alphaTest(alphaTest: number) {\n\t\tthis.inputs.set({ alphaTest });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: number) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'shader' }) set _shader(shader: string) {\n\t\tthis.inputs.set({ shader });\n\t}\n\n\t@Input({ alias: 'width' }) set _width(width: number) {\n\t\tthis.inputs.set({ width });\n\t}\n\n\t@Input({ alias: 'height' }) set _height(height: number) {\n\t\tthis.inputs.set({ height });\n\t}\n\n\tdistance = this.inputs.select('distance');\n\talphaTest = this.inputs.select('alphaTest');\n\tscale = this.inputs.select('scale');\n\tmap = this.inputs.select('map');\n\tshader = this.inputs.select('shader');\n\twidth = this.inputs.select('width');\n\theight = this.inputs.select('height');\n}\n","import { Directive, Input } from '@angular/core';\nimport { signalStore } from 'angular-three';\n\nexport type NgtsSpotLightInputState = {\n\tdepthBuffer?: THREE.DepthTexture;\n\tangle: number;\n\tdistance: number;\n\tattenuation: number;\n\tanglePower: number;\n\tradiusTop: number;\n\tradiusBottom: number;\n\topacity: number;\n\tcolor: string | number;\n\tdebug: boolean;\n};\n\n@Directive()\nexport abstract class NgtsSpotLightInput {\n\tinputs = signalStore<NgtsSpotLightInputState>({});\n\n\t@Input({ alias: 'depthBuffer' }) set _depthBuffer(depthBuffer: THREE.DepthTexture) {\n\t\tthis.inputs.set({ depthBuffer });\n\t}\n\n\t@Input({ alias: 'angle' }) set _angle(angle: number) {\n\t\tthis.inputs.set({ angle });\n\t}\n\n\t@Input({ alias: 'distance' }) set _distance(distance: number) {\n\t\tthis.inputs.set({ distance });\n\t}\n\n\t@Input({ alias: 'attenuation' }) set _attenuation(attenuation: number) {\n\t\tthis.inputs.set({ attenuation });\n\t}\n\n\t@Input({ alias: 'anglePower' }) set _anglePower(anglePower: number) {\n\t\tthis.inputs.set({ anglePower });\n\t}\n\n\t@Input({ alias: 'radiusTop' }) set _radiusTop(radiusTop: number) {\n\t\tthis.inputs.set({ radiusTop });\n\t}\n\n\t@Input({ alias: 'radiusBottom' }) set _radiusBottom(radiusBottom: number) {\n\t\tthis.inputs.set({ radiusBottom });\n\t}\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: string | number) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\tdebug = this.inputs.select('debug');\n\tcolor = this.inputs.select('color');\n\topacity = this.inputs.select('opacity');\n\tradiusBottom = this.inputs.select('radiusBottom');\n\tradiusTop = this.inputs.select('radiusTop');\n\tanglePower = this.inputs.select('anglePower');\n\tattenuation = this.inputs.select('attenuation');\n\tdistance = this.inputs.select('distance');\n\tangle = this.inputs.select('angle');\n\tdepthBuffer = this.inputs.select('depthBuffer');\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, computed, effect, inject } from '@angular/core';\nimport { NgtArgs, extend, injectBeforeRender, injectNgtRef, injectNgtStore } from 'angular-three';\nimport { SpotLightMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\n\nextend({ Mesh });\n\n@Component({\n\tselector: 'ngts-volumetric-mesh',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"mesh\" [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\">\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.opacity()\" attach=\"uniforms.opacity.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.color()\" attach=\"uniforms.lightColor.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.attenuation()\" attach=\"uniforms.attenuation.value\" />\n\t\t\t\t<ngt-value [rawValue]=\"spotLightInput.anglePower()\" attach=\"uniforms.anglePower.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"spotLightInput.depthBuffer()\" attach=\"uniforms.depth.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"near()\" attach=\"uniforms.cameraNear.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"far()\" attach=\"uniforms.cameraFar.value\" />\n\t\t\t\t<ngt-value [rawvalue]=\"resolution()\" attach=\"uniforms.resolution.value\" />\n\t\t\t</ngt-primitive>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsVolumetricMesh {\n\tspotLightInput = inject(NgtsSpotLightInput);\n\tmesh = injectNgtRef<Mesh>();\n\tmaterial = new SpotLightMaterial();\n\tnullRaycast = () => null;\n\n\tprivate vec = new THREE.Vector3();\n\tprivate store = injectNgtStore();\n\tprivate size = this.store.select('size');\n\tprivate dpr = this.store.select('viewport', 'dpr');\n\n\tprivate radiusTop = computed(() => {\n\t\tconst radiusTop = this.spotLightInput.radiusTop();\n\t\treturn radiusTop === undefined ? 0.1 : radiusTop;\n\t});\n\tprivate radiusBottom = computed(() => {\n\t\tconst [angle, radiusBottom] = [this.spotLightInput.angle(), this.spotLightInput.radiusBottom()];\n\t\treturn radiusBottom === undefined ? angle * 7 : radiusBottom;\n\t});\n\n\tnear = this.store.select('camera', 'near');\n\tfar = this.store.select('camera', 'far');\n\tresolution = computed(() =>\n\t\tthis.spotLightInput.depthBuffer() ? [this.size().width * this.dpr(), this.size().height * this.dpr()] : [0, 0],\n\t);\n\tgeometry = computed(() => {\n\t\tconst [radiusTop, radiusBottom, distance] = [\n\t\t\tthis.radiusTop(),\n\t\t\tthis.radiusBottom(),\n\t\t\tthis.spotLightInput.distance(),\n\t\t];\n\n\t\tconst geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\t\treturn geometry;\n\t});\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t\teffect(() => {\n\t\t\tthis.spotLightInput.inputs.patch({\n\t\t\t\topacity: 1,\n\t\t\t\tcolor: 'white',\n\t\t\t\tdistance: 5,\n\t\t\t\tangle: 0.15,\n\t\t\t\tattenuation: 5,\n\t\t\t\tanglePower: 5,\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tthis.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));\n\t\t\tthis.mesh.nativeElement.lookAt((this.mesh.nativeElement.parent as any).target.getWorldPosition(this.vec));\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, forwardRef, signal } from '@angular/core';\nimport { NgtArgs, createInjectionToken, extend, injectNgtRef, type NgtSpotLight } from 'angular-three';\nimport { Group, SpotLight, SpotLightHelper } from 'three';\nimport { NgtsSpotLightInput, type NgtsSpotLightInputState } from './spot-light-input';\nimport { NgtsVolumetricMesh } from './volumetric-mesh';\n\nextend({ SpotLight, SpotLightHelper, Group });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-spot-light\n\t\t */\n\t\t'ngts-spot-light': NgtsSpotLightInputState & NgtSpotLight;\n\t}\n}\n\nexport const [injectNgtsSpotLightApi, provideNgtsSpotLightApi] = createInjectionToken(\n\t(spotLight: NgtsSpotLight) => ({ spotLight: spotLight.spotLightRef, debug: spotLight.debug }),\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSpotLight)] },\n);\n\n@Component({\n\tselector: 'ngts-spot-light',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ng-container *ngIf=\"debug() && spotLightRef.nativeElement\">\n\t\t\t\t<ngt-spot-light-helper *args=\"[spotLightRef.nativeElement]\" />\n\t\t\t</ng-container>\n\t\t\t<ngt-spot-light\n\t\t\t\t[ref]=\"spotLightRef\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[distance]=\"distance()\"\n\t\t\t\t[angle]=\"angle()\"\n\t\t\t\t[castShadow]=\"true\"\n\t\t\t\tngtCompound\n\t\t\t>\n\t\t\t\t<ngts-volumetric-mesh *ngIf=\"volumetric()\" />\n\t\t\t</ngt-spot-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtsVolumetricMesh, NgIf, NgtArgs],\n\tproviders: [provideNgtsSpotLightApi(), { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLight extends NgtsSpotLightInput {\n\t@Input() spotLightRef = injectNgtRef<SpotLight>();\n\n\tvolumetric = signal(true);\n\t@Input({ alias: 'volumetric' }) set _volumetric(volumetric: boolean) {\n\t\tthis.volumetric.set(volumetric);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.inputs.set({\n\t\t\topacity: 1,\n\t\t\tcolor: 'white',\n\t\t\tdistance: 5,\n\t\t\tangle: 0.15,\n\t\t\tattenuation: 5,\n\t\t\tanglePower: 5,\n\t\t\tdebug: false,\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport {\n\tassertInjectionContext,\n\tcheckUpdate,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\ttype NgtInjectedRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { NgtsSpotLightShadowMeshInput, type NgtsSpotLightShadowMeshInputState } from './shadow-mesh-input';\nimport { injectNgtsSpotLightApi } from './spot-light';\n\nconst isSpotLight = (child: THREE.Object3D | null): child is THREE.SpotLight => {\n\treturn (child as THREE.SpotLight)?.isSpotLight;\n};\n\nfunction injectShadowMeshCommon(\n\tspotLightRef: NgtInjectedRef<THREE.SpotLight>,\n\tmeshRef: NgtInjectedRef<THREE.Mesh>,\n\twidth: () => number,\n\theight: () => number,\n\tdistance: () => number,\n\tinjector?: Injector,\n) {\n\tinjector = assertInjectionContext(injectShadowMeshCommon, injector);\n\trunInInjectionContext(injector, () => {\n\t\tconst pos = new THREE.Vector3();\n\t\tconst dir = new THREE.Vector3();\n\n\t\teffect(() => {\n\t\t\tconst spotLight = spotLightRef.nativeElement;\n\t\t\tif (!spotLight) return;\n\t\t\tif (isSpotLight(spotLight)) {\n\t\t\t\tspotLight.shadow.mapSize.set(width(), height());\n\t\t\t\tif (spotLight.shadow.map) {\n\t\t\t\t\tspotLight.shadow.map.setSize(width(), height());\n\t\t\t\t}\n\t\t\t\tspotLight.shadow.needsUpdate = true;\n\t\t\t} else {\n\t\t\t\tthrow new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst spotLight = spotLightRef.nativeElement;\n\t\t\tconst mesh = meshRef.nativeElement;\n\n\t\t\tif (!spotLight) return;\n\n\t\t\tconst A = spotLight.position;\n\t\t\tconst B = spotLight.target.position;\n\n\t\t\tdir.copy(B).sub(A);\n\t\t\tconst len = dir.length();\n\t\t\tdir.normalize().multiplyScalar(len * distance());\n\t\t\tpos.copy(A).add(dir);\n\n\t\t\tif (mesh) {\n\t\t\t\tmesh.position.copy(pos);\n\t\t\t\tmesh.lookAt(spotLight.target.position);\n\t\t\t}\n\t\t});\n\t});\n}\n\nextend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-mesh-no-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"shadowMeshInput.alphaTest()\"\n\t\t\t\t[alphaMap]=\"shadowMeshInput.map()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshNoShader {\n\tshadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n\n\tmeshRef = injectNgtRef<THREE.Mesh>();\n\tDoubleSide = THREE.DoubleSide;\n\n\tprivate spotLightApi = injectNgtsSpotLightApi();\n\tdebug = this.spotLightApi.debug;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.shadowMeshInput.inputs.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst map = this.shadowMeshInput.map();\n\t\t\tif (map) {\n\t\t\t\tmap.wrapS = map.wrapT = THREE.RepeatWrapping;\n\t\t\t\tcheckUpdate(map);\n\t\t\t}\n\t\t});\n\n\t\tinjectShadowMeshCommon(\n\t\t\tthis.spotLightApi.spotLight,\n\t\t\tthis.meshRef,\n\t\t\tthis.shadowMeshInput.width,\n\t\t\tthis.shadowMeshInput.height,\n\t\t\tthis.shadowMeshInput.distance,\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-mesh-shader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.scale()\" [castShadow]=\"true\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"shadowMeshInput.alphaTest()\"\n\t\t\t\t[alphaMap]=\"renderTarget().texture\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapS\" />\n\t\t\t\t<ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapT\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshShader {\n\tshadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n\tmeshRef = injectNgtRef<THREE.Mesh>();\n\n\tDoubleSide = THREE.DoubleSide;\n\tRepeatWrapping = THREE.RepeatWrapping;\n\n\tprivate spotLightApi = injectNgtsSpotLightApi();\n\tdebug = this.spotLightApi.debug;\n\trenderTarget = computed(() => {\n\t\tconst [width, height] = [this.shadowMeshInput.width(), this.shadowMeshInput.height()];\n\n\t\treturn new THREE.WebGLRenderTarget(width, height, {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tencoding: THREE.LinearEncoding,\n\t\t\tstencilBuffer: false,\n\t\t\t// depthTexture: null!\n\t\t});\n\t});\n\n\tprivate uniforms = {\n\t\tuShadowMap: { value: this.shadowMeshInput.map() },\n\t\tuTime: { value: 0 },\n\t};\n\n\tprivate fsQuad = computed(() => {\n\t\tconst shader = this.shadowMeshInput.shader();\n\t\tif (!shader) return null;\n\t\treturn new FullScreenQuad(\n\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n\t\t\t\tfragmentShader: shader,\n\t\t\t}),\n\t\t);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.shadowMeshInput.inputs.patch({\n\t\t\t\tdistance: 0.4,\n\t\t\t\talphaTest: 0.5,\n\t\t\t\twidth: 512,\n\t\t\t\theight: 512,\n\t\t\t\tscale: 4,\n\t\t\t\tshader: /* glsl */ `\n varying vec2 vUv;\n\n uniform sampler2D uShadowMap;\n uniform float uTime;\n\n void main() {\n vec3 color = texture2D(uShadowMap, vUv).xyz;\n gl_FragColor = vec4(color, 1.);\n }\n `,\n\t\t\t});\n\t\t});\n\n\t\tinjectShadowMeshCommon(\n\t\t\tthis.spotLightApi.spotLight,\n\t\t\tthis.meshRef,\n\t\t\tthis.shadowMeshInput.width,\n\t\t\tthis.shadowMeshInput.height,\n\t\t\tthis.shadowMeshInput.distance,\n\t\t);\n\n\t\tinjectBeforeRender(({ delta, gl }) => {\n\t\t\tthis.uniforms.uTime.value += delta;\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tif (fsQuad && renderTarget) {\n\t\t\t\tgl.setRenderTarget(renderTarget);\n\t\t\t\tfsQuad.render(gl);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst map = this.shadowMeshInput.map();\n\t\t\tif (map) {\n\t\t\t\tthis.uniforms.uShadowMap.value = map;\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tonCleanup(() => {\n\t\t\t\tif (fsQuad) {\n\t\t\t\t\tfsQuad.dispose();\n\t\t\t\t\tfsQuad.material.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tonCleanup(() => {\n\t\t\t\trenderTarget.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-spot-light-shadow': NgtsSpotLightShadowMeshInputState;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-spot-light-shadow-mesh-shader *ngIf=\"shader(); else noShader\" />\n\t\t<ng-template #noShader>\n\t\t\t<ngts-spot-light-shadow-mesh-no-shader />\n\t\t</ng-template>\n\t`,\n\timports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],\n\tproviders: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],\n})\nexport class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tcomputed,\n\ttype OnChanges,\n} from '@angular/core';\nimport { NgtArgs, extend, signalStore } from 'angular-three';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport {\n\tNgtsAccumulativeShadows,\n\ttype NgtsAccumulativeShadowsState,\n} from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights, type NgtsRandomizedLightsState } from '../accumulative-shadows/randomized-lights';\nimport { NgtsBounds, injectNgtsBoundsApi } from '../bounds/bounds';\nimport { NgtsCenter, type NgtsCenterState, type NgtsCenteredEvent } from '../center/center';\nimport { NgtsContactShadows, type NgtsContactShadowsState } from '../contact-shadows/contact-shadows';\nimport type { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { type NgtsEnvironmentInputState } from '../environment/environment-input';\n\nconst presets = {\n\trembrandt: {\n\t\tmain: [1, 2, 1],\n\t\tfill: [-2, -0.5, -2],\n\t},\n\tportrait: {\n\t\tmain: [-1, 2, 0.5],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tupfront: {\n\t\tmain: [0, 2, 1],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n\tsoft: {\n\t\tmain: [-2, 4, 4],\n\t\tfill: [-1, 0.5, -1.5],\n\t},\n};\n\ntype NgtsStageShadowsState = Partial<NgtsAccumulativeShadowsState> &\n\tPartial<NgtsRandomizedLightsState> &\n\tPartial<NgtsContactShadowsState> & {\n\t\ttype: 'contact' | 'accumulative';\n\t\t/** Shadow plane offset, default: 0 */\n\t\toffset?: number;\n\t\t/** Shadow bias, default: -0.0001 */\n\t\tbias?: number;\n\t\t/** Shadow normal bias, default: 0 */\n\t\tnormalBias?: number;\n\t\t/** Shadow map size, default: 1024 */\n\t\tsize?: number;\n\t};\n\nexport type NgtsStageState = {\n\t/** Lighting setup, default: \"rembrandt\" */\n\tpreset:\n\t\t| 'rembrandt'\n\t\t| 'portrait'\n\t\t| 'upfront'\n\t\t| 'soft'\n\t\t| { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n\t/** Controls the ground shadows, default: \"contact\" */\n\tshadows: boolean | 'contact' | 'accumulative' | NgtsStageShadowsState;\n\t/** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n\tadjustCamera: boolean | number;\n\t/** The default environment, default: \"city\" */\n\tenvironment: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInputState>;\n\t/** The lighting intensity, default: 0.5 */\n\tintensity: number;\n\t/** To adjust centering, default: undefined */\n\tcenter?: Partial<NgtsCenterState>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-stage': NgtsStageState;\n\t}\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Directive({ selector: 'ngts-stage-refit', standalone: true })\nexport class NgtsStageRefit implements OnChanges {\n\tboundsApi = injectNgtsBoundsApi();\n\n\t@Input() radius = 0;\n\t@Input() adjustCamera: boolean | number = true;\n\n\tngOnChanges() {\n\t\tif (this.adjustCamera) {\n\t\t\tthis.boundsApi().refresh().clip().fit();\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'ngts-stage',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-ambient-light [intensity]=\"intensity() / 3\" />\n\t\t<ngt-spot-light\n\t\t\t[penumbra]=\"1\"\n\t\t\t[position]=\"[\n\t\t\t\tconfig().main[0] * boundingState.get('radius'),\n\t\t\t\tconfig().main[1] * boundingState.get('radius'),\n\t\t\t\tconfig().main[2] * boundingState.get('radius')\n\t\t\t]\"\n\t\t\t[intensity]=\"intensity() * 2\"\n\t\t\t[castShadow]=\"!!shadows()\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"shadowsState().shadowBias\" attach=\"shadow.bias\" />\n\t\t\t<ngt-value [rawValue]=\"shadowsState().normalBias\" attach=\"shadow.normalBias\" />\n\t\t\t<ngt-vector2 *args=\"[shadowsState().shadowSize, shadowsState().shadowSize]\" attach=\"shadow.mapSize\" />\n\t\t</ngt-spot-light>\n\t\t<ngt-point-light\n\t\t\t[position]=\"[\n\t\t\t\tconfig().fill[0] * boundingState.get('radius'),\n\t\t\t\tconfig().fill[1] * boundingState.get('radius'),\n\t\t\t\tconfig().fill[2] * boundingState.get('radius')\n\t\t\t]\"\n\t\t\t[intensity]=\"intensity()\"\n\t\t/>\n\n\t\t<ngts-bounds\n\t\t\t[fit]=\"!!adjustCamera()\"\n\t\t\t[clip]=\"!!adjustCamera()\"\n\t\t\t[margin]=\"Number(adjustCamera())\"\n\t\t\t[observe]=\"true\"\n\t\t>\n\t\t\t<ngts-stage-refit [radius]=\"boundingState.get('radius')\" [adjustCamera]=\"adjustCamera()\" />\n\t\t\t<ngts-center\n\t\t\t\t[position]=\"[0, shadowsState().shadowOffset / 2, 0]\"\n\t\t\t\t[top]=\"!!center()?.top\"\n\t\t\t\t[right]=\"!!center()?.right\"\n\t\t\t\t[bottom]=\"!!center()?.bottom\"\n\t\t\t\t[left]=\"!!center()?.left\"\n\t\t\t\t[front]=\"!!center()?.front\"\n\t\t\t\t[back]=\"!!center()?.back\"\n\t\t\t\t[disableX]=\"!!center()?.disableX\"\n\t\t\t\t[disableY]=\"!!center()?.disableY\"\n\t\t\t\t[disableZ]=\"!!center()?.disableZ\"\n\t\t\t\t[precise]=\"!!center()?.precise\"\n\t\t\t\t(centered)=\"onCentered($event)\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngts-center>\n\t\t</ngts-bounds>\n\n\t\t<ngt-group [position]=\"[0, -boundingState.get('height') / 2 - shadowsState().shadowOffset / 2, 0]\">\n\t\t\t<ngts-contact-shadows\n\t\t\t\t*ngIf=\"shadowsState().contactShadow\"\n\t\t\t\t[scale]=\"boundingState.get('radius') * 4\"\n\t\t\t\t[far]=\"boundingState.get('radius')\"\n\t\t\t\t[blur]=\"2\"\n\t\t\t\t[opacity]=\"shadowsState().opacity!\"\n\t\t\t\t[width]=\"shadowsState().width!\"\n\t\t\t\t[height]=\"shadowsState().height!\"\n\t\t\t\t[smooth]=\"shadowsState().smooth!\"\n\t\t\t\t[resolution]=\"shadowsState().resolution!\"\n\t\t\t\t[frames]=\"shadowsState().frames!\"\n\t\t\t\t[scale]=\"shadowsState().scale!\"\n\t\t\t\t[color]=\"shadowsState().color!\"\n\t\t\t\t[depthWrite]=\"shadowsState().depthWrite!\"\n\t\t\t\t[renderOrder]=\"shadowsState().renderOrder!\"\n\t\t\t/>\n\t\t\t<ngts-accumulative-shadows\n\t\t\t\t*ngIf=\"shadowsState().accumulativeShadow\"\n\t\t\t\t[temporal]=\"true\"\n\t\t\t\t[frames]=\"100\"\n\t\t\t\t[alphaTest]=\"0.9\"\n\t\t\t\t[toneMapped]=\"true\"\n\t\t\t\t[scale]=\"boundingState.get('radius') * 4\"\n\t\t\t\t[opacity]=\"shadowsState().opacity!\"\n\t\t\t\t[alphaTest]=\"shadowsState().alphaTest!\"\n\t\t\t\t[color]=\"shadowsState().color!\"\n\t\t\t\t[colorBlend]=\"shadowsState().colorBlend!\"\n\t\t\t\t[resolution]=\"shadowsState().resolution!\"\n\t\t\t>\n\t\t\t\t<ngts-randomized-lights\n\t\t\t\t\t[amount]=\"shadowsState().amount ?? 8\"\n\t\t\t\t\t[radius]=\"shadowsState().radius ?? boundingState.get('radius')\"\n\t\t\t\t\t[ambient]=\"shadowsState().ambient ?? 0.5\"\n\t\t\t\t\t[intensity]=\"shadowsState().intensity ?? 1\"\n\t\t\t\t\t[position]=\"[\n\t\t\t\t\t\tconfig().main[0] * boundingState.get('radius'),\n\t\t\t\t\t\tconfig().main[1] * boundingState.get('radius'),\n\t\t\t\t\t\tconfig().main[2] * boundingState.get('radius')\n\t\t\t\t\t]\"\n\t\t\t\t\t[size]=\"boundingState.get('radius') * 4\"\n\t\t\t\t\t[bias]=\"-shadowsState().shadowBias\"\n\t\t\t\t\t[mapSize]=\"shadowsState().shadowSize\"\n\t\t\t\t/>\n\t\t\t</ngts-accumulative-shadows>\n\t\t</ngt-group>\n\n\t\t<ngts-environment\n\t\t\t*ngIf=\"environmentState() as environment\"\n\t\t\t[frames]=\"environment.frames\"\n\t\t\t[near]=\"environment.near\"\n\t\t\t[far]=\"environment.far\"\n\t\t\t[resolution]=\"environment.resolution\"\n\t\t\t[background]=\"environment.background\"\n\t\t\t[blur]=\"environment.blur\"\n\t\t\t[map]=\"environment.map\"\n\t\t\t[files]=\"environment.files\"\n\t\t\t[path]=\"environment.path\"\n\t\t\t[preset]=\"environment.preset\"\n\t\t\t[scene]=\"environment.scene\"\n\t\t\t[extensions]=\"environment.extensions\"\n\t\t\t[ground]=\"environment.ground\"\n\t\t\t[encoding]=\"environment.encoding\"\n\t\t/>\n\t`,\n\timports: [\n\t\tNgtArgs,\n\t\tNgIf,\n\t\tNgtsBounds,\n\t\tNgtsStageRefit,\n\t\tNgtsCenter,\n\t\tNgtsContactShadows,\n\t\tNgtsAccumulativeShadows,\n\t\tNgtsRandomizedLights,\n\t\tNgtsEnvironment,\n\t],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage {\n\tNumber = Number;\n\n\tprivate inputs = signalStore<NgtsStageState>({\n\t\tadjustCamera: true,\n\t\tintensity: 0.5,\n\t\tshadows: 'contact',\n\t\tenvironment: 'city',\n\t\tpreset: 'rembrandt',\n\t});\n\n\t@Input({ alias: 'preset' }) set _preset(preset: NgtsStageState['preset']) {\n\t\tthis.inputs.set({ preset });\n\t}\n\n\t@Input({ alias: 'shadows' }) set _shadows(shadows: NgtsStageState['shadows']) {\n\t\tthis.inputs.set({ shadows });\n\t}\n\n\t@Input({ alias: 'adjustCamera' }) set _adjustCamera(adjustCamera: NgtsStageState['adjustCamera']) {\n\t\tthis.inputs.set({ adjustCamera });\n\t}\n\n\t@Input({ alias: 'environment' }) set _environment(environment: NgtsStageState['environment']) {\n\t\tthis.inputs.set({ environment });\n\t}\n\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: NgtsStageState['intensity']) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\n\t@Input({ alias: 'center' }) set _center(center: NgtsStageState['center']) {\n\t\tthis.inputs.set({ center });\n\t}\n\n\t@Output() centered = new EventEmitter<NgtsCenteredEvent>();\n\n\tprivate preset = this.inputs.select('preset');\n\tprivate environment = this.inputs.select('environment');\n\n\tboundingState = signalStore({ radius: 0, width: 0, height: 0, depth: 0 });\n\tconfig = computed(() => {\n\t\tconst preset = this.preset();\n\t\treturn typeof preset === 'string' ? presets[preset] : preset;\n\t});\n\tshadows = this.inputs.select('shadows');\n\tintensity = this.inputs.select('intensity');\n\tadjustCamera = this.inputs.select('adjustCamera');\n\tcenter = this.inputs.select('center');\n\n\tshadowsState = computed(() => {\n\t\tconst shadows = this.shadows();\n\t\tconst {\n\t\t\tbias: shadowBias = -0.0001,\n\t\t\tnormalBias = 0,\n\t\t\tsize: shadowSize = 1024,\n\t\t\toffset: shadowOffset = 0,\n\t\t\t...restProps\n\t\t} = (typeof shadows === 'string' ? {} : shadows || {}) as NgtsStageShadowsState;\n\t\treturn {\n\t\t\tcontactShadow: shadows === 'contact' || restProps.type === 'contact',\n\t\t\taccumulativeShadow: shadows === 'accumulative' || restProps.type === 'accumulative',\n\t\t\tshadowBias,\n\t\t\tnormalBias,\n\t\t\tshadowSize,\n\t\t\tshadowOffset,\n\t\t\t...restProps,\n\t\t};\n\t});\n\tenvironmentState = computed(() => {\n\t\tconst environment = this.environment();\n\t\treturn !environment ? null : typeof environment === 'string' ? { preset: environment } : environment;\n\t});\n\n\tonCentered($event: NgtsCenteredEvent) {\n\t\tconst { width, height, depth, boundingSphere } = $event;\n\t\tthis.boundingState.set({ radius: boundingSphere.radius, width, height, depth });\n\t\tif (this.centered.observed) this.centered.emit($event);\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, extend, injectNgtRef, signalStore, type NgtBeforeRenderEvent } from 'angular-three';\nimport { StarFieldMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nexport type NgtsStarsState = {\n\tradius: number;\n\tdepth: number;\n\tcount: number;\n\tfactor: number;\n\tsaturation: number;\n\tfade: boolean;\n\tspeed: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-stars': NgtsStarsState;\n\t}\n}\n\nconst genStar = (r: number) =>\n\tnew THREE.Vector3().setFromSpherical(\n\t\tnew THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI),\n\t);\n\n@Component({\n\tselector: 'ngts-stars',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"starsRef\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.position\" *args=\"[attributes().positions, 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.color\" *args=\"[attributes().colors, 3]\" />\n\t\t\t\t<ngt-buffer-attribute attach=\"attributes.size\" *args=\"[attributes().sizes, 1]\" />\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[blending]=\"AdditiveBlending\"\n\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t(beforeRender)=\"onBeforeRender($event)\"\n\t\t\t>\n\t\t\t\t<ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"fade()\" />\n\t\t\t</ngt-primitive>\n\t\t</ngt-points>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars {\n\tprivate inputs = signalStore<NgtsStarsState>({\n\t\tradius: 100,\n\t\tdepth: 50,\n\t\tcount: 5000,\n\t\tsaturation: 0,\n\t\tfactor: 4,\n\t\tfade: false,\n\t\tspeed: 1,\n\t});\n\tAdditiveBlending = THREE.AdditiveBlending;\n\tmaterial = new StarFieldMaterial();\n\n\t@Input() starsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'radius' }) set _radius(radius: number) {\n\t\tthis.inputs.set({ radius });\n\t}\n\n\t@Input({ alias: 'depth' }) set _depth(depth: number) {\n\t\tthis.inputs.set({ depth });\n\t}\n\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t@Input({ alias: 'factor' }) set _factor(factor: number) {\n\t\tthis.inputs.set({ factor });\n\t}\n\n\t@Input({ alias: 'saturation' }) set _saturation(saturation: number) {\n\t\tthis.inputs.set({ saturation });\n\t}\n\n\t@Input('fade') set starsFade(fade: boolean) {\n\t\tthis.inputs.set({ fade });\n\t}\n\n\t@Input({ alias: 'speed' }) set _speed(speed: number) {\n\t\tthis.inputs.set({ speed });\n\t}\n\n\tprivate count = this.inputs.select('count');\n\tprivate depth = this.inputs.select('depth');\n\tprivate factor = this.inputs.select('factor');\n\tprivate radius = this.inputs.select('radius');\n\tprivate saturation = this.inputs.select('saturation');\n\n\tfade = this.inputs.select('fade');\n\tattributes = computed(() => {\n\t\tconst positions: number[] = [];\n\t\tconst colors: number[] = [];\n\t\tconst sizes = Array.from({ length: this.count() }, () => (0.5 + 0.5 * Math.random()) * this.factor());\n\t\tconst color = new THREE.Color();\n\t\tlet r = this.radius() + this.depth();\n\t\tconst increment = this.depth() / this.count();\n\t\tfor (let i = 0; i < this.count(); i++) {\n\t\t\tr -= increment * Math.random();\n\t\t\tpositions.push(...genStar(r).toArray());\n\t\t\tcolor.setHSL(i / this.count(), this.saturation(), 0.9);\n\t\t\tcolors.push(color.r, color.g, color.b);\n\t\t}\n\t\treturn {\n\t\t\tpositions: new Float32Array(positions),\n\t\t\tcolors: new Float32Array(colors),\n\t\t\tsizes: new Float32Array(sizes),\n\t\t};\n\t});\n\n\tonBeforeRender({ object, state }: NgtBeforeRenderEvent<InstanceType<typeof StarFieldMaterial>>) {\n\t\tobject.uniforms['time'].value = state.clock.getElapsedTime() * this.inputs.get('speed');\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { is, signalStore, type NgtRef } from 'angular-three';\nimport type { WireframeMaterialState } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nexport type NgtsWireframeState = {\n\tgeometry?: NgtRef<THREE.BufferGeometry>;\n\tsimplify: boolean;\n} & Required<WireframeMaterialState>;\n\n@Directive()\nexport abstract class NgtsWireframeInput {\n\tinputs = signalStore<NgtsWireframeState>({\n\t\tsimplify: false,\n\t\tstrokeOpacity: 1,\n\t\tfillOpacity: 0.25,\n\t\tfillMix: 0,\n\t\tthickness: 0.05,\n\t\tcolorBackfaces: false,\n\t\tdashInvert: true,\n\t\tdash: false,\n\t\tdashRepeats: 4,\n\t\tdashLength: 0.5,\n\t\tsqueeze: false,\n\t\tsqueezeMin: 0.2,\n\t\tsqueezeMax: 1,\n\t\tstroke: new THREE.Color('#ff0000'),\n\t\tbackfaceStroke: new THREE.Color('#0000ff'),\n\t\tfill: new THREE.Color('#00ff00'),\n\t});\n\n\t@Input({ alias: 'geometry' }) set _geometry(geometry: NgtRef<THREE.BufferGeometry>) {\n\t\tthis.inputs.set({ geometry });\n\t}\n\n\t@Input({ alias: 'simplify' }) set _simplify(simplify: boolean) {\n\t\tthis.inputs.set({ simplify });\n\t}\n\n\t@Input({ alias: 'fillOpacity' }) set _fillOpacity(fillOpacity: number) {\n\t\tthis.inputs.set({ fillOpacity });\n\t}\n\n\t@Input({ alias: 'fillMix' }) set _fillMix(fillMix: number) {\n\t\tthis.inputs.set({ fillMix });\n\t}\n\n\t@Input({ alias: 'strokeOpacity' }) set _strokeOpacity(strokeOpacity: number) {\n\t\tthis.inputs.set({ strokeOpacity });\n\t}\n\n\t@Input({ alias: 'thickness' }) set _thickness(thickness: number) {\n\t\tthis.inputs.set({ thickness });\n\t}\n\n\t@Input({ alias: 'colorBackfaces' }) set _colorBackfaces(colorBackfaces: boolean) {\n\t\tthis.inputs.set({ colorBackfaces });\n\t}\n\n\t@Input({ alias: 'dashInvert' }) set _dashInvert(dashInvert: boolean) {\n\t\tthis.inputs.set({ dashInvert });\n\t}\n\n\t@Input({ alias: 'dash' }) set _dash(dash: boolean) {\n\t\tthis.inputs.set({ dash });\n\t}\n\n\t@Input({ alias: 'dashRepeats' }) set _dashRepeats(dashRepeats: number) {\n\t\tthis.inputs.set({ dashRepeats });\n\t}\n\n\t@Input({ alias: 'dashLength' }) set _dashLength(dashLength: number) {\n\t\tthis.inputs.set({ dashLength });\n\t}\n\n\t@Input({ alias: 'squeeze' }) set _squeeze(squeeze: boolean) {\n\t\tthis.inputs.set({ squeeze });\n\t}\n\n\t@Input({ alias: 'squeezeMin' }) set _squeezeMin(squeezeMin: number) {\n\t\tthis.inputs.set({ squeezeMin });\n\t}\n\n\t@Input({ alias: 'squeezeMax' }) set _squeezeMax(squeezeMax: number) {\n\t\tthis.inputs.set({ squeezeMax });\n\t}\n\n\t@Input({ alias: 'stroke' }) set _stroke(stroke: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ stroke });\n\t}\n\n\t@Input({ alias: 'backfaceStroke' }) set _backfaceStroke(backfaceStroke: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ backfaceStroke });\n\t}\n\n\t@Input({ alias: 'fill' }) set _fill(fill: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ fill });\n\t}\n\n\tsimplify = this.inputs.select('simplify');\n\tgeometry = this.inputs.select('geometry');\n\tcustomGeometry = computed(() => {\n\t\tconst geometry = this.geometry();\n\t\treturn is.ref(geometry) ? geometry.nativeElement : geometry;\n\t});\n\n\tstrokeOpacity = this.inputs.select('strokeOpacity');\n\tfillOpacity = this.inputs.select('fillOpacity');\n\tfillMix = this.inputs.select('fillMix');\n\tthickness = this.inputs.select('thickness');\n\tcolorBackfaces = this.inputs.select('colorBackfaces');\n\tdashInvert = this.inputs.select('dashInvert');\n\tdash = this.inputs.select('dash');\n\tdashRepeats = this.inputs.select('dashRepeats');\n\tdashLength = this.inputs.select('dashLength');\n\tsqueeze = this.inputs.select('squeeze');\n\tsqueezeMin = this.inputs.select('squeezeMin');\n\tsqueezeMax = this.inputs.select('squeezeMax');\n\tstroke = this.inputs.select('stroke');\n\tbackfaceStroke = this.inputs.select('backfaceStroke');\n\tfill = this.inputs.select('fill');\n\n\tmaterialState = computed(() => {\n\t\tconst [\n\t\t\tstrokeOpacity,\n\t\t\tfillOpacity,\n\t\t\tfillMix,\n\t\t\tthickness,\n\t\t\tcolorBackfaces,\n\t\t\tdashInvert,\n\t\t\tdash,\n\t\t\tdashRepeats,\n\t\t\tdashLength,\n\t\t\tsqueeze,\n\t\t\tsqueezeMin,\n\t\t\tsqueezeMax,\n\t\t\tstroke,\n\t\t\tbackfaceStroke,\n\t\t\tfill,\n\t\t] = [\n\t\t\tthis.strokeOpacity(),\n\t\t\tthis.fillOpacity(),\n\t\t\tthis.fillMix(),\n\t\t\tthis.thickness(),\n\t\t\tthis.colorBackfaces(),\n\t\t\tthis.dashInvert(),\n\t\t\tthis.dash(),\n\t\t\tthis.dashRepeats(),\n\t\t\tthis.dashLength(),\n\t\t\tthis.squeeze(),\n\t\t\tthis.squeezeMin(),\n\t\t\tthis.squeezeMax(),\n\t\t\tthis.stroke(),\n\t\t\tthis.backfaceStroke(),\n\t\t\tthis.fill(),\n\t\t];\n\t\treturn {\n\t\t\tstrokeOpacity,\n\t\t\tfillOpacity,\n\t\t\tfillMix,\n\t\t\tthickness,\n\t\t\tcolorBackfaces,\n\t\t\tdashInvert,\n\t\t\tdash,\n\t\t\tdashRepeats,\n\t\t\tdashLength,\n\t\t\tsqueeze,\n\t\t\tsqueezeMin,\n\t\t\tsqueezeMax,\n\t\t\tstroke,\n\t\t\tbackfaceStroke,\n\t\t\tfill,\n\t\t};\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, effect, inject, signal, untracked } from '@angular/core';\nimport { extend, injectNgtRef, is, type NgtRef } from 'angular-three';\nimport {\n\tWireframeMaterial,\n\tWireframeMaterialShaders,\n\tinjectNgtsWireframeUniforms,\n\tsetWireframeOverride,\n} from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\nimport { NgtsWireframeInput, type NgtsWireframeState } from './wireframe-input';\n\nextend({ WireframeMaterial, Object3D });\n\ntype WithGeometry =\n\t| THREE.Mesh<THREE.BufferGeometry, THREE.Material>\n\t| THREE.Line<THREE.BufferGeometry, THREE.Material>\n\t| THREE.Points<THREE.BufferGeometry, THREE.Material>;\n\nfunction isWithGeometry(object?: THREE.Object3D | null): object is WithGeometry {\n\treturn !!(object as THREE.Mesh)?.geometry;\n}\n\nfunction isWireframeGeometry(geometry: any): geometry is THREE.WireframeGeometry {\n\treturn (geometry as THREE.WireframeGeometry).type === 'WireframeGeometry';\n}\n\nfunction getUniforms() {\n\tconst u: Record<string, any> = {};\n\tfor (const key in WireframeMaterialShaders.uniforms) {\n\t\tu[key] = { value: (WireframeMaterialShaders.uniforms as any)[key] };\n\t}\n\treturn u;\n}\n\nfunction getBarycentricCoordinates(geometry: THREE.BufferGeometry, removeEdge?: boolean) {\n\tconst position = geometry.getAttribute('position');\n\tconst count = position.count;\n\n\tconst barycentric: number[] = [];\n\n\tfor (let i = 0; i < count; i++) {\n\t\tconst even = i % 2 === 0;\n\t\tconst Q = removeEdge ? 1 : 0;\n\t\tif (even) {\n\t\t\tbarycentric.push(0, 0, 1, 0, 1, 0, 1, 0, Q);\n\t\t} else {\n\t\t\tbarycentric.push(0, 1, 0, 0, 0, 1, 1, 0, Q);\n\t\t}\n\t}\n\n\treturn new THREE.BufferAttribute(Float32Array.from(barycentric), 3);\n}\n\nfunction getInputGeometry(inputGeometry: NgtRef<THREE.BufferGeometry | THREE.Object3D>) {\n\tconst geo = (is.ref(inputGeometry) ? inputGeometry.nativeElement : inputGeometry)!;\n\n\tif (!is.geometry(geo)) {\n\t\t// Disallow WireframeGeometry\n\t\tif (isWireframeGeometry(geo)) {\n\t\t\tthrow new Error('Wireframe: WireframeGeometry is not supported.');\n\t\t}\n\n\t\tconst parent = geo.parent;\n\t\tif (isWithGeometry(parent)) {\n\t\t\t// Disallow WireframeGeometry\n\t\t\tif (isWireframeGeometry(parent.geometry)) {\n\t\t\t\tthrow new Error('Wireframe: WireframeGeometry is not supported.');\n\t\t\t}\n\n\t\t\treturn parent.geometry;\n\t\t}\n\t} else {\n\t\treturn geo;\n\t}\n\n\treturn;\n}\n\nfunction setBarycentricCoordinates(geometry: THREE.BufferGeometry, simplify: boolean) {\n\tif (geometry.index) {\n\t\tconsole.warn('[NGT]: ngts-wireframe requires non-indexed geometry, converting to non-indexed geometry.');\n\t\tconst nonIndexedGeo = geometry.toNonIndexed();\n\n\t\tgeometry.copy(nonIndexedGeo);\n\t\tgeometry.setIndex(null);\n\t}\n\n\tconst newBarycentric = getBarycentricCoordinates(geometry, simplify);\n\n\tgeometry.setAttribute('barycentric', newBarycentric);\n}\n\n@Component({\n\tselector: 'ngts-wireframe-without-custom-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-object3D [ref]=\"objectRef\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsWireframeWithoutCustomGeometry {\n\tobjectRef = injectNgtRef<THREE.Object3D>();\n\n\tprivate wireframeInput = inject(NgtsWireframeInput);\n\tprivate uniforms = getUniforms();\n\n\tconstructor() {\n\t\tinjectNgtsWireframeUniforms(() => this.uniforms, this.wireframeInput.materialState);\n\t\teffect((onCleanup) => {\n\t\t\tconst object = this.objectRef.nativeElement;\n\t\t\tif (!object) return;\n\t\t\tconst simplify = this.wireframeInput.simplify();\n\t\t\tconst geometry = getInputGeometry(object);\n\t\t\tif (!geometry) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'[NGT]: ngts-wireframe must be a child of a Mesh, Line or Points object or specify a geometry prop.',\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst cloned = geometry.clone();\n\n\t\t\tsetBarycentricCoordinates(geometry, simplify);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tgeometry.copy(cloned);\n\t\t\t\tcloned.dispose();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst object = this.objectRef.nativeElement;\n\t\t\tif (!object) return;\n\t\t\tconst parentMesh = object.parent as THREE.Mesh<THREE.BufferGeometry, THREE.Material>;\n\t\t\tconst cloned = parentMesh.material.clone();\n\n\t\t\tsetWireframeOverride(parentMesh.material, this.uniforms);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tparentMesh.material.dispose();\n\t\t\t\tparentMesh.material = cloned;\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-wireframe-with-custom-geometry',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh *ngIf=\"drawnGeometry() as geometry\" [geometry]=\"geometry\">\n\t\t\t<ngt-wireframe-material\n\t\t\t\tattach=\"material\"\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t[polygonOffsetFactor]=\"-4\"\n\t\t\t\t[extensions]=\"{ derivatives: true, fragDepth: false, drawBuffers: false, shaderTextureLOD: false }\"\n\t\t\t\t[strokeOpacity]=\"wireframeInput.strokeOpacity()\"\n\t\t\t\t[fillOpacity]=\"wireframeInput.fillOpacity()\"\n\t\t\t\t[fillMix]=\"wireframeInput.fillMix()\"\n\t\t\t\t[thickness]=\"wireframeInput.thickness()\"\n\t\t\t\t[colorBackfaces]=\"wireframeInput.colorBackfaces()\"\n\t\t\t\t[dashInvert]=\"wireframeInput.dashInvert()\"\n\t\t\t\t[dash]=\"wireframeInput.dash()\"\n\t\t\t\t[dashRepeats]=\"wireframeInput.dashRepeats()\"\n\t\t\t\t[dashLength]=\"wireframeInput.dashLength()\"\n\t\t\t\t[squeeze]=\"wireframeInput.squeeze()\"\n\t\t\t\t[squeezeMin]=\"wireframeInput.squeezeMin()\"\n\t\t\t\t[squeezeMax]=\"wireframeInput.squeezeMax()\"\n\t\t\t\t[stroke]=\"wireframeInput.stroke()\"\n\t\t\t\t[backfaceStroke]=\"wireframeInput.backfaceStroke()\"\n\t\t\t\t[fill]=\"wireframeInput.fill()\"\n\t\t\t/>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsWireframeWithCustomGeometry {\n\tDoubleSide = THREE.DoubleSide;\n\n\twireframeInput = inject(NgtsWireframeInput);\n\tdrawnGeometry = signal<THREE.BufferGeometry>(this.wireframeInput.customGeometry()!);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [simplify, customGeometry] = [this.wireframeInput.simplify(), this.wireframeInput.geometry()];\n\t\t\tconst geometry = getInputGeometry(customGeometry!);\n\t\t\tif (!geometry) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'[NGT]: ngts-wireframe [geometry] input must be a BufferGeometry or a ref to a BufferGeometry.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetBarycentricCoordinates(geometry, simplify);\n\n\t\t\tif (is.ref(customGeometry)) {\n\t\t\t\tuntracked(() => this.drawnGeometry.set(geometry));\n\t\t\t}\n\t\t});\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-wireframe': NgtsWireframeState;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-wireframe',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-wireframe-with-custom-geometry *ngIf=\"geometry(); else withoutCustomGeometry\" />\n\t\t<ng-template #withoutCustomGeometry>\n\t\t\t<ngts-wireframe-without-custom-geometry />\n\t\t</ng-template>\n\t`,\n\timports: [NgtsWireframeWithoutCustomGeometry, NgtsWireframeWithCustomGeometry, NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tproviders: [{ provide: NgtsWireframeInput, useExisting: NgtsWireframe }],\n})\nexport class NgtsWireframe extends NgtsWireframeInput {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["LIST_URL","defaultState"],"mappings":";;;;;;;;;;;;AAGA,SAAS,OAAO,CAAC,MAAW,EAAA;IAC3B,OAAO,MAAM,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,MAAW,EAAA;AAC9B,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,CAAC;AAED;MACa,mBAAmB,CAAA;AAiB/B,IAAA,WAAA,CAAY,QAA6B,EAAE,KAAkB,EAAE,MAAc,IAAI,EAAA;AAChF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;QAGpB,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;AAC/G,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AAC3E,YAAA,IAAI,EAAE,MAAM;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AAC3E,YAAA,IAAI,EAAE,MAAM;AACZ,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,MAAM,KAAI;;AAE3C,YAAA,MAAM,CAAC,YAAY;gBAClB,qBAAqB;oBACrB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,oBAAA,6DAA6D,CAAC;;YAG/D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACjE,YAAA,MAAM,CAAC,cAAc;gBACpB,qBAAqB;oBACrB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;oBACzC,yEAAyE;oBACzE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAA,CAAA;;QAEI,CAAC;;;YAIN,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3D,SAAC,CAAC;KACF;IAED,KAAK,GAAA;QACJ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,aAAA;AAAM,iBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1D,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAED,OAAO,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACxE;IAED,MAAM,GAAA;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACtE;AAED,IAAA,SAAS,CAAC,MAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACrB;AAED,IAAA,MAAM,CAAC,MAAoB,EAAE,WAAW,GAAG,GAAG,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;;AAEzB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;;AAEtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC7F,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;;AAE/F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;KAC9B;AACD;;AC7GD,MAAM,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAsC9C,MAAA,CAAC,gCAAgC,EAAE,iCAAiC,CAAC,GAAG,oBAAoB,CACxG,CAAC,OAAgC,KAAK,OAAO,CAAC,GAAG,EACjD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC,EAAE,EACnE;MA0BW,uBAAuB,CAAA;;IAqBnC,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAAkC,SAAS,CAAC,QAAiB,EAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;;IAGD,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;;IAGD,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;;IAGD,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;;IAGD,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;;IAGD,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;AAoFD,IAAA,WAAA,GAAA;QA5JQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAA+B;AAC1D,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE,KAAK;AACf,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,IAAI,CAAC;QAC1B,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;QAEH,IAAsB,CAAA,sBAAA,GAAG,YAAY,EAAe,CAAC;QAyD9D,IAAO,CAAA,OAAA,GAAG,YAAY,EAAsF,CAAC;QAErG,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE9C,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAE5G,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AACnB,YAAA,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG;gBAClE,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,EAAE;aACb,CAAC;AACF,YAAA,MAAM,GAAG,GAAG;gBACX,MAAM,EAAE,IAAI,GAAG,EAAmD;gBAClE,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AACxD,gBAAA,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa;gBACzC,KAAK,EAAE,MAAK;AACX,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;wBAAE,OAAO;;oBAExC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,oBAAA,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,oBAAA,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,oBAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;iBACd;AACD,gBAAA,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,KAAI;AACtB,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;wBAAE,OAAO;;oBAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,oBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAClB,wBAAA,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,wBAAA,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,qBAAA;AAAM,yBAAA;AACN,wBAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7E,wBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACrF,qBAAA;;oBAGD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;;oBAEzD,GAAG,CAAC,OAAO,EAAE,CAAC;;oBAGd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,wBAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;wBAChD,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,qBAAA;;oBAGD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;;oBAE1D,GAAG,CAAC,MAAM,EAAE,CAAC;iBACb;aACD,CAAC;AAEF,YAAA,OAAO,GAAG,CAAC;AACZ,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,SAAS,GAAA;QAChB,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;AAClB,YAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrB,SAAC,CAAC,CAAC;KACH;IAEO,cAAc,GAAA;QACrB,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,IAAI,CAAC,GAAG;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACnB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa;aAC1B,CAAC;AACF,YAAA,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAEhC,GAAG,CAAC,KAAK,EAAE,CAAC;;YAEZ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;AAAE,gBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,kBAAkB,CAAC,MAAK;YACvB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE;gBAC7F,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,EAAE,CAAC;AACZ,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GApMW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAHxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,SAAA,EAAA,CAAC,iCAAiC,EAAE,CAAC,EAlBtC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAIW,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAxBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,iCAAiC,EAAE,CAAC;oBAChD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAmBS,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAG0B,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAKK,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKS,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAKK,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAKQ,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAKE,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKW,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAKM,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAKM,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;;;AC5J/B,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;MA2DpD,oBAAoB,CAAA;AAkBhC;AACgH;IAChH,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAkC,SAAS,CAAC,QAA2C,EAAA;QACtF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;;IAGD,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;;IAGD,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;;IAGD,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;;IAGD,IAA8B,KAAK,CAAC,IAAY,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;;IAGD,IAA8B,KAAK,CAAC,IAAY,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAA8B,KAAK,CAAC,IAAY,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAA6B,IAAI,CAAC,GAAW,EAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;AAyDD,IAAA,WAAA,GAAA;QArIQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAA4B;AACvD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,OAAO,EAAE,GAAG;AACZ,SAAA,CAAC,CAAC;QACH,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;QAEH,IAAS,CAAA,SAAA,GAAG,YAAY,EAAS,CAAC;QA8DnC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAM,CAAA,MAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAExE,IAAU,CAAA,UAAA,GAAG,gCAAgC,EAAE,CAAC;QAExD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE7G,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;YACnB,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG;gBACnD,IAAI,CAAC,SAAS,CAAC,aAAa;gBAC5B,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,MAAK;AACnB,gBAAA,IAAI,MAAM,EAAE;AACX,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAA2B,CAAC;AAC3D,wBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;4BAC5B,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CACrD,CAAC;AACF,yBAAA;AAAM,6BAAA;4BACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAChE,4BAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;4BACxC,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EACnD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CACzB,CAAC;AACF,yBAAA;AACD,qBAAA;AACD,iBAAA;AACF,aAAC,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACnB,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,cAAc,EAAE,CAAC;KACtB;IAEO,cAAc,GAAA;AACrB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AACpB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC,YAAA,IAAI,UAAU,EAAE;AACf,gBAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GApJW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAjBtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;EAaT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,0FAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGhB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;oBAC7B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAkBS,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAG0B,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAKQ,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAKI,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAKM,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAKS,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAKI,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAKS,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAKA,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAKS,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAKG,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAKM,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAKK,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;;;ACxIxB,MAAM,UAAU,GAAG,CAAC,CAAS,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAiB3E,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;MAgB1B,YAAY,CAAA;IAKxB,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAuC,cAAc,CAAC,aAAsB,EAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KACnC;AAQD,IAAA,WAAA,GAAA;QAtBA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAEJ,QAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAc7F,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAiB,CAAC;QACzC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAGnD,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO;AACnB,YAAA,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1D,YAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAoB,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,oBAAA,QAAQ,CAAC,MAAM,CACd,CAAC,EAAE,EACH,CAAC,GAAG,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAC9C,CAAC,GAAG,QAAQ,GAAG,MAAM,EACrB,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,CACxB,CAAC;AACF,iBAAA;AACD,aAAA;YAED,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,oBAAoB,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACH;8GA7CW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAXd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,YAAY,EAAA,UAAA,EAAA,CAAA;kBAdxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAM+B,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIS,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIW,cAAc,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;;;AC7ClC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACrC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAe5C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;MAYL,YAAY,CAAA;IAGxB,IAAgD,OAAO,CAAC,MAAmC,EAAA;QAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;AAUD,IAAA,WAAA,GAAA;QAdQ,IAAM,CAAA,MAAA,GAAG,WAAW,EAAqB,CAAC;QAMlD,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;QACzB,IAAS,CAAA,SAAA,GAAG,YAAY,EAAyB,CAAC;QAClD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,cAAc,GAAA;QACrB,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO;AACnB,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,kBAAkB,CAAC,MAAK;YACvB,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAExG,YAAA,IAAI,MAAM,EAAE;AACX,gBAAA,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErC,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CACvD,CAAC;AACF,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GA9CW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAPd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAIgD,OAAO,EAAA,CAAA;sBAAtD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;;;ACX3C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAiBlB,MAAM,MAAM,GAAG,CAAC,GAAQ,KAAwB,GAAG,IAAK,GAAkB,CAAC,MAAM,CAAC;AAElF,SAAS,MAAM,CAAC,CAAgB,EAAE,CAAgB,EAAE,GAAW,EAAA;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5F,CAAC;AAED,SAAS,IAAI,CAAC,CAAgB,EAAE,CAAgB,EAAE,MAAc,EAAE,KAAa,EAAA;IAC9E,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAoBY,MAAA,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,oBAAoB,CAAC,CAAC,MAAkB,KAAK,MAAM,CAAC,GAAG,EAAE;AACnH,IAAA,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC;AACpC,CAAA,EAAE;MAaU,UAAU,CAAA;IAYtB,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA6B,IAAI,CAAC,GAAY,EAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAA8B,KAAK,CAAC,IAAa,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAAiC,QAAQ,CAAC,OAAgB,EAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA6B,IAAI,CAAC,GAAW,EAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;AA+JD,IAAA,WAAA,GAAA;QAhMQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAAkB;AAC7C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,GAAG,EAAE,IAAI;AACT,SAAA,CAAC,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,YAAY,EAAS,CAAC;AA0BjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB,CAAC;QAE9C,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAqC,CAAC;QAC7E,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExC,IAAO,CAAA,OAAA,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjG,IAAI,CAAA,IAAA,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC5E,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAE/B,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AACnB,YAAA,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACvD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG;gBACvD,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,OAAO,EAAE;aACd,CAAC;AAEF,YAAA,SAAS,OAAO,GAAA;AACf,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,gBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;sBACpD,OAAO,GAAG,CAAC;sBACX,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC3D,MAAM,gBAAgB,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AACzG,gBAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;gBACxE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACvC;YAED,OAAO;gBACN,OAAO;AACP,gBAAA,OAAO,CAAC,MAAoC,EAAA;oBAC3C,IAAI,MAAM,CAAC,MAAM,CAAC;AAAE,wBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,yBAAA;AACJ,wBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC;AACjD,wBAAA,IAAI,CAAC,MAAM;AAAE,4BAAA,OAAO,IAAI,CAAC;AACzB,wBAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,wBAAA,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1B,qBAAA;AACD,oBAAA,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;wBAClB,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;wBAC3C,GAAG,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAChF,qBAAA;AAED,oBAAA,IAAI,QAAQ,EAAE,WAAW,CAAC,IAAI,KAAK,+BAA+B,EAAE;;AAEnE,wBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;wBAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpG,wBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACtD,wBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,qBAAA;AAED,oBAAA,OAAO,IAAI,CAAC;iBACZ;gBACD,IAAI,GAAA;AACH,oBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/B,oBAAA,IAAI,QAAQ;AAAE,wBAAA,QAAQ,CAAC,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAC;AACnD,oBAAA,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAC;AAC7B,oBAAA,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;oBAC5B,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAChC,oBAAA,IAAI,QAAQ;wBAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAChC,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,OAAO,IAAI,CAAC;iBACZ;AACD,gBAAA,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAA6E,EAAA;oBACjG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,oBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAE7B,oBAAA,IAAI,MAAM,EAAE;wBACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAC1B,qBAAA;AAAM,yBAAA;AACN,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,qBAAA;AAED,oBAAA,IAAI,OAAO,EAAE;AACZ,wBAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,qBAAA;AAAM,yBAAA;wBACN,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AACjC,qBAAA;AAED,oBAAA,OAAO,IAAI,CAAC;iBACZ;gBACD,GAAG,GAAA;oBACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,oBAAA,IAAI,QAAQ;wBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAElD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;oBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE3F,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAExB,oBAAA,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAClC,wBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAE3B,wBAAA,IAAI,SAAS,GAAG,CAAC,EAChB,QAAQ,GAAG,CAAC,CAAC;AACd,wBAAA,MAAM,QAAQ,GAAG;4BAChB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;yBAClD,CAAC;;AAEF,wBAAA,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC/C,wBAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACzB,4BAAA,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;4BAC1C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,yBAAA;wBACD,SAAS,IAAI,CAAC,CAAC;wBACf,QAAQ,IAAI,CAAC,CAAC;AACd,wBAAA,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;AAC/D,wBAAA,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC7D,wBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;wBAC3D,IAAI,CAAC,OAAO,EAAE;AACb,4BAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;4BACxB,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAChC,yBAAA;AACD,qBAAA;AAED,oBAAA,IAAI,OAAO,EAAE;AACZ,wBAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,qBAAA;AAAM,yBAAA;wBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,wBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,wBAAA,IAAI,QAAQ,EAAE;4BACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACjC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClB,yBAAA;AACD,qBAAA;oBAED,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B,qBAAA;AACD,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,OAAO,IAAI,CAAC;iBACZ;aACD,CAAC;AACH,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,oBAAoB,GAAA;AAC3B,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,YAAA,IAAI,QAAQ,EAAE;AACb,gBAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AACxD,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC7C,gBAAA,SAAS,CAAC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjE,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,MAAK;YACX,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG;gBACjC,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnB,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,IAAI,EAAE;aACX,CAAC;AAEF,YAAA,IAAI,OAAO,IAAI,KAAK,EAAE,KAAK,CAAC,EAAE;gBAC7B,GAAG,CAAC,OAAO,EAAE,CAAC;AACd,gBAAA,IAAI,GAAG;oBAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACnB,gBAAA,IAAI,IAAI;oBAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACrB,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;AACnB,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChC,YAAA,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG;AACxD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjB,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,UAAU,EAAE;aACjB,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3B,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5F,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1C,gBAAA,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;oBAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChC,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAChC,iBAAA;gBAED,IAAI,CAAC,QAAQ,EAAE;oBACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,iBAAA;AAAM,qBAAA;oBACN,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACzC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClB,iBAAA;AAED,gBAAA,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBAAE,OAAO;gBACnG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAE,OAAO;AAClG,gBAAA,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;oBAAE,OAAO;AAC1E,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GAzQW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAHX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,EAAE,CAAC,EALzB,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAIW,UAAU,EAAA,UAAA,EAAA,CAAA;kBAXtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,oBAAoB,EAAE,CAAC;oBACnC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAWS,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAE2B,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIE,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIO,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIS,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIK,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIG,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIb,MAAM,EAAA,CAAA;sBAAf,MAAM;;;MC3FK,eAAe,CAAA;IAY3B,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAA+B,MAAM,CAAC,KAAc,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAsC,aAAa,CAAC,YAAoB,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAClC;IAED,IAAwC,eAAe,CAAC,cAAsB,EAAA;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KACpC;IAED,IAAuC,cAAc,CAAC,aAAqB,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KACnC;AAoBD,IAAA,WAAA,GAAA;QAjEQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAAuB;AAClD,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,cAAc,EAAE,GAAG;AACnB,YAAA,aAAa,EAAE,GAAG;AAClB,SAAA,CAAC,CAAC;QAsCK,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAqC,CAAC;AAE7E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC5D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACnC,YAAA,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;gBACnC,OAAO,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;AAClB,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC;KACjB;IAEO,YAAY,GAAA;QACnB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAI;AACvC,YAAA,MAAM,CACL,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,EAC5F,SAAS,EACT,MAAM,EACN,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAEpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;YAC9F,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;AAE1F,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAClB,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,EAC9B,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAC5B,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAC7B,CAAC;AAEF,YAAA,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AACjF,aAAA;AACF,SAAC,CAAC,CAAC;KACH;IAEO,SAAS,GAAA;AAChB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,YAAA,IAAI,QAAQ,EAAE;AACb,gBAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GA1GW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,aAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,eAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;0EAamC,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIE,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIU,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIG,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIQ,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIK,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIW,aAAa,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;gBAIQ,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;gBAIK,cAAc,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;;;ACxElC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;MA8DL,UAAU,CAAA;IAUtB,IAA6B,IAAI,CAAC,GAAY,EAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAA+B,MAAM,CAAC,KAAc,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAgC,OAAO,CAAC,MAAe,EAAA;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA8B,KAAK,CAAC,IAAa,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAA+B,MAAM,CAAC,KAAc,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA8B,KAAK,CAAC,IAAa,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAAkC,SAAS,CAAC,QAAiB,EAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAkC,SAAS,CAAC,QAAiB,EAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAkC,SAAS,CAAC,QAAiB,EAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAiC,QAAQ,CAAC,OAAgB,EAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAiC,QAAQ,CAAC,OAAgB,EAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAkC,SAAS,CAAC,QAAa,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;AAID,IAAA,WAAA,GAAA;QA3DQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAAkB;AAC7C,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,YAAY,EAAS,CAAC;QAC3C,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;AAkDvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB,CAAC;QAG1D,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAEO,WAAW,GAAA;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE/C,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,CACL,KAAK,EACL,KAAK,EACL,SAAS,EACT,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACzF,GAAG;gBACH,IAAI,CAAC,QAAQ,CAAC,aAAa;gBAC3B,IAAI,CAAC,QAAQ,CAAC,aAAa;gBAC3B,IAAI,CAAC,SAAS,CAAC,aAAa;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,gBAAA,aAAa,EAAE;aACf,CAAC;AAEF,YAAA,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;AAChC,gBAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC7B,gBAAA,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5D,gBAAA,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACnC,gBAAA,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AAClC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEzD,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,OAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAC5C,OAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAC5C,OAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAC5C,CAAC;AAEF,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAClB,MAAM,EAAE,SAAS,CAAC,MAAO;AACzB,wBAAA,SAAS,EAAE,SAAS;wBACpB,KAAK;wBACL,MAAM;wBACN,KAAK;AACL,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,cAAc,EAAE,MAAM;AACtB,qBAAA,CAAC,CAAC;AACH,iBAAA;AACD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GAtHW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAXZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,UAAU,EAAA,UAAA,EAAA,CAAA;kBAdtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAOS,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAIuB,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIQ,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIO,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAII,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIO,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIK,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIU,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIM,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIM,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIK,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIM,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIO,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIlB,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;ACtHR,MAAM,SAAS,GAAG,kGAAkG,CAAC;AACpH,uBAA+B,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;AAE1D,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;MAqDhD,SAAS,CAAA;AA/BtB,IAAA,WAAA,GAAA;QAgCS,IAAM,CAAA,MAAA,GAAG,WAAW,CAAiB;AAC5C,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;QAEM,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;QAkClC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjE,IAAM,CAAA,MAAA,GAAG,QAAQ,CAAC,MACjB,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM;AAClD,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AAClD,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AAClD,YAAA,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/F,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;SAC/D,CAAC,CAAC,CACH,CAAC;AAUF,KAAA;IA5DA,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA+B,MAAM,CAAC,KAAgC,EAAA;QACrE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAmC,UAAU,CAAC,SAAkB,EAAA;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;AAqBD,IAAA,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAA+B,EAAA;AAC5D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACxC,YAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YACvD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAChC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAC5F,CAAC;AACH,SAAC,CAAC,CAAC;KACH;8GAzEW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EA5BX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;EAwBT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,mHAAE,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGlB,SAAS,EAAA,UAAA,EAAA,CAAA;kBA/BrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;oBACrC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;8BAaS,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAE2B,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAII,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIS,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIK,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAII,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIU,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;;;AC1F9B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC;MAkDlD,kBAAkB,CAAA;IAkB9B,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA8B,KAAK,CAAC,IAAY,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAA6B,IAAI,CAAC,GAAW,EAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAAgC,OAAO,CAAC,MAAe,EAAA;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA+B,MAAM,CAAC,KAAsC,EAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA+B,MAAM,CAAC,KAAgC,EAAA;QACrE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAqC,YAAY,CAAC,WAAmB,EAAA;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;AA4ED,IAAA,WAAA,GAAA;QA3IQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAA0B;AACrD,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,SAAA,CAAC,CAAC;QAEM,IAAiB,CAAA,iBAAA,GAAG,YAAY,EAAS,CAAC;QAkDnD,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;QAEJ,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QAEjC,IAAe,CAAA,eAAA,GAAG,YAAY,EAAsB,CAAC;QAE7C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;AACK,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;QAEH,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAE9C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACzE,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC7E,YAAA,gBAAgB,CAAC,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YACxF,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5G,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,YAAA,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3D,YAAA,aAAa,CAAC,eAAe,GAAG,CAAC,MAAM,KAAI;gBAC1C,MAAM,CAAC,QAAQ,GAAG;oBACjB,GAAG,MAAM,CAAC,QAAQ;oBAClB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;iBACzC,CAAC;gBACF,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACpD,CAAe,aAAA,CAAA;AACf,gBAAA,CAAA;;AAEa,gBAAA,CAAA,CACb,CAAC;gBACF,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACpD,4CAA4C;;AAE5C,gBAAA,gEAAgE,CAChE,CAAC;AACH,aAAC,CAAC;YAEF,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAC9E,MAAM,oBAAoB,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC1E,oBAAoB,CAAC,SAAS,GAAG,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YAE1E,OAAO;gBACN,YAAY;gBACZ,aAAa;gBACb,aAAa;gBACb,SAAS;gBACT,sBAAsB;gBACtB,oBAAoB;gBACpB,gBAAgB;aAChB,CAAC;AACH,SAAC,CAAC,CAAC;AAGF,QAAA,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACpD;AAEO,IAAA,YAAY,CAAC,KAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAkB,EAAA;QAChE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACzE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QACxD,IAAI,YAAY,KAAK,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE;AAC5D,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3C,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,YAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACvD,YAAA,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC;AACvC,YAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACjC,YAAA,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC/B,YAAA,KAAK,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;AAEjD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,IAAI,MAAM;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAEzC,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;AACrC,YAAA,KAAK,EAAE,CAAC;AACR,SAAA;KACD;AAEO,IAAA,WAAW,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAChG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;AAExD,QAAA,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AAEzB,QAAA,SAAS,CAAC,QAAQ,GAAG,sBAAsB,CAAC;QAC5C,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;AACzE,QAAA,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAE9D,QAAA,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEnC,QAAA,SAAS,CAAC,QAAQ,GAAG,oBAAoB,CAAC;QAC1C,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC3E,QAAA,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAE5D,QAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACjC,QAAA,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEnC,QAAA,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;KAC1B;8GA7LW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EArBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAiBS,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAE2B,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAII,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIO,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAII,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIK,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIS,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIU,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIE,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIK,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIW,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIO,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;;;AC/HnB,MAAA,mBAAmB,GAAG;AAClC,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,KAAK,EAAE,2BAA2B;AAClC,IAAA,KAAK,EAAE,wBAAwB;AAC/B,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,MAAM,EAAE,wBAAwB;AAChC,IAAA,MAAM,EAAE,sBAAsB;AAC9B,IAAA,SAAS,EAAE,2BAA2B;;;MCajB,oBAAoB,CAAA;AAD1C,IAAA,WAAA,GAAA;AAEC,QAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAA4B,EAAE,CAAC,CAAC;QA0DpD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,OAAO;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,SAAA,CAAC,CAAC,CAAC;AACJ,KAAA;IA9EA,IAAgC,OAAO,CAAC,MAA2C,EAAA;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA8B,KAAK,CAAC,IAAuC,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAA6B,IAAI,CAAC,GAAqC,EAAA;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAAoC,WAAW,CAAC,UAAmD,EAAA;QAClG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAoC,WAAW,CAAC,UAAmD,EAAA;QAClG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAA8B,KAAK,CAAC,IAAuC,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAA6B,IAAI,CAAC,GAAqC,EAAA;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAA+B,MAAM,CAAC,KAAyC,EAAA;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA8B,KAAK,CAAC,IAAuC,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAAgC,OAAO,CAAC,MAA2C,EAAA;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA+B,MAAM,CAAC,KAAyC,EAAA;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAoC,WAAW,CAAC,UAAmD,EAAA;QAClG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAgC,OAAO,CAAC,MAA2C,EAAA;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAkC,SAAS,CAAC,QAA+C,EAAA;QAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;8GAzDoB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADzC,SAAS;8BAIuB,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAII,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIK,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIa,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIM,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIA,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIK,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIQ,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIK,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIQ,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIK,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIW,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIE,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIQ,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;;;AC9D7B,SAAS,YAAY,CAAC,KAA4C,EAAA;AACjE,IAAA,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;AACpD,CAAC;AAEe,SAAA,WAAW,CAC1B,UAA4B,EAC5B,KAAwD,EACxD,YAAyB,EACzB,OAAsB,EACtB,IAAI,GAAG,CAAC,EAAA;IAER,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;AACnD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAEjD,IAAI,UAAU,KAAK,MAAM;AAAE,QAAA,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;AACxD,IAAA,IAAI,UAAU;AAAE,QAAA,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;AAC5C,IAAA,IAAI,UAAU,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;AAAE,QAAA,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAEhG,IAAA,OAAO,MAAK;QACX,IAAI,UAAU,KAAK,MAAM;AAAE,YAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;AACvD,QAAA,IAAI,UAAU;AAAE,YAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,UAAU,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;AAAE,YAAA,MAAM,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACpG,KAAC,CAAC;AACH,CAAC;AAMD,MAAM,YAAY,GAAG,2FAA2F,CAAC;AAEjG,SAAA,qBAAqB,CAAC,aAAyD,EAAE,QAAmB,EAAA;AACnH,IAAA,QAAQ,GAAG,sBAAsB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AACnE,IAAA,OAAO,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AAC3C,QAAA,MAAM,UAAU,GAAG,YAAY,EAA+B,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEtC,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AACjC,YAAA,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,aAAa,EAAiC,CAAC;YAEnG,IAAI,KAAK,IAAI,IAAI,EAAE;AAClB,gBAAA,KAAK,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3E,aAAA;YAED,IAAI,IAAI,IAAI,IAAI,EAAE;gBACjB,IAAI,GAAG,EAAE,CAAC;AACV,aAAA;AAED,YAAA,IAAI,MAAM,EAAE;AACX,gBAAA,IAAI,EAAE,MAAM,IAAI,mBAAmB,CAAC;AACnC,oBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,gBAAA,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,GAAG,YAAY,CAAC;AACpB,aAAA;YAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAiC,CAAC;AACrF,SAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,eAAe;;AAEnC,QAAA,MAAK;YACJ,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;YAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,kBAAE,MAAM;AACR,kBAAE,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAC1C,sBAAE,KAAK;AACP,sBAAE,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAC1C,0BAAE,KAAK;0BACL,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC;AAC9D,YAAA,OAAO,SAAS;AACf,kBAAE,iBAAiB;kBACjB,SAAS,KAAK,KAAK;AACrB,sBAAE,UAAU;sBACV,SAAS,KAAK,KAAK;AACrB,0BAAE,SAAS;0BACT,IAAI,CAAC;SACR,EACD,MAAK;AACJ,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;AAC3B,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC/C,SAAC,EACD;AACC,YAAA,UAAU,EAAE,CAAC,MAAM,KAAI;gBACtB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;AACtC,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrB,gBAAA,IAAI,UAAU;oBAAE,UAAU,CAAC,MAAM,CAAC,CAAC;aACnC;AACD,SAAA,CACD,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;AACrC,YAAA,MAAM,OAAO,GAAsC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7F,YAAA,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,qBAAqB,GAAG,gCAAgC,CAAC;YAClG,IAAI,YAAY,IAAI,OAAO,EAAE;AAC5B,gBAAA,OAAO,CAAC,UAAU,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC;AAC/E,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAe,CAAC,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,cAAc,CAAC;AAC7F,aAAA;AAED,YAAA,UAAU,CAAC,aAAa,GAAG,OAAO,CAAC;YACnC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,UAAU,CAAC;AACnB,KAAC,CAAC,CAAC;AACJ;;MC9Ha,mBAAmB,CAAA;IAK/B,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;AAQD,IAAA,WAAA,GAAA;AAdA,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAExC,IAAM,CAAA,MAAA,GAAG,WAAW,CAAgD,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAM3F,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAGxE,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAEO,WAAW,GAAA;AAClB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACpB,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG;gBACxD,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;gBAC5B,IAAI,CAAC,UAAU,CAAC,aAAa;aAC7B,CAAC;AACF,YAAA,IAAI,CAAC,OAAO;gBAAE,OAAO;AACrB,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAW,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7E,SAAS,CAAC,OAAO,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;KACH;8GAhCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;0EAMoC,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;;;MCLlB,kBAAkB,CAAA;IAM9B,IAA6B,IAAI,CAAC,GAAkB,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;AAED,IAAA,WAAA,GAAA;AAbA,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QAEzB,IAAM,CAAA,MAAA,GAAG,WAAW,CAAwD,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAcnG,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QALvC,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAMO,WAAW,GAAA;AAClB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACpB,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG;gBACxD,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;gBAC5B,IAAI,CAAC,GAAG,EAAE;aACV,CAAC;AACF,YAAA,IAAI,CAAC,OAAO;gBAAE,OAAO;AACrB,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAW,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7E,SAAS,CAAC,OAAO,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;KACH;8GAnCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;0EAO6B,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIa,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;;;ACZ/B,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;MAYlB,qBAAqB,CAAA;AAVlC,IAAA,WAAA,GAAA;AAWC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAc,CAAA,cAAA,GAAG,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE7E,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YACzD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC;AACtD,SAAC,CAAC,CAAC;QAEH,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAU,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAU,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAU,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;AAC/E,KAAA;8GAbY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAPvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;EAGT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,gGAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;AAGT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;;ACCD,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;MAsBV,qBAAqB,CAAA;AAgBjC,IAAA,WAAA,GAAA;AAfA,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAc,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxE,IAAa,CAAA,aAAA,GAAG,YAAY,EAAoB,CAAC;AAEzC,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;YAChF,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC;AACvC,YAAA,OAAO,GAAG,CAAC;AACZ,SAAC,CAAC,CAAC;QACH,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAGtG,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,UAAU,EAAE,GAAG;AACf,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,MAAM,EAAE,SAAS;AACjB,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,WAAW,GAAA;AAClB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,GAAG;gBAC1F,IAAI,CAAC,eAAe,CAAC,aAAa;AAClC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAClC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,EAAE,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,aAAa;aAChC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY;gBAAE,OAAO;YACzC,IAAI,MAAM,KAAK,CAAC;AAAE,gBAAA,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACtD,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjF,SAAS,CAAC,OAAO,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;AAC7B,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtD,YAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAG,MAAO,EAAE;AAC3C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;AAChD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBACxD,IAAI,MAAM,IAAI,YAAY,EAAE;AAC3B,oBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAChC,oBAAA,KAAK,EAAE,CAAC;AACR,iBAAA;AACD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GAhEW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAjBvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;EAaT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,gGAAE,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGjF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC;oBAC9F,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;;ACHK,MAAO,eAAgB,SAAQ,oBAAoB,CAAA;8GAA5C,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+DAHhB,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAI9D,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EA1BxC,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;EAaT,EAEA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,0FACnB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKL,eAAe,EAAA,UAAA,EAAA,CAAA;kBA5B3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE;wBACR,kBAAkB;wBAClB,qBAAqB;wBACrB,mBAAmB;wBACnB,qBAAqB;wBACrB,IAAI;wBACJ,gBAAgB;AAChB,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAiB,eAAA,EAAE,CAAC;oBAC5E,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;8BAEsD,OAAO,EAAA,CAAA;sBAA5D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;ACjCrD,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;MA+BL,SAAS,CAAA;IAUrB,IAAiC,QAAQ,CAAC,OAAgB,EAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA2C,kBAAkB,CAAC,iBAAyB,EAAA;QACtF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;KACvC;IAED,IAAwC,eAAe,CAAC,cAAsB,EAAA;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KACpC;IAED,IAAuC,cAAc,CAAC,aAAiC,EAAA;QACtF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KACnC;AAED,IAAA,WAAA,GAAA;QA7BQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAAiB;AAC5C,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,aAAa,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1B,SAAA,CAAC,CAAC;QAEM,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;QAsBzC,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,YAAY,GAAA;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAM,CAAC;AACtC,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO;AAEnB,YAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAE/F,YAAA,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO;YACpC,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1C,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;YACvE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;YACvE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;AACxE,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/C,YAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CACpC,SAAS,EACT,CAAC,GAAG,EACJ,GAAG,EACH,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAC1B,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,CACzB,CAAC;YACF,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,cAAc,CAAC;YAC9C,KAAK,CAAC,YAAY,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;KACH;8GA1DW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EATX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,eAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAUS,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAC2B,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAII,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIkB,kBAAkB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAA;gBAIG,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;gBAIK,cAAc,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;;;AC1DlC,SAAS,eAAe,CAAC,MAAc,EAAA;AACtC,IAAA,QAAQ,MAAM;AACb,QAAA,KAAK,EAAE;AACN,YAAA,OAAO,OAAO,CAAC;AAChB,QAAA,KAAK,GAAG;AACP,YAAA,OAAO,QAAQ,CAAC;AACjB,QAAA,KAAK,GAAG;AACP,YAAA,OAAO,QAAQ,CAAC;AACjB,QAAA,KAAK,GAAG;AACP,YAAA,OAAO,QAAQ,CAAC;AACjB,QAAA;AACC,YAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACF,CAAC;AAED,MAAMA,UAAQ,GAAG,oEAAoE,CAAC;AACtF,MAAM,WAAW,GAAG,wFAAwF,CAAC;AAQ7G,MAAMC,cAAY,GAA2B;AAC5C,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,MAAM,EAAE,IAAI;CACZ,CAAC;AAEI,SAAU,uBAAuB,CACtC,kBAAyD,EACzD,EAAE,QAAQ,KAA8B,EAAE,EAAA;AAE1C,IAAA,QAAQ,GAAG,sBAAsB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AACrE,IAAA,OAAO,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AAC3C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAGA,cAAY,EAAE,GAAG,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAyB,EAAE,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QAEtD,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACvB,KAAK,CAACD,UAAQ,CAAC;qBACb,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACzB,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACd,oBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAK;AACrB,YAAA,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACtB,YAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC3B,gBAAA,OAAO,EAAE,CAAC;AACV,aAAA;YAED,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/C,gBAAA,OAAO,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AACb,SAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAG,EAAA,QAAQ,EAAE,IAAI,cAAc,EAAE,CAAG,EAAA,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACjG,QAAA,MAAM,GAAG,GAAG,MAAM,GAAG,WAAW,CAAA,CAAA,EAAI,KAAK,EAAE,CAAC,MAAM,CAAA,CAAA,EAAI,QAAQ,EAAE,EAAE,CAAC;AAEnE,QAAA,IAAI,OAAqC,CAAC;AAC1C,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE;AACb,gBAAA,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7E,aAAA;YACD,OAAO,OAAO,EAAE,CAAC;AAClB,SAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChD,KAAC,CAAC,CAAC;AACJ;;AC9EA,MAAM,WAAW,GAAG,wFAAwF,CAAC;AAC7G,MAAM,QAAQ,GAAG,4EAA4E,CAAC;AAU9F,MAAM,YAAY,GAA2B;AAC5C,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACd,CAAC;AAEI,SAAU,uBAAuB,CACtC,kBAAyD,EACzD,EAAE,QAAQ,KAA8B,EAAE,EAAA;AAE1C,IAAA,QAAQ,GAAG,sBAAsB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AACrE,IAAA,OAAO,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AAC3C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,MAAM,WAAW,GAAG,MAAM,CAAyB,EAAE,CAAC,CAAC;QAEvD,MAAM,cAAc,GAAG,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QAEvD,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACvB,KAAK,CAAC,QAAQ,CAAC;qBACb,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACzB,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACd,oBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,CAAG,EAAA,WAAW,CAAY,SAAA,EAAA,SAAS,EAAE,CAAA,CAAE,CAAC;AAE1D,QAAA,IAAI,OAAqC,CAAC;AAC1C,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE;AACb,gBAAA,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7E,aAAA;YACD,OAAO,OAAO,EAAE,CAAC;AAClB,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC;YAC/C,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;AACvD,YAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AAClC,SAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChD,KAAC,CAAC,CAAC;AACJ;;ACjEA,SAAS,iBAAiB,CAAC,WAAmB,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAA;IAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,GAAG,GAAG,CAAC,CAAC;AAC5C,IAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;IAE1C,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,IAAA,OAAO,MAAM,CAAC;AACf,CAAC;MAuCY,OAAO,CAAA;AAhBpB,IAAA,WAAA,GAAA;QAiBS,IAAM,CAAA,MAAA,GAAG,WAAW,CAAe;AAC1C,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,SAAS,EAAE,EAAE;AACb,SAAA,CAAC,CAAC;QAEM,IAAM,CAAA,MAAA,GAAG,YAAY,EAAO,CAAC;QAkC9B,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElD,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrG,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvE,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE5C,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,KAAA;IA7CA,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAqC,YAAY,CAAC,WAA6D,EAAA;QAC9G,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAqC,YAAY,CAAC,WAAmB,EAAA;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAwC,eAAe,CAAC,cAAsB,EAAA;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KACpC;IAED,IAAyC,gBAAgB,CAAC,eAAuB,EAAA;QAChF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;KACrC;IAED,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;8GA3CW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAbT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,eAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;AAST,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhBnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;8BAYS,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAE4B,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIS,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIM,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIE,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIa,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;gBAIO,gBAAgB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;gBAID,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIO,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;;;AC/E9B,MAAM,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;AAEtE,MAAM,cAAc,GAAG,CAAC,GAAQ,KAA0B,GAAG,IAAK,GAAoB,CAAC,WAAW,KAAK,YAAY,CAAC;AAEpH,MAAM,WAAW,GAAG,CAAC,CAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,CAAC,CAAM,KACvB,CAAC,YAAY,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC;AAExF,MAAM,eAAe,GAAG,CAAC,CAAM,KAAc;AAC5C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC;SAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACzC,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAa,CAAC;AAC9B,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAChC,KAAa,EACb,IAAuB,EACvB,UAA6B,EAAA;IAE7B,IAAI,IAAI,KAAK,SAAS,EAAE;AACvB,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AACzB,YAAA,OAAO,IAAoB,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,IAAI,YAAY,KAAK,CAAC,KAAK,EAAE;YAChC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChF,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,IAAc,CAAC,CAAC;AAClE,KAAA;AAED,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,UAAW,CAAC,CAAC;AAC1D,CAAC;MA+CY,YAAY,CAAA;;IAYxB,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAA+B,MAAM,CAAC,KAA4B,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAAiC,QAAQ,CAAC,OAA8B,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;;IAGD,IAA+B,MAAM,CAAC,KAA+C,EAAA;QACpF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAA8B,KAAK,CAAC,IAA2B,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAA+B,MAAM,CAAC,KAAwD,EAAA;QAC7F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAA+B,MAAM,CAAC,KAAuE,EAAA;QAC5G,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;AA+BD,IAAA,WAAA,GAAA;QA1EQ,IAAM,CAAA,MAAA,GAAG,WAAW,CAAoB;AAC/C,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACR,SAAA,CAAC,CAAC;QAEM,IAAW,CAAA,WAAA,GAAG,YAAY,EAAU,CAAC;QAqCtC,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QAEjC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEnC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC,MACpB,YAAY,CAAC,IAAI,CAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,MACpC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAClE,CAAC,IAAI,EAAE,CACR,CACD,CAAC;AACF,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,WAAW,CACxB,QAAQ,CAAC,MAAK;AACb,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,YAAA,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAChE,SAAC,CAAC,EACF,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EACpE,MAAM,CAAC,CACP,CAAC;QACF,IAAG,CAAA,GAAA,GAAG,QAAQ,CAAC,MAAM,CAAA,SAAA,EAAY,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAE,CAAA,CAAC,CAAC;QAGhF,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,YAAY,GAAA;AACnB,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAE,OAAO;YAC3C,QAAQ,CAAC,QAAqC,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;AAC1E,SAAC,CAAC,CAAC;KACH;AAEO,IAAA,WAAW,CAClB,cAAsD,EACtD,KAAmB,EACnB,UAAuD,EAAA;QAEvD,MAAM,KAAK,GACV,OAAO,cAAc,KAAK,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC;AAC7D,cAAE,cAAc;cACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACvC,QAAA,OAAO,QAAQ,CAAC,MAAM,wBAAwB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;KAC9E;8GAjGW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAhBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;EAYT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,gFAAE,MAAM,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC1B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAUS,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGyB,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKQ,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAKI,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKK,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAKO,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;MChIJ,4BAA4B,CAAA;AADlD,IAAA,WAAA,GAAA;AAEC,QAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAAoC,EAAE,CAAC,CAAC;QA8B5D,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAA;IAnCA,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA6B,IAAI,CAAC,GAAkB,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACzB;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;8GA7BoB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADjD,SAAS;8BAIyB,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIO,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIE,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAII,IAAI,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;gBAIS,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIK,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIO,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;;;MCxBL,kBAAkB,CAAA;AADxC,IAAA,WAAA,GAAA;AAEC,QAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAA0B,EAAE,CAAC,CAAC;QA0ClD,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAChD,KAAA;IAlDA,IAAqC,YAAY,CAAC,WAA+B,EAAA;QAChF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAkC,SAAS,CAAC,QAAgB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAqC,YAAY,CAAC,WAAmB,EAAA;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAAsC,aAAa,CAAC,YAAoB,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAClC;IAED,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAA+B,MAAM,CAAC,KAAsB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA+B,MAAM,CAAC,KAAc,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;8GAzCoB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,aAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;8BAI4B,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIA,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIS,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIS,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIK,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIK,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIS,aAAa,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;gBAIC,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAII,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;ACjD1B,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;MAsBJ,kBAAkB,CAAA;AAsC9B,IAAA,WAAA,GAAA;AArCA,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5C,IAAI,CAAA,IAAA,GAAG,YAAY,EAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,IAAI,CAAC;AAEjB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAK,CAAA,KAAA,GAAG,cAAc,EAAE,CAAC;QACzB,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAClD,OAAO,SAAS,KAAK,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;AAClD,SAAC,CAAC,CAAC;AACK,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;AAChG,YAAA,OAAO,YAAY,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC;AAC9D,SAAC,CAAC,CAAC;QAEH,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzC,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MACrB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9G,CAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG;gBAC3C,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;aAC9B,CAAC;AAEF,YAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9F,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChF,YAAA,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,CAAC;QAGF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,UAAU,EAAE,CAAC;AACb,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,kBAAkB,CAAC,MAAK;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,SAAC,CAAC,CAAC;KACH;8GAzDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAjBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBApB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;;ACrBD,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;MAWjC,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,GAAG,oBAAoB,CACpF,CAAC,SAAwB,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EAC7F,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,EAAE,EACzD;AA2BI,MAAO,aAAc,SAAQ,kBAAkB,CAAA;IAIpD,IAAoC,WAAW,CAAC,UAAmB,EAAA;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAChC;AAED,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE,CAAC;QARA,IAAY,CAAA,YAAA,GAAG,YAAY,EAAa,CAAC;AAElD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAOzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,KAAK,EAAE,KAAK;AACZ,SAAA,CAAC,CAAC;KACH;8GAnBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAHd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,SAAA,EAAA,CAAC,uBAAuB,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAnBzF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI/B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAzBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC;AAC5C,oBAAA,SAAS,EAAE,CAAC,uBAAuB,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAA,aAAe,EAAE,CAAC;oBACnG,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAES,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAG8B,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;;;AC5B/B,MAAM,WAAW,GAAG,CAAC,KAA4B,KAA8B;IAC9E,OAAQ,KAAyB,EAAE,WAAW,CAAC;AAChD,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAC9B,YAA6C,EAC7C,OAAmC,EACnC,KAAmB,EACnB,MAAoB,EACpB,QAAsB,EACtB,QAAmB,EAAA;AAEnB,IAAA,QAAQ,GAAG,sBAAsB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AACpE,IAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;AACvB,YAAA,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;AAC3B,gBAAA,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAChD,gBAAA,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;AACzB,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAChD,iBAAA;AACD,gBAAA,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,aAAA;AAAM,iBAAA;AACN,gBAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACnF,aAAA;AACF,SAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,MAAK;AACvB,YAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;AAEnC,YAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;AAEvB,YAAA,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC7B,YAAA,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErB,YAAA,IAAI,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAA;AACF,SAAC,CAAC,CAAC;AACJ,KAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,CAAC;MAqBtC,+BAA+B,CAAA;AAS3C,IAAA,WAAA,GAAA;AARA,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAEvD,IAAO,CAAA,OAAA,GAAG,YAAY,EAAc,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEtB,IAAY,CAAA,YAAA,GAAG,sBAAsB,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAG/B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzG,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AACvC,YAAA,IAAI,GAAG,EAAE;gBACR,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;gBAC7C,WAAW,CAAC,GAAG,CAAC,CAAC;AACjB,aAAA;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,sBAAsB,CACrB,IAAI,CAAC,YAAY,CAAC,SAAS,EAC3B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,CAAC,KAAK,EAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC7B,CAAC;KACF;8GA7BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAhBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAnB3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;MAsDY,6BAA6B,CAAA;AA4CzC,IAAA,WAAA,GAAA;AA3CA,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACvD,IAAO,CAAA,OAAA,GAAG,YAAY,EAAc,CAAC;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAE9B,IAAY,CAAA,YAAA,GAAG,sBAAsB,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAEtF,OAAO,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE;gBACjD,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,QAAQ,EAAE,KAAK,CAAC,cAAc;AAC9B,gBAAA,aAAa,EAAE,KAAK;;AAEpB,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,QAAQ,GAAG;YAClB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE;AACjD,YAAA,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SACnB,CAAC;AAEM,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzB,YAAA,OAAO,IAAI,cAAc,CACxB,IAAI,KAAK,CAAC,cAAc,CAAC;gBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,aAAa,CAAA;;;;;;;AAOpB,QAAA,CAAA;AACL,gBAAA,cAAc,EAAE,MAAM;AACtB,aAAA,CAAC,CACF,CAAC;AACH,SAAC,CAAC,CAAC;QAGF,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,KAAK,EAAE,CAAC;gBACR,MAAM,aAAa,CAAA;;;;;;;;;;AAUd,QAAA,CAAA;AACL,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,sBAAsB,CACrB,IAAI,CAAC,YAAY,CAAC,SAAS,EAC3B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,CAAC,KAAK,EAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC7B,CAAC;QAEF,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAI;YACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,IAAI,MAAM,IAAI,YAAY,EAAE;AAC3B,gBAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACjC,gBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAClB,gBAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzB,aAAA;AACF,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AACvC,YAAA,IAAI,GAAG,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;AACrC,aAAA;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,MAAM,EAAE;oBACX,MAAM,CAAC,OAAO,EAAE,CAAC;AACjB,oBAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1B,iBAAA;AACF,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,SAAS,CAAC,MAAK;gBACd,YAAY,CAAC,OAAO,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;8GA5GW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAlB/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBArBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;AAkIK,MAAO,mBAAoB,SAAQ,4BAA4B,CAAA;8GAAxD,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAFpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,EAP9E,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7HW,6BAA6B,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArD7B,+BAA+B,EAAA,QAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAmL+B,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGlE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,+BAA+B,EAAE,IAAI,CAAC;oBAC/E,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAqB,mBAAA,EAAE,CAAC;AACxF,iBAAA,CAAA;;;AC9PD,MAAM,OAAO,GAAG;AACf,IAAA,SAAS,EAAE;AACV,QAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpB,KAAA;AACD,IAAA,QAAQ,EAAE;QACT,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACR,QAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACrB,KAAA;AACD,IAAA,IAAI,EAAE;QACL,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACrB,KAAA;CACD,CAAC;AA0CF,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;MAGnD,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEC,IAAS,CAAA,SAAA,GAAG,mBAAmB,EAAE,CAAC;QAEzB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QACX,IAAY,CAAA,YAAA,GAAqB,IAAI,CAAC;AAO/C,KAAA;IALA,WAAW,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AACxC,SAAA;KACD;8GAVW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;8BAInD,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;MA4IM,SAAS,CAAA;AAnItB,IAAA,WAAA,GAAA;QAoIC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC;QAER,IAAM,CAAA,MAAA,GAAG,WAAW,CAAiB;AAC5C,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,MAAM,EAAE,WAAW;AACnB,SAAA,CAAC,CAAC;AA0BO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB,CAAC;QAEnD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAExD,IAAa,CAAA,aAAA,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,YAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9D,SAAC,CAAC,CAAC;QACH,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,EACL,IAAI,EAAE,UAAU,GAAG,CAAC,MAAM,EAC1B,UAAU,GAAG,CAAC,EACd,IAAI,EAAE,UAAU,GAAG,IAAI,EACvB,MAAM,EAAE,YAAY,GAAG,CAAC,EACxB,GAAG,SAAS,EACZ,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAA0B,CAAC;YAChF,OAAO;gBACN,aAAa,EAAE,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBACpE,kBAAkB,EAAE,OAAO,KAAK,cAAc,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc;gBACnF,UAAU;gBACV,UAAU;gBACV,UAAU;gBACV,YAAY;AACZ,gBAAA,GAAG,SAAS;aACZ,CAAC;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;AACtG,SAAC,CAAC,CAAC;AAOH,KAAA;IApEA,IAAgC,OAAO,CAAC,MAAgC,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAiC,QAAQ,CAAC,OAAkC,EAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAsC,aAAa,CAAC,YAA4C,EAAA;QAC/F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAClC;IAED,IAAqC,YAAY,CAAC,WAA0C,EAAA;QAC3F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAmC,UAAU,CAAC,SAAsC,EAAA;QACnF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAAgC,OAAO,CAAC,MAAgC,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;AAyCD,IAAA,UAAU,CAAC,MAAyB,EAAA;QACnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvD;8GA9EW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAhIX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,aAAA,EAAA,CAAA,cAAA,EAAA,eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEA,OAAO,EACP,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,0JAtIC,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAwIzB,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oNACpB,eAAe,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIJ,SAAS,EAAA,UAAA,EAAA,CAAA;kBAnIrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE;wBACR,OAAO;wBACP,IAAI;wBACJ,UAAU;wBACV,cAAc;wBACd,UAAU;wBACV,kBAAkB;wBAClB,uBAAuB;wBACvB,oBAAoB;wBACpB,eAAe;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;8BAYgC,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIO,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIW,aAAa,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;gBAIK,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAII,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIG,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIhB,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;ACpQR,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;AAkBpD,MAAM,OAAO,GAAG,CAAC,CAAS,KACzB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,gBAAgB,CACnC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CACrF,CAAC;MA4BU,SAAS,CAAA;AA1BtB,IAAA,WAAA,GAAA;QA2BS,IAAM,CAAA,MAAA,GAAG,WAAW,CAAiB;AAC5C,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,CAAC;AACR,SAAA,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAE1B,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAU,CAAC;QA8BnC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YAC1B,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACtG,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC9C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACxC,gBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;AACvD,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,aAAA;YACD,OAAO;AACN,gBAAA,SAAS,EAAE,IAAI,YAAY,CAAC,SAAS,CAAC;AACtC,gBAAA,MAAM,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC;AAChC,gBAAA,KAAK,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC;aAC9B,CAAC;AACH,SAAC,CAAC,CAAC;AAKH,KAAA;IA1DA,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;IAED,IAAgC,OAAO,CAAC,MAAc,EAAA;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAmB,SAAS,CAAC,IAAa,EAAA;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAA+B,MAAM,CAAC,KAAa,EAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;AA6BD,IAAA,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAgE,EAAA;QAC7F,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACxF;8GAxEW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAvBX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,SAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,SAAS,EAAA,UAAA,EAAA,CAAA;kBA1BrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;8BAcS,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAE0B,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIK,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIM,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAIO,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIU,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIX,SAAS,EAAA,CAAA;sBAA3B,KAAK;uBAAC,MAAM,CAAA;gBAIkB,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;MCnFJ,kBAAkB,CAAA;AADxC,IAAA,WAAA,GAAA;QAEC,IAAM,CAAA,MAAA,GAAG,WAAW,CAAqB;AACxC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AAClC,YAAA,cAAc,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AAChC,SAAA,CAAC,CAAC;QAsEH,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,YAAA,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC7D,SAAC,CAAC,CAAC;QAEH,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACpD,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,MAAM,CACL,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,MAAM,EACN,cAAc,EACd,IAAI,EACJ,GAAG;gBACH,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,IAAI,EAAE;aACX,CAAC;YACF,OAAO;gBACN,aAAa;gBACb,WAAW;gBACX,OAAO;gBACP,SAAS;gBACT,cAAc;gBACd,UAAU;gBACV,IAAI;gBACJ,WAAW;gBACX,UAAU;gBACV,OAAO;gBACP,UAAU;gBACV,UAAU;gBACV,MAAM;gBACN,cAAc;gBACd,IAAI;aACJ,CAAC;AACH,SAAC,CAAC,CAAC;AACH,KAAA;IA/IA,IAAkC,SAAS,CAAC,QAAsC,EAAA;QACjF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAkC,SAAS,CAAC,QAAiB,EAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC9B;IAED,IAAqC,YAAY,CAAC,WAAmB,EAAA;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAiC,QAAQ,CAAC,OAAe,EAAA;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAuC,cAAc,CAAC,aAAqB,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KACnC;IAED,IAAmC,UAAU,CAAC,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC/B;IAED,IAAwC,eAAe,CAAC,cAAuB,EAAA;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KACpC;IAED,IAAoC,WAAW,CAAC,UAAmB,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAA8B,KAAK,CAAC,IAAa,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;IAED,IAAqC,YAAY,CAAC,WAAmB,EAAA;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACjC;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAiC,QAAQ,CAAC,OAAgB,EAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC7B;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAoC,WAAW,CAAC,UAAkB,EAAA;QACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAChC;IAED,IAAgC,OAAO,CAAC,MAAiC,EAAA;QACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KAC5B;IAED,IAAwC,eAAe,CAAC,cAAyC,EAAA;QAChG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KACpC;IAED,IAA8B,KAAK,CAAC,IAA+B,EAAA;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1B;8GAtFoB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,eAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,eAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;8BAqByB,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIM,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;gBAIS,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIE,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIY,cAAc,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;gBAIE,UAAU,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIW,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;gBAIE,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIA,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;gBAIa,YAAY,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAIK,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIG,QAAQ,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;gBAIS,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIM,WAAW,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;gBAIE,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAIc,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;gBAIJ,KAAK,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;;;AClFzB,MAAM,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAOxC,SAAS,cAAc,CAAC,MAA8B,EAAA;AACrD,IAAA,OAAO,CAAC,CAAE,MAAqB,EAAE,QAAQ,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAa,EAAA;AACzC,IAAA,OAAQ,QAAoC,CAAC,IAAI,KAAK,mBAAmB,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,GAAA;IACnB,MAAM,CAAC,GAAwB,EAAE,CAAC;AAClC,IAAA,KAAK,MAAM,GAAG,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACpD,QAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAG,wBAAwB,CAAC,QAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;AACpE,KAAA;AACD,IAAA,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA8B,EAAE,UAAoB,EAAA;IACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACnD,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE7B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,IAAI,IAAI,EAAE;YACT,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,SAAA;AACD,KAAA;AAED,IAAA,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,aAA4D,EAAA;IACrF,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,GAAG,aAAa,CAAE,CAAC;AAEnF,IAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAEtB,QAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;;AAE3B,YAAA,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACzC,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAClE,aAAA;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC;AACvB,SAAA;AACD,KAAA;AAAM,SAAA;AACN,QAAA,OAAO,GAAG,CAAC;AACX,KAAA;IAED,OAAO;AACR,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA8B,EAAE,QAAiB,EAAA;IACnF,IAAI,QAAQ,CAAC,KAAK,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;AACzG,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAE9C,QAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7B,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,KAAA;IAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAErE,IAAA,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACtD,CAAC;MAUY,kCAAkC,CAAA;AAM9C,IAAA,WAAA,GAAA;QALA,IAAS,CAAA,SAAA,GAAG,YAAY,EAAkB,CAAC;AAEnC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5C,IAAQ,CAAA,QAAA,GAAG,WAAW,EAAE,CAAC;AAGhC,QAAA,2BAA2B,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACpF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CACd,oGAAoG,CACpG,CAAC;AACF,aAAA;AACD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAEhC,YAAA,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE9C,SAAS,CAAC,MAAK;AACd,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,OAAO,EAAE,CAAC;AAClB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AACpB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAA0D,CAAC;YACrF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzD,SAAS,CAAC,MAAK;AACd,gBAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC9B,gBAAA,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC9B,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;8GAzCW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EALpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGW,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAR9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;MA8EY,+BAA+B,CAAA;AAM3C,IAAA,WAAA,GAAA;AALA,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAE9B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5C,IAAa,CAAA,aAAA,GAAG,MAAM,CAAuB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAG,CAAC,CAAC;QAGnF,MAAM,CAAC,MAAK;YACX,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpG,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAe,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CACd,+FAA+F,CAC/F,CAAC;AACF,aAAA;AAED,YAAA,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE9C,YAAA,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;AAC3B,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,aAAA;AACF,SAAC,CAAC,CAAC;KACH;8GAtBW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EA9BjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAjC3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;;AA6CK,MAAO,aAAc,SAAQ,kBAAkB,CAAA;8GAAxC,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAFd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAR9D,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApHW,kCAAkC,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA6ElC,+BAA+B,EAAA,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAwCoC,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIvE,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kCAAkC,EAAE,+BAA+B,EAAE,IAAI,CAAC;oBACpF,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAe,aAAA,EAAE,CAAC;AACxE,iBAAA,CAAA;;;AC9ND;;AAEG;;;;"}