@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4

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 (514) hide show
  1. package/dist/build-info.json +44 -44
  2. package/dist/editor-commands/capabilities/assets.d.ts +8 -0
  3. package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
  4. package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
  5. package/dist/editor-commands/capabilities/assets.js.map +1 -0
  6. package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
  7. package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
  8. package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
  9. package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
  10. package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
  11. package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
  12. package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
  13. package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
  14. package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
  15. package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
  16. package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
  17. package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
  18. package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
  19. package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
  20. package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
  21. package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
  22. package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
  23. package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
  24. package/dist/editor-commands/capabilities/scene-objects.js +480 -0
  25. package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
  26. package/dist/editor-commands/capabilities/selection.d.ts +5 -0
  27. package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
  28. package/dist/editor-commands/capabilities/selection.js +60 -0
  29. package/dist/editor-commands/capabilities/selection.js.map +1 -0
  30. package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
  31. package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
  32. package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
  33. package/dist/editor-commands/capabilities/shadows.js.map +1 -0
  34. package/dist/editor-commands/capabilities/transform.d.ts +5 -0
  35. package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
  36. package/dist/editor-commands/capabilities/transform.js +164 -0
  37. package/dist/editor-commands/capabilities/transform.js.map +1 -0
  38. package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
  39. package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
  40. package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
  41. package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
  42. package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
  43. package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
  44. package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
  45. package/dist/editor-commands/capabilities/viewport.js.map +1 -0
  46. package/dist/editor-commands/command-sources.d.ts +7 -0
  47. package/dist/editor-commands/command-sources.d.ts.map +1 -0
  48. package/dist/editor-commands/command-sources.js +34 -0
  49. package/dist/editor-commands/command-sources.js.map +1 -0
  50. package/dist/editor-commands/diagnostics.d.ts +12 -0
  51. package/dist/editor-commands/diagnostics.d.ts.map +1 -0
  52. package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
  53. package/dist/editor-commands/diagnostics.js.map +1 -0
  54. package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
  55. package/dist/editor-commands/index.d.ts.map +1 -0
  56. package/dist/{agent-bridge → editor-commands}/index.js +1 -1
  57. package/dist/editor-commands/index.js.map +1 -0
  58. package/dist/editor-commands/register.d.ts +4 -0
  59. package/dist/editor-commands/register.d.ts.map +1 -0
  60. package/dist/{agent-bridge → editor-commands}/register.js +323 -286
  61. package/dist/editor-commands/register.js.map +1 -0
  62. package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
  63. package/dist/editor-commands/shared.d.ts.map +1 -0
  64. package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
  65. package/dist/editor-commands/shared.js.map +1 -0
  66. package/dist/editor-commands/source-types.d.ts +110 -0
  67. package/dist/editor-commands/source-types.d.ts.map +1 -0
  68. package/dist/editor-commands/source-types.js.map +1 -0
  69. package/dist/editor-plugin-commands.d.ts +4 -0
  70. package/dist/editor-plugin-commands.d.ts.map +1 -0
  71. package/dist/editor-plugin-commands.js +18 -0
  72. package/dist/editor-plugin-commands.js.map +1 -0
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/local-editor-commands.d.ts +2 -0
  78. package/dist/local-editor-commands.d.ts.map +1 -0
  79. package/dist/local-editor-commands.js +2 -0
  80. package/dist/local-editor-commands.js.map +1 -0
  81. package/dist/local-editor-harness.d.ts +35 -21
  82. package/dist/local-editor-harness.d.ts.map +1 -1
  83. package/dist/local-editor-harness.js +1721 -367
  84. package/dist/local-editor-harness.js.map +1 -1
  85. package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
  86. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
  87. package/dist/local-editor-prefab-stage-transaction.js +6 -5
  88. package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
  89. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  90. package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
  91. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  92. package/dist/playable-local-editor-entry.d.ts +10 -0
  93. package/dist/playable-local-editor-entry.d.ts.map +1 -1
  94. package/dist/playable-local-editor-entry.js +10 -2
  95. package/dist/playable-local-editor-entry.js.map +1 -1
  96. package/dist/playable-local-editor-host.d.ts +3 -32
  97. package/dist/playable-local-editor-host.d.ts.map +1 -1
  98. package/dist/playable-local-editor-host.js +6 -70
  99. package/dist/playable-local-editor-host.js.map +1 -1
  100. package/dist/playable-product-local-editor.d.ts +1 -2
  101. package/dist/playable-product-local-editor.d.ts.map +1 -1
  102. package/dist/playable-product-local-editor.js +0 -1
  103. package/dist/playable-product-local-editor.js.map +1 -1
  104. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  105. package/dist/playable-product-projection-preview.js +1 -1
  106. package/dist/playable-product-projection-preview.js.map +1 -1
  107. package/dist/playable-product-scene-capabilities.d.ts +0 -2
  108. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  109. package/dist/playable-product-scene-capabilities.js +33 -6
  110. package/dist/playable-product-scene-capabilities.js.map +1 -1
  111. package/dist/playable-runtime-babylon.d.ts +4 -0
  112. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  113. package/dist/playable-runtime-babylon.js +4 -0
  114. package/dist/playable-runtime-babylon.js.map +1 -1
  115. package/dist/playable-sdk.d.ts +1 -1
  116. package/dist/playable-sdk.d.ts.map +1 -1
  117. package/dist/playable-sdk.js.map +1 -1
  118. package/dist/playable-standard-project.d.ts +0 -2
  119. package/dist/playable-standard-project.d.ts.map +1 -1
  120. package/dist/playable-standard-project.js +1 -2
  121. package/dist/playable-standard-project.js.map +1 -1
  122. package/dist/project-service-projection.d.ts +16 -0
  123. package/dist/project-service-projection.d.ts.map +1 -0
  124. package/dist/project-service-projection.js +67 -0
  125. package/dist/project-service-projection.js.map +1 -0
  126. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
  127. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  128. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
  129. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  130. package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
  131. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
  132. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  135. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
  137. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  139. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  141. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  142. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
  143. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
  144. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
  145. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
  146. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  147. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  149. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
  171. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  173. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
  174. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  175. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
  176. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  177. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  178. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
  179. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
  180. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
  181. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
  182. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
  183. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
  184. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
  185. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
  186. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
  187. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
  188. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
  189. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
  190. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
  191. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
  192. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
  193. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
  194. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
  195. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
  196. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
  197. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
  198. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
  199. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
  201. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
  203. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
  204. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
  205. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
  206. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
  207. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
  208. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
  209. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
  210. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
  211. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  212. package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
  213. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  214. package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
  215. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  216. package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
  217. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  218. package/node_modules/@fps-games/editor-core/package.json +6 -6
  219. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
  220. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
  221. package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
  222. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  223. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  341. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
  342. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
  343. package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
  344. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
  345. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
  346. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
  347. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
  348. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
  349. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
  350. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
  351. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
  352. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
  353. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
  354. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
  355. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
  356. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
  357. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
  358. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  359. package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
  360. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  361. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  362. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  363. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  364. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  365. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  366. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  367. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  368. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  369. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  370. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  371. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  372. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  373. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  374. package/node_modules/@fps-games/plugin-assets/package.json +6 -6
  375. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
  376. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
  377. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
  378. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
  379. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  380. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  381. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  382. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  383. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  384. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  385. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  386. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  387. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  388. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  389. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  390. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  391. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  392. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  393. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  394. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  395. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  396. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  397. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  398. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  399. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  400. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  401. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  402. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  403. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  404. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  405. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  406. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  407. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  408. package/package.json +23 -23
  409. package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
  410. package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
  411. package/dist/agent-bridge/capabilities/assets.js.map +0 -1
  412. package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
  413. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
  414. package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
  415. package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
  416. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
  417. package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
  418. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
  419. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
  420. package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
  421. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
  422. package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
  423. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
  424. package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
  425. package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
  426. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
  427. package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
  428. package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
  429. package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
  430. package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
  431. package/dist/agent-bridge/capabilities/selection.js +0 -60
  432. package/dist/agent-bridge/capabilities/selection.js.map +0 -1
  433. package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
  434. package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
  435. package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
  436. package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
  437. package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
  438. package/dist/agent-bridge/capabilities/transform.js +0 -164
  439. package/dist/agent-bridge/capabilities/transform.js.map +0 -1
  440. package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
  441. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
  442. package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
  443. package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
  444. package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
  445. package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
  446. package/dist/agent-bridge/capability-sources.d.ts +0 -7
  447. package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
  448. package/dist/agent-bridge/capability-sources.js +0 -34
  449. package/dist/agent-bridge/capability-sources.js.map +0 -1
  450. package/dist/agent-bridge/diagnostics.d.ts +0 -12
  451. package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
  452. package/dist/agent-bridge/diagnostics.js.map +0 -1
  453. package/dist/agent-bridge/index.d.ts.map +0 -1
  454. package/dist/agent-bridge/index.js.map +0 -1
  455. package/dist/agent-bridge/register.d.ts +0 -4
  456. package/dist/agent-bridge/register.d.ts.map +0 -1
  457. package/dist/agent-bridge/register.js.map +0 -1
  458. package/dist/agent-bridge/shared.d.ts.map +0 -1
  459. package/dist/agent-bridge/shared.js.map +0 -1
  460. package/dist/agent-bridge/source-types.d.ts +0 -110
  461. package/dist/agent-bridge/source-types.d.ts.map +0 -1
  462. package/dist/agent-bridge/source-types.js.map +0 -1
  463. package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
  464. package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
  465. package/dist/editor-plugin-agent-capabilities.js +0 -64
  466. package/dist/editor-plugin-agent-capabilities.js.map +0 -1
  467. package/dist/local-editor-agent-actions.d.ts +0 -43
  468. package/dist/local-editor-agent-actions.d.ts.map +0 -1
  469. package/dist/local-editor-agent-actions.js +0 -321
  470. package/dist/local-editor-agent-actions.js.map +0 -1
  471. package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
  472. package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
  473. package/dist/local-editor-agent-bridge-transport.js +0 -403
  474. package/dist/local-editor-agent-bridge-transport.js.map +0 -1
  475. package/dist/local-editor-agent-bridge.d.ts +0 -2
  476. package/dist/local-editor-agent-bridge.d.ts.map +0 -1
  477. package/dist/local-editor-agent-bridge.js +0 -2
  478. package/dist/local-editor-agent-bridge.js.map +0 -1
  479. package/dist/local-editor-agent-context.d.ts +0 -68
  480. package/dist/local-editor-agent-context.d.ts.map +0 -1
  481. package/dist/local-editor-agent-context.js +0 -716
  482. package/dist/local-editor-agent-context.js.map +0 -1
  483. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
  484. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
  485. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
  486. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
  487. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
  488. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
  489. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
  490. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
  491. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
  492. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
  493. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
  494. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
  503. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
  504. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
  505. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
  506. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
  507. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
  508. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
  509. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
  510. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
  511. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
  512. package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
  513. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
  514. /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ground-decal.js","sourceRoot":"","sources":["../../src/product/ground-decal.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0CAA0C,GAC3C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,wBAAwB,GAKzB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAC;AAsRtF,MAAM,UAAU,yCAAyC,CAIvD,KAA0E;IAE1E,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uCAAuC,CAKrD,KAA0E;IAE1E,MAAM,QAAQ,GAAG,yCAAyC,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO;QACL,QAAQ;QACR,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,4CAA4C,CAAC,KAAK,EAAE,QAAQ,CAAC;QACjG,gCAAgC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CACpD,mDAAmD,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC9E;QACD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACvD,gDAAgD,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC5F;QACD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1C,yCAAyC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC/E;QACD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,uCAAuC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC7E;QACD,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACxD,iDAAiD,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC7F;QACD,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC,iDAAiD,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC1G,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,CAC9C,uCAAuC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CACnF;QACD,6BAA6B,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAClE,kDAAkD,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC9F;QACD,yBAAyB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAChD,8CAA8C,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5E;QACD,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,CACxD,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CACpF;QACD,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,gCAAgC,CAC5D,WAAW,EACX,QAAQ,CAAC,wBAAwB,EACjC,QAAQ,CACT;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0CAA0C,CAMxD,KAA8F;IAE9F,OAAO;QACL,GAAG,KAAK,CAAC,MAAM;QACf,+BAA+B,EAAE,KAAK,CAAC,+BAA+B;QACtE,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;QACpD,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,iCAAiC,EAAE,KAAK,CAAC,iCAAiC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,gDAAgD,GAAG,EAAE,CAAC;AAE5D,MAAM,UAAU,0CAA0C,CAAC,IAAY,EAAE,KAAc;IACrF,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAgD,CAAC;QAC/D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrD,OAAO,8CAA8C,CAAC;YACpD,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC1D,KAAc,EACd,UAA8E,EAAE;IAEhF,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,4CAA4C,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SAC1F,MAAM,CAAC,CAAC,KAAK,EAAgD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC1D,KAAc,EACd,KAAa,EACb,UAA8E,EAAE;IAEhF,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,wCAAwC,CAAC,MAA+C,EAAE,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACrH,MAAM,EAAE,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,KAAK,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,sCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAc;IACnE,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,2CAA2C,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,2CAA2C,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;QAC7D,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,2CAA2C,CAAC,KAAc;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,IAAY,EACZ,KAAc;IAEd,IAAI,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,sCAAsC,CAAC,KAAK,CAAC;YAClD,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACrB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACzD,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,uCAAuC,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,KAAK,KAAK,QAAQ;YAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACrB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IACE,mCAAmC,CAAC,IAAI,CAAC;WACtC,yCAAyC,CAAC,IAAI,CAAC;WAC/C,uCAAuC,CAAC,IAAI,CAAC,EAChD,CAAC;QACD,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,KAAK;YACV,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;YAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IACE,wCAAwC,CAAC,IAAI,CAAC;WAC3C,8CAA8C,CAAC,IAAI,CAAC;WACpD,4CAA4C,CAAC,IAAI,CAAC,EACrD,CAAC;QACD,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,KAAK,KAAK,IAAI;YACnB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;YAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,oDAAoD,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,uDAAuD,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,OAAO,KAAK,IAAI;YACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;YAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,kDAAkD,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,4CAA4C,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,SAAS,KAAK,IAAI;YACvB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;YAChC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wIAAwI,CAAC,CAAC;IACnK,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAuC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,IAAY;IAC7D,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,IAAY;IAChE,OAAO,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAAY;IAC9D,OAAO,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,IAAY;IACnE,OAAO,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,IAAY;IAClE,OAAO,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,IAAY;IAClE,OAAO,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,4CAA4C,CAAC,IAAY;IACvE,OAAO,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,IAAY;IACpE,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,8CAA8C,CAAC,IAAY;IACzE,OAAO,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,oDAAoD,CAAC,IAAY;IAC/E,OAAO,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,kDAAkD,CAAC,IAAY;IAC7E,OAAO,IAAI,KAAK,oCAAoC,IAAI,IAAI,KAAK,qCAAqC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,IAAY;IAClE,OAAO,CAAC,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,kDAAkD,CAAC,IAAI,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,6CAA6C,CAAC,IAAY;IACxE,OAAO,IAAI,KAAK,wBAAwB;WACnC,IAAI,KAAK,wBAAwB;WACjC,IAAI,KAAK,oBAAoB;WAC7B,uCAAuC,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAAiC,EACjC,KAAyC,EACzC,WAGI,EAAE;IAEN,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,wCAAwC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvF,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvI,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,sCAAsC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjJ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9G,IAAI,KAAK,KAAK,sBAAsB;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnI,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,KAAiC,EACjC,WAAgF,EAAE;IAElF,OAAO,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,KAAiC,EACjC,WAA+E,EAAE;IAEjF,OAAO,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,KAAiC,EACjC,WAA4G,EAAE;IAE9G,OAAO,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAiC,EACjC,WAA0G,EAAE;IAE5G,OAAO,QAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,KAAiC,EACjC,WAAyG,EAAE;IAE3G,OAAO,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mDAAmD,CACjE,KAAkC,EAClC,OAAuD,EACvD,WAA+E,EAAE;IAEjF,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,wCAAwC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/G,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAc;IACnE,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO;QACL,CAAC,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAc;IACnE,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,uDAAuD,CAAC,KAAc;IACpF,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,4CAA4C,CAAC,KAAc;IACzE,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,KAAa;IAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,+CAA+C,CAAC,IAAY,EAAE,KAAc;IAC1F,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,OAAO,4CAA4C,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtE,CAAC;IACD,IAAI,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,sCAAsC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAChE,CAAC;IACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,mCAAmC,CAAC,IAAI,CAAC;WACtC,yCAAyC,CAAC,IAAI,CAAC;WAC/C,uCAAuC,CAAC,IAAI,CAAC,EAChD,CAAC;QACD,OAAO,sCAAsC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAChE,CAAC;IACD,IACE,wCAAwC,CAAC,IAAI,CAAC;WAC3C,8CAA8C,CAAC,IAAI,CAAC;WACpD,4CAA4C,CAAC,IAAI,CAAC,EACrD,CAAC;QACD,OAAO,sCAAsC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAChE,CAAC;IACD,IAAI,oDAAoD,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,OAAO,uDAAuD,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACjF,CAAC;IACD,IAAI,kDAAkD,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,4CAA4C,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAiC,EACjC,KAAyC,EACzC,KAAc;IAEd,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,6BAA6B,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAClE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAgC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACxF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC7C,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACrE,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,SAAS,GAAG;YAChB,GAAG,KAAK;YACR,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAC;QACF,IAAI,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAgC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACrE,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAgC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,KAAK,sBAAsB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,uDAAuD,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,KAAK,CAAC,oBAAoB,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACzD,OAAO,EAAE,GAAG,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAgC,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,IAAI,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI;YACP,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC;QACF,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,IAAI,kCAAkC,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7G,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAG,EAAE,GAAG,kCAAkC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5F,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,IAAI,kCAAkC,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7G,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,SAAS,GAAG;YAChB,GAAG,KAAK;YACR,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC;QACF,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QACpD,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9E,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAAgD,EAChD,aAA6D,EAC7D,UAAwF,EAAE;IAE1F,MAAM,MAAM,GAAG,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1F,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,YAAY,GAAG,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QAC5E,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC7B,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1B,MAAM;QACN,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE;QACD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAC9D,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,QAAQ,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAClD,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE;YAC9C,CAAC,CAAC,QAAQ,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACjE,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;YACxD,CAAC,CAAC,QAAQ,CAAC,SAAS;KACZ,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAgC,EAChC,KAAiC;IAEjC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;WACpB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;WAClB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;WAClB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,IAA+B,EAC/B,KAAgC;IAEhC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;WACpB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;WAClB,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;WAC1B,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,8CAA8C,CAAC,KAA8B;IAC3F,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;IACpH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gDAAgD,CAK9D,QAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,KAAc,EACd,QAAmE;IAEnE,IAAI,CAAC,6CAA6C,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,MAAM,UAAU,GAAG,iCAAiC,CAAyB,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,MAAM,KAAK,GAAG,gCAAgC,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACpH,IAAI,IAAI,KAAK,wBAAwB,IAAI,IAAI,KAAK,wBAAwB,IAAI,kDAAkD,CAAC,IAAI,CAAC,EAAE,CAAC;QACvI,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,4CAA4C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,mDAAmD,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,MAAM,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,KAAK,IAAI,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,qCAAqC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CAKvD,QAAmB,EACnB,QAAgB,EAChB,KAAc,EACd,QAAmE;IAEnE,MAAM,OAAO,GAAG,4CAA4C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,iCAAiC,CAAyB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CACpF,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,mDAAmD,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAC9G,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uCAAuC,CAKrD,QAAmB,EACnB,QAAgB,EAChB,KAAc,EACd,QAAmE;IAEnE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/E,OAAO,iCAAiC,CAAyB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CACpF,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,iDAAiD,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAC3G,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iDAAiD,CAK/D,QAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,KAAc,EACd,QAAmE;IAEnE,IAAI,kDAAkD,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,qDAAqD,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,MAAM,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,eAAe,GAAG,+CAA+C,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxF,MAAM,KAAK,GAAG,gCAAgC,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QAC/G,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACxF,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,wCAAwC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACxG,MAAM,YAAY,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1D,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,iDAAiD,CAAC;YACvD,GAAG,KAAK;YACR,WAAW,EAAE;gBACX,GAAG,KAAK;gBACR,MAAM;aACP;SACF,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,qDAAqD,CAKnE,QAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,KAAc,EACd,QAAmE;IAEnE,MAAM,SAAS,GAAG,4CAA4C,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,KAAK,oCAAoC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;IAC7F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxF,MAAM,KAAK,GAAG,gCAAgC,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QAC/G,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,iDAAiD,CAAC;YACvD,GAAG,KAAK;YACR,WAAW,EAAE;gBACX,GAAG,KAAK;gBACR,SAAS,EAAE;oBACT,GAAG,KAAK,CAAC,SAAS;oBAClB,CAAC,GAAG,CAAC,EAAE,SAAS;iBACjB;aACF;SACF,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,uCAAuC,CAKrD,QAAmB,EACnB,QAAgB,EAChB,WAAoB,EACpB,QAAmE;IAEnE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3D,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChH,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,iDAAiD,CAAC;YACvD,GAAG,KAAK;YACR,IAAI,EAAE,WAAW;YACjB,aAAa,EAAE,aAAa;YAC5B,WAAW,EAAE,gCAAgC,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC;SACxG,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,kDAAkD,CAKhE,QAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,KAAc,EACd,QAAmE;IAEnE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzD,OAAO,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,0CAA0C,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACrI,CAAC;AAED,MAAM,UAAU,8CAA8C,CAM5D,QAAmB,EACnB,OAA2C,EAC3C,QAAmE;IAEnE,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,OAAO,CAAC,KAAgC,CAAC;IACvD,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO,kDAAkD,CACvD,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EACxB,KAAK,CAAC,KAAK,EACX,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAY,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;gBAC5D,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBACpD,OAAO,kDAAkD,CACvD,YAAY,EACZ,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,EAC9B,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,EAC1B,MAAM,EAAE,KAAK,EACb,QAAQ,CACT,CAAC;YACJ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,CACnE,kDAAkD,CAChD,YAAY,EACZ,MAAM,CAAC,QAAQ,CAAC,EAChB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EACxB,KAAK,CAAC,KAAK,EACX,QAAQ,CACT,CACF,EAAE,QAAQ,CAAC,CAAC;QACf,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oCAAoC,CAKlD,QAAmB,EACnB,QAAmE,EACnE,QAAiB,EACjB,eAA+B;IAE/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAChE,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;QACnH,MAAM,SAAS,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,IAAI,CAAC,0CAA0C,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,OAAO,UAAU,CAAC;QAChH,MAAM,OAAO,GAAG,eAAe,IAAI,8CAA8C,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnG,IACE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,QAAQ;eAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,QAAQ;eAChD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,QAAQ,EACnD,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,OAAO;YACL,GAAG,UAAU;YACb,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS;gBAC1E,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;gBACjE,CAAC,CAAC,SAAS,CAAC;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,iDAAiD,CAI/D,UAAuB,EACvB,QAAmE;IAEnE,MAAM,IAAI,GAAG,2CAA2C,CAAC;QACvD,GAAG,UAAU;QACb,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,gCAAgC,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC;KACpG,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB,OAAO,IAAI,CAAC,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,8CAA8C,CAAC,IAAY;IACzE,OAAO,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,mDAAmD,CAI1D,UAAuB,EACvB,OAAuD,EACvD,QAAmE;IAEnE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,gCAAgC,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACpH,OAAO,iDAAiD,CAAC;QACvD,GAAG,UAAU;QACb,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE;YACX,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxC,IAAI,CAAC,wCAAwC,CAAC,KAAK,EAAE,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC7E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACxD,CAAC,CAAC;SACH;KACa,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,iDAAiD,CAIxD,UAAuB,EACvB,MAAiC,EACjC,QAAmE;IAEnE,MAAM,QAAQ,GAAG,gCAAgC,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACvH,MAAM,QAAQ,GAAG,QAAQ,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,iDAAiD,CAAC;QACvD,GAAG,UAAU;QACb,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE;YACX,GAAG,QAAQ;YACX,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;YACpC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;SACpD;KACa,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,2CAA2C,CAClD,UAAuB;IAEvB,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/F,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,CAAC,mDAAmD,EAAE,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,SAAS,mDAAmD;IAC1D,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAC9B,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAC9B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,0CAA0C,CACjD,SAA+B;IAE/B,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvE,CAAC;AAED,SAAS,iCAAiC,CAIxC,QAAmB,EACnB,YAAuC;IAEvC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;AAC/F,CAAC;AAED,SAAS,iCAAiC,CAIxC,QAAmB,EACnB,aAAuD;IAEvD,OAAO;QACL,GAAG,QAAQ;QACX,KAAK,EAAE;YACL,GAAG,QAAQ,CAAC,KAAK;YACjB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;SAC3D;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4CAA4C,CAM1D,QAAmB,EACnB,WAAoE,EACpE,UAA+D,EAAc,EAC7E,QAAuF;IAEvF,MAAM,KAAK,GAAG,gCAAgC,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACzG,MAAM,UAAU,GAAmC;QACjD,uCAAuC,CAAC,oBAAoB,EAAE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACpI,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;YACvD,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACvB,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,GAAG;SACV,CAAC;QACF,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;YACvD,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACvB,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,GAAG;SACV,CAAC;QACF,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;YACvD,IAAI,EAAE,oCAAoC;YAC1C,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,GAAG;YAC3C,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,EAAE;SACT,CAAC;QACF,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;YACvD,IAAI,EAAE,qCAAqC;YAC3C,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,aAAa,IAAI,GAAG;YAC5C,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,EAAE;SACT,CAAC;QACF,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;YACvD,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,qBAAqB;YACpC,KAAK,EAAE,6CAA6C,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC9E,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,CAAC;YAChF,cAAc,EAAE;gBACd,WAAW,EAAE,2CAA2C,CAAC,KAAK,CAAC;aAChE;SACF,CAAC;KACH,CAAC;IAEF,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,OAAO,CAAC,0BAA0B,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC5H,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QAC9D,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QACpE,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC;YACpD,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,IAAI,4BAA4B;YACvE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,IAAI,UAAU;YACvD,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,WAAW;YAC/C,KAAK;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,IAAI,cAAc;YAC/D,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC,UAAU;YACrB,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACtH,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa;SAC9C,CAAC,CAAC,CAAC;QACJ,KAAK,IAAI,CAAC,CAAC;QACX,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC;YACpD,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,IAAI,+BAA+B;YAC7E,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,IAAI,aAAa;YAC7D,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,cAAc;YAClD,KAAK;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,IAAI,iBAAiB;YACrE,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC,aAAa;YACxB,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YAC5H,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa;SACjD,CAAC,CAAC,CAAC;QACJ,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,CAAC,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,SAAS;QACpF,MAAM,KAAK,GAAG,mCAAmC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/D,UAAU,CAAC,IAAI,CAAC,iDAAiD,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5H,KAAK,IAAI,CAAC,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,qDAAqD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvH,KAAK,IAAI,CAAC,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,0DAA0D,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5H,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1F,UAAU,CAAC,IAAI,CAAC,yDAAyD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC3H,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7D,UAAU,CAAC,IAAI,CAAC,+CAA+C,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjH,KAAK,IAAI,CAAC,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,oDAAoD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtH,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,sCAAsC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5D,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACvE,IAAI,EAAE,sBAAsB,KAAK,aAAa;gBAC9C,KAAK,EAAE,GAAG,KAAK,OAAO;gBACtB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;gBACvB,UAAU,EAAE,MAAM;gBAClB,KAAK;gBACL,IAAI,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC,CAAC;YACJ,KAAK,IAAI,CAAC,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,mDAAmD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrH,KAAK,IAAI,CAAC,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,wDAAwD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1H,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,uCAAuC,CAAC,UAAU,EAAE;QAClD,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,WAAW,IAAI,KAAK;QAC3B,KAAK;QACL,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,yCAAyC,CAMvD,MAAe,EACf,QAAmB,EACnB,OAAiB,EACjB,QAAuF;IAEvF,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;QAChD,WAAW,EAAE,UAAU;QACvB,kBAAkB,EAAE,IAAI;QACxB,UAAU,EAAE,4CAA4C,CACtD,QAAQ,EACR,WAAW,EACX;YACE,GAAG,OAAO;YACV,0BAA0B,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK;SACnE,EACD,QAAQ,CACT;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8CAA8C,CAM5D,QAAmB,EACnB,SAA4B,EAC5B,QAAuB,EACvB,OAAiB,EACjB,QAAuF;IAEvF,MAAM,OAAO,GAAG,+CAA+C,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/F,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,wBAAwB,GAAG,gDAAgD,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjI,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,4CAA4C,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE;QAC5F,GAAG,OAAO;QACV,0BAA0B,EAAE,KAAK;KAClC,EAAE,QAAQ,CAAC;SACT,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,2CAA2C,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;SACnG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAC1C,QAAQ,CAAC,QAAQ;WACZ,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAC/G,CAAC,CAAC;SACF,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChB,GAAG,QAAQ;QACX,KAAK,EAAE,gDAAgD,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;KACnG,CAAC,CAAC,CAAC;IACN,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5F,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,MAAM;QAC9I,WAAW,EAAE,UAAU;QACvB,kBAAkB,EAAE,KAAK;QACzB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iDAAiD,CAM/D,QAAmB,EACnB,SAA4B,EAC5B,QAAuF;IAEvF,OAAO,+CAA+C,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;SAClF,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAOD,SAAS,+CAA+C,CAMtD,QAAmB,EACnB,SAA4B,EAC5B,QAAuF;IAEvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAuD,EAAE,CAAC;IACvE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;YAAE,SAAS;QACzD,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,KAAK,EAAE,gCAAgC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC;SAC5H,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gDAAgD,CACvD,MAA8C,EAC9C,WAA4G,EAAE;IAE9G,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,+CAA+C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,+CAA+C,CACtD,KAAkC,EAClC,WAA4G,EAAE;IAE9G,OAAO,KAAK,CAAC,MAAM;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,yCAAyC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACjF,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;SAC7E,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,2CAA2C,CAClD,QAA2B,EAC3B,wBAAiC;IAEjC,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAC;IAC1G,IAAI,kDAAkD,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,IAAI,sCAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpG,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gDAAgD,CAMvD,OAAoE,EACpE,IAAY,EACZ,OAAiB,EACjB,QAAuF;IAEvF,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC7C,IAAI,CAAC,SAAS,CAAC,oDAAoD,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAC5G,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,oDAAoD,CAM3D,KAAkC,EAClC,IAAY,EACZ,OAAiB,EACjB,QAAuF;IAEvF,IAAI,IAAI,KAAK,oBAAoB;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACvD,IAAI,IAAI,KAAK,wBAAwB;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/D,IAAI,IAAI,KAAK,wBAAwB;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/D,IAAI,IAAI,KAAK,oCAAoC;QAAE,OAAO,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,GAAG,CAAC;IAC/F,IAAI,IAAI,KAAK,qCAAqC;QAAE,OAAO,KAAK,CAAC,SAAS,EAAE,aAAa,IAAI,GAAG,CAAC;IACjG,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,OAAO,6CAA6C,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,2CAA2C,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,2CAA2C,CAClD,KAAiC,EACjC,KAAyC;IAEzC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACxC,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrH,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,kCAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrH,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,KAAK,KAAK,sBAAsB;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,sDAAsD,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnJ,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,6CAA6C,CAMpD,KAAkC,EAClC,OAAiB,EACjB,QAAuF;IAEvF,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,wCAAwC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,OAAO;QACL,WAAW,EAAE;YACX,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,GAAG;YAC3C,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,aAAa,IAAI,GAAG;SAC9C;QACD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,6CAA6C,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtI,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,6CAA6C,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KAClI,CAAC;AACJ,CAAC;AAED,SAAS,6CAA6C,CAMpD,OAAiB,EACjB,KAAiC,EACjC,KAAa,EACb,QAAuF;IAEvF,OAAO;QACL,KAAK;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,mCAAmC,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC3D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;QAChC,QAAQ,EAAE,wCAAwC,CAAC,KAAK,EAAE,QAAQ,CAAC;QACnE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,qCAAqC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,KAAiC,EACjC,WAAsG,EAAE;IAExG,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,qCAAqC,CAM5C,OAAiB,EACjB,KAAiC,EACjC,QAAuF;IAEvF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QACnF,MAAM,GAAG,GAAG,YAAY,EAAE,GAAG,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpF,OAAO,GAAG;YACR,CAAC,CAAC;gBACA,IAAI,EAAE,OAAO;gBACb,GAAG;gBACH,GAAG,EAAE,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,SAAS;gBAC3C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C;YACD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,oDAAoD,CAAC,KAAK,CAAC;YAClE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACtB,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU;YACjC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;YAC7B,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU;YACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACvB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACnC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACnC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACvB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;SAC9B,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sDAAsD,CAC7D,KAAyC;IAEzC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,oBAAoB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC3G,CAAC,CAAC,KAAK,CAAC,oBAAoB;QAC5B,CAAC,CAAC,gDAAgD,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,oDAAoD,CAAC,KAAyC;IACrG,OAAO,sDAAsD,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC7E,CAAC;AAED,SAAS,iDAAiD,CAMxD,QAAmB,EACnB,OAAiB,EACjB,KAAwC,EACxC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACrF,MAAM,IAAI,GAAG,sBAAsB,UAAU,YAAY,CAAC;IAC1D,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI;QACJ,KAAK,EAAE,GAAG,KAAK,MAAM;QACrB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,mBAAmB;QAClC,KAAK,EAAE,KAAK,CAAC,SAAS;QACtB,UAAU,EAAE,QAAQ;QACpB,KAAK;QACL,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;QACvC,cAAc,EAAE,QAAQ,CAAC,iCAAiC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI;YAC9G,gBAAgB,EAAE,KAAK,CAAC,SAAS;YACjC,cAAc;SACf;QACD,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;KACjE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,+CAA+C,CACtD,QAAmB,EACnB,KAA2E,EAC3E,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,QAAQ;QAC9C,KAAK,EAAE,GAAG,KAAK,QAAQ;QACvB,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,WAAW;QACvB,KAAK;QACL,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oDAAoD,CAC3D,QAAmB,EACnB,KAA2E,EAC3E,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,UAAU;QAChD,KAAK,EAAE,GAAG,KAAK,QAAQ;QACvB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM;QAClB,KAAK;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yDAAyD,CAChE,QAAmB,EACnB,KAAyC,EACzC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,MAAM,IAAI,GAAG,sBAAsB,UAAU,uBAAuB,CAAC;IACrE,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI;QACJ,KAAK,EAAE,GAAG,KAAK,YAAY;QAC3B,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,sDAAsD,CAAC,KAAK,CAAC;QACpE,UAAU,EAAE,MAAM;QAClB,KAAK;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;QACnC,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;KACjE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qDAAqD,CAC5D,QAAmB,EACnB,KAAwC,EACxC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,kCAAkC,CAAC;IAC9D,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,OAAO;QAC7C,KAAK,EAAE,GAAG,KAAK,aAAa;QAC5B,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,WAAW;QACvB,KAAK;QACL,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0DAA0D,CACjE,QAAmB,EACnB,KAAwC,EACxC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,kCAAkC,CAAC;IAC9D,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,SAAS;QAC/C,KAAK,EAAE,GAAG,KAAK,aAAa;QAC5B,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;QAClB,UAAU,EAAE,MAAM;QAClB,KAAK;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mDAAmD,CAC1D,QAAmB,EACnB,KAAqC,EACrC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,aAAa;QACnD,KAAK,EAAE,GAAG,KAAK,aAAa;QAC5B,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QACvB,UAAU,EAAE,WAAW;QACvB,KAAK;QACL,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wDAAwD,CAC/D,QAAmB,EACnB,KAAqC,EACrC,UAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAuF;IAEvF,OAAO,QAAQ,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC9D,IAAI,EAAE,sBAAsB,UAAU,eAAe;QACrD,KAAK,EAAE,GAAG,KAAK,aAAa;QAC5B,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM;QAClB,KAAK;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2CAA2C,CAAC,KAAkC;IACrF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,WAAW,EAAE,IAAI,CAAC;IACrC,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC3G,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,uCAAuC,CAC9C,UAA0C,EAC1C,KAAkF;IAElF,MAAM,QAAQ,GAAG,0CAA0C,CAAY,KAAK,CAAC,CAAC;IAC9E,IAAI,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,uCAAuC,CAC9C,IAAY,EACZ,KAAa,EACb,KAAc,EACd,KAAa,EACb,OAAgB;IAEhB,OAAO,0CAA0C,CAAY;QAC3D,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,WAAW,EAAE,UAAU;QACvB,MAAM,EAAE,UAAU;QAClB,OAAO;KACR,CAAE,CAAC;AACN,CAAC;AAED,SAAS,qCAAqC,CAAY,KAWzD;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/H,CAAC;IACF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,yBAAyB;QACxC,cAAc,EAAE;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E;QACD,KAAK,EAAE,KAAK,CAAC,QAAQ;QACrB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO;QAC9C,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/G,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC","sourcesContent":["import type {\n DocumentCommand,\n InspectorProperty,\n InspectorSection,\n InspectorValidationResult,\n} from '../core-contracts/index';\nimport {\n createEditorSceneReadonlyInspectorProperty,\n} from '../inspector/index';\nimport {\n findEditorSceneTransform,\n type EditorSceneComponent,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneVec3,\n} from '../document/index';\n\nexport const PLAYABLE_GROUND_DECAL_TEXTURE_TINT = { r: 1, g: 1, b: 1, a: 1 } as const;\n\nexport type PlayableGroundDecalUiKind = string;\n\nexport interface PlayableGroundDecalVec3 {\n x: number;\n y: number;\n z: number;\n}\n\nexport interface PlayableGroundDecalUiColor {\n r: number;\n g: number;\n b: number;\n a?: number;\n}\n\nexport interface PlayableGroundDecalUiRect {\n x: number;\n z: number;\n width: number;\n depth: number;\n}\n\nexport interface PlayableGroundDecalUiLayerBase {\n id: string;\n role: string;\n kind: string;\n rect: PlayableGroundDecalUiRect;\n enabled?: boolean;\n opacity?: number;\n zOrder?: number;\n}\n\nexport interface PlayableGroundDecalUiTextureLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'texture';\n textureId: string;\n tint?: PlayableGroundDecalUiColor;\n}\n\nexport interface PlayableGroundDecalUiColorLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'color';\n color: PlayableGroundDecalUiColor;\n}\n\nexport interface PlayableGroundDecalUiTextLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'text';\n text: {\n value: string;\n color: PlayableGroundDecalUiColor;\n fontFamily?: string;\n fontSize?: number;\n fontWeight?: string | number;\n strokeColor?: PlayableGroundDecalUiColor;\n strokeWidth?: number;\n align?: string;\n baseline?: string;\n };\n}\n\nexport interface PlayableGroundDecalUiProgressLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'progress';\n color: PlayableGroundDecalUiColor;\n direction?: string;\n editorPreviewPercent?: number;\n}\n\nexport type PlayableGroundDecalUiLayer =\n | PlayableGroundDecalUiTextureLayer\n | PlayableGroundDecalUiColorLayer\n | PlayableGroundDecalUiTextLayer\n | PlayableGroundDecalUiProgressLayer;\n\nexport interface PlayableGroundDecalUiConfig {\n uiKind: PlayableGroundDecalUiKind;\n size: {\n width: number;\n depth: number;\n };\n layers: PlayableGroundDecalUiLayer[];\n mask?: unknown;\n rendering?: {\n textureWidth?: number;\n textureHeight?: number;\n };\n aspectSourceLayerId?: string;\n}\n\nexport type PlayableGroundDecalLayoutLayerPatch = {\n id: string;\n rect: PlayableGroundDecalUiRect;\n};\n\nexport type PlayableGroundDecalLayerPatchField =\n | 'rect'\n | 'textureId'\n | 'text.value'\n | 'color'\n | 'color.a'\n | 'tint'\n | 'tint.a'\n | 'text.color'\n | 'text.color.a'\n | 'editorPreviewPercent';\n\nexport interface PlayableGroundDecalInspectorTextureAsset {\n id: string;\n label: string;\n url: string;\n meta?: string;\n}\n\nexport interface PlayableGroundDecalInspectorContext {\n textureAssets?: readonly PlayableGroundDecalInspectorTextureAsset[];\n}\n\nexport type PlayableGroundDecalDocumentInspectorPropertyFactory<TDocument, TNodeKind> = (\n document: TDocument | null,\n nodeKind: TNodeKind,\n property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>,\n) => InspectorProperty<TDocument>;\n\nexport interface PlayableGroundDecalLayerPairActionOptions {\n addActionId: string;\n removeActionId: string;\n addPath?: string;\n removePath?: string;\n addLabel?: string;\n removeLabel?: string;\n addTooltip?: string;\n removeTooltip?: string;\n}\n\nexport type PlayableGroundDecalEditorSceneGameObject<TConfig extends PlayableGroundDecalUiConfig = PlayableGroundDecalUiConfig> =\n EditorSceneGameObject & {\n groundDecal?: Partial<TConfig> | null;\n };\n\nexport type PlayableGroundDecalEditorSceneDocument<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject = PlayableGroundDecalEditorSceneGameObject,\n> = EditorSceneDocument<TGameObject>;\n\nexport interface PlayableGroundDecalDocumentServices<\n TConfig extends PlayableGroundDecalUiConfig = PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig> = PlayableGroundDecalEditorSceneGameObject<TConfig>,\n> {\n defaultUiKind?: PlayableGroundDecalUiKind;\n isKnownUiKind?: (value: string) => boolean;\n isProjectEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isLayoutEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n createDefaultGroundDecal(uiKind: PlayableGroundDecalUiKind): TConfig;\n isGroundDecalConfig(value: unknown): value is TConfig;\n canShowGroundDecalInspector(gameObject: TGameObject): boolean;\n isGroundDecalUiGameObject(gameObject: TGameObject): gameObject is TGameObject & { groundDecal: TConfig };\n}\n\nexport interface PlayableGroundDecalInspectorServices<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n> {\n defaultUiKind?: PlayableGroundDecalUiKind;\n isKnownUiKind?: (value: string) => boolean;\n isProjectEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isLayoutEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isEditableTextureLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiTextureLayer;\n isEditableColorLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer;\n isEditableTextLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiTextLayer;\n useUniformLayoutScaleMode?: (layer: PlayableGroundDecalUiLayer) => boolean;\n createLayerLabel?: (layer: PlayableGroundDecalUiLayer) => string;\n createUiKindLabel?: (uiKind: PlayableGroundDecalUiKind) => string;\n canShowLayerPairActions?: (decal: PlayableGroundDecalUiConfig) => boolean;\n createLayerPairDisabledReason?: (input: {\n decal: PlayableGroundDecalUiConfig;\n action: 'add' | 'remove';\n pairCount: number;\n }) => string | undefined;\n createDefaultGroundDecal(uiKind: PlayableGroundDecalUiKind): PlayableGroundDecalUiConfig;\n createDocumentInspectorProperty: PlayableGroundDecalDocumentInspectorPropertyFactory<TDocument, TNodeKind>;\n normalizeValue(path: string, value: unknown): unknown;\n findTarget(document: TDocument, targetId: string): TTarget | null;\n getTargetId(target: TTarget): string;\n getTargetNodeKind(target: TTarget): TNodeKind;\n getTargetGroundDecal(target: TTarget): Partial<PlayableGroundDecalUiConfig> | null | undefined;\n canShowTarget(target: TTarget): boolean;\n isUiTarget?(target: TTarget): boolean;\n canPatchMultiField(document: TDocument, targetId: string, path: string, value: unknown): boolean;\n findTextureAsset?(\n context: TContext,\n textureId: string | null | undefined,\n ): PlayableGroundDecalInspectorTextureAsset | null;\n resolveTextureAssetUrl?(textureId: string | null | undefined): string | null | undefined;\n getMaterialText?(language: 'zh' | 'en'): unknown;\n createTexturePickerControlOptions?(\n context: TContext,\n text: unknown,\n currentTextureId: string | null | undefined,\n currentTexture: PlayableGroundDecalInspectorTextureAsset | null,\n ): InspectorProperty<TDocument>['controlOptions'];\n getLayerPairs?(decal: PlayableGroundDecalUiConfig): readonly unknown[];\n canAddLayerPair?(decal: PlayableGroundDecalUiConfig): boolean;\n canRemoveLayerPair?(decal: PlayableGroundDecalUiConfig): boolean;\n layerPairActions?: PlayableGroundDecalLayerPairActionOptions;\n}\n\nexport interface PlayableGroundDecalDocumentServiceBridgeInput<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n> extends Pick<\n PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n | 'defaultUiKind'\n | 'isKnownUiKind'\n | 'isProjectEditableLayer'\n | 'isLayoutEditableLayer'\n | 'createDefaultGroundDecal'\n | 'isGroundDecalConfig'\n > {\n canShowGroundDecalInspector(gameObject: TGameObject): boolean;\n isGroundDecalUiGameObject(gameObject: TGameObject): gameObject is TGameObject & { groundDecal: TConfig };\n}\n\nexport interface PlayableGroundDecalInspectorServiceBridgeInput<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext,\n> {\n policy: Pick<\n PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n 'createDefaultGroundDecal'\n > & Partial<PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>>;\n createDocumentInspectorProperty: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['createDocumentInspectorProperty'];\n normalizeValue: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['normalizeValue'];\n findTarget: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['findTarget'];\n getTargetId: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetId'];\n getTargetNodeKind: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetNodeKind'];\n getTargetGroundDecal: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetGroundDecal'];\n canShowTarget: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['canShowTarget'];\n isUiTarget?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['isUiTarget'];\n canPatchMultiField: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['canPatchMultiField'];\n findTextureAsset?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['findTextureAsset'];\n resolveTextureAssetUrl?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['resolveTextureAssetUrl'];\n getMaterialText?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getMaterialText'];\n createTexturePickerControlOptions?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['createTexturePickerControlOptions'];\n}\n\nexport interface PlayableGroundDecalDocumentBridge<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n> {\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>;\n normalizeLayoutPatchValue(value: unknown): PlayableGroundDecalLayoutLayerPatch[] | null;\n isLayoutPatchCompatibleWithDecal(\n decal: TConfig,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n ): boolean;\n canPatchMultiField(document: TDocument, targetId: string, path: string, value: unknown): boolean;\n patchLayout(document: TDocument, targetId: string, value: unknown): TDocument;\n patchKind(document: TDocument, targetId: string, value: unknown): TDocument;\n patchInspectorField(document: TDocument, targetId: string, path: string, value: unknown): TDocument | null;\n normalizeGameObject(gameObject: TGameObject): TGameObject;\n replaceUi(document: TDocument, targetId: string, groundDecal: TConfig): TDocument;\n normalizeScaleAfterFieldPatch(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n ): TDocument;\n normalizeScalesForCommand<TPatch>(\n document: TDocument,\n command: DocumentCommand<TDocument, TPatch>,\n ): TDocument;\n normalizeScales(document: TDocument, targetId?: string, uniformOverride?: number | null): TDocument;\n mergeDefaults(groundDecal: Partial<TConfig> | null | undefined): TConfig;\n}\n\nexport function createPlayableGroundDecalDocumentServices<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n input: PlayableGroundDecalDocumentServiceBridgeInput<TConfig, TGameObject>,\n): PlayableGroundDecalDocumentServices<TConfig, TGameObject> {\n return { ...input };\n}\n\nexport function createPlayableGroundDecalDocumentBridge<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject> = PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n input: PlayableGroundDecalDocumentServiceBridgeInput<TConfig, TGameObject>,\n): PlayableGroundDecalDocumentBridge<TConfig, TGameObject, TDocument> {\n const services = createPlayableGroundDecalDocumentServices(input);\n return {\n services,\n normalizeLayoutPatchValue: value => normalizePlayableGroundDecalLayoutPatchValue(value, services),\n isLayoutPatchCompatibleWithDecal: (decal, patches) => (\n isPlayableGroundDecalLayoutPatchCompatibleWithDecal(decal, patches, services)\n ),\n canPatchMultiField: (document, targetId, path, value) => (\n canPatchPlayableEditorSceneGroundDecalMultiField(document, targetId, path, value, services)\n ),\n patchLayout: (document, targetId, value) => (\n patchPlayableEditorSceneGroundDecalLayout(document, targetId, value, services)\n ),\n patchKind: (document, targetId, value) => (\n patchPlayableEditorSceneGroundDecalKind(document, targetId, value, services)\n ),\n patchInspectorField: (document, targetId, path, value) => (\n patchPlayableEditorSceneGroundDecalInspectorField(document, targetId, path, value, services)\n ),\n normalizeGameObject: gameObject => normalizePlayableEditorSceneGroundDecalGameObject(gameObject, services),\n replaceUi: (document, targetId, groundDecal) => (\n replacePlayableEditorSceneGroundDecalUi(document, targetId, groundDecal, services)\n ),\n normalizeScaleAfterFieldPatch: (document, targetId, path, value) => (\n normalizePlayableGroundDecalUiScaleAfterFieldPatch(document, targetId, path, value, services)\n ),\n normalizeScalesForCommand: (document, command) => (\n normalizePlayableGroundDecalUiScalesForCommand(document, command, services)\n ),\n normalizeScales: (document, targetId, uniformOverride) => (\n normalizePlayableGroundDecalUiScales(document, services, targetId, uniformOverride)\n ),\n mergeDefaults: groundDecal => mergePlayableGroundDecalDefaults(\n groundDecal,\n services.createDefaultGroundDecal,\n services,\n ),\n };\n}\n\nexport function createPlayableGroundDecalInspectorServices<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext,\n>(\n input: PlayableGroundDecalInspectorServiceBridgeInput<TDocument, TNodeKind, TTarget, TContext>,\n): PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext> {\n return {\n ...input.policy,\n createDocumentInspectorProperty: input.createDocumentInspectorProperty,\n normalizeValue: input.normalizeValue,\n findTarget: input.findTarget,\n getTargetId: input.getTargetId,\n getTargetNodeKind: input.getTargetNodeKind,\n getTargetGroundDecal: input.getTargetGroundDecal,\n canShowTarget: input.canShowTarget,\n isUiTarget: input.isUiTarget,\n canPatchMultiField: input.canPatchMultiField,\n findTextureAsset: input.findTextureAsset,\n resolveTextureAssetUrl: input.resolveTextureAssetUrl,\n getMaterialText: input.getMaterialText,\n createTexturePickerControlOptions: input.createTexturePickerControlOptions,\n };\n}\n\nconst PLAYABLE_GROUND_DECAL_UI_EDITOR_PROGRESS_PERCENT = 75;\n\nexport function resolvePlayableGroundDecalUiInspectorScale(path: string, value: unknown): number | null {\n if (path === 'transform.scale') {\n const scale = value as Partial<PlayableGroundDecalVec3> | null;\n if (!scale || typeof scale !== 'object') return null;\n return resolvePlayableGroundDecalUniformScaleFromVec3({\n x: typeof scale.x === 'number' ? scale.x : 1,\n y: typeof scale.y === 'number' ? scale.y : 1,\n z: typeof scale.z === 'number' ? scale.z : 1,\n });\n }\n if (!/^transform\\.scale\\.(x|y|z)$/.test(path)) return null;\n if (typeof value !== 'number' || !Number.isFinite(value)) return null;\n return Math.max(0.001, Math.abs(value));\n}\n\nexport function normalizePlayableGroundDecalLayoutPatchValue(\n value: unknown,\n options: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): PlayableGroundDecalLayoutLayerPatch[] | null {\n const source = readPlayableGroundDecalRecord(value);\n const layers = Array.isArray(value)\n ? value\n : source && Array.isArray(source.layers)\n ? source.layers\n : null;\n if (!layers) return null;\n const normalized = layers\n .map((layer, index) => normalizePlayableGroundDecalLayoutLayerPatch(layer, index, options))\n .filter((layer): layer is PlayableGroundDecalLayoutLayerPatch => !!layer);\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function normalizePlayableGroundDecalLayoutLayerPatch(\n value: unknown,\n index: number,\n options: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): PlayableGroundDecalLayoutLayerPatch | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n if (!isPlayableGroundDecalLayoutEditableLayer(source as unknown as PlayableGroundDecalUiLayer, options)) return null;\n const id = readPlayableGroundDecalString(source.id) ?? `layer_${index}`;\n const rect = normalizePlayableGroundDecalLayoutRect(source.rect);\n return rect ? { id, rect } : null;\n}\n\nexport function normalizePlayableGroundDecalLayoutRect(value: unknown): PlayableGroundDecalUiRect | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n const x = readPlayableGroundDecalFiniteNumber(source.x);\n const z = readPlayableGroundDecalFiniteNumber(source.z);\n const width = readPlayableGroundDecalPositiveFiniteNumber(source.width);\n const depth = readPlayableGroundDecalPositiveFiniteNumber(source.depth);\n return x == null || z == null || width == null || depth == null\n ? null\n : { x, z, width, depth };\n}\n\nexport function readPlayableGroundDecalFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nexport function readPlayableGroundDecalPositiveFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null;\n}\n\nexport function validatePlayableGroundDecalInspectorField(\n path: string,\n value: unknown,\n): InspectorValidationResult | null {\n if (isPlayableGroundDecalLayerRectPath(path)) {\n return normalizePlayableGroundDecalLayoutRect(value)\n ? { ok: true, value }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerTexturePath(path)) {\n return typeof value === 'string' && value.trim().length > 0\n ? { ok: true, value: value.trim() }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerTextValuePath(path)) {\n return typeof value === 'string'\n ? { ok: true, value }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (\n isPlayableGroundDecalLayerColorPath(path)\n || isPlayableGroundDecalLayerTextureTintPath(path)\n || isPlayableGroundDecalLayerTextColorPath(path)\n ) {\n const color = normalizePlayableGroundDecalColorValue(value);\n return color\n ? { ok: true, value: color }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (\n isPlayableGroundDecalLayerColorAlphaPath(path)\n || isPlayableGroundDecalLayerTextureTintAlphaPath(path)\n || isPlayableGroundDecalLayerTextColorAlphaPath(path)\n ) {\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n return alpha !== null\n ? { ok: true, value: alpha }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerProgressPreviewPercentPath(path)) {\n const percent = normalizePlayableGroundDecalProgressPreviewPercentValue(value);\n return percent !== null\n ? { ok: true, value: percent }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n const dimension = normalizePlayableGroundDecalTextureDimension(value);\n return dimension !== null\n ? { ok: true, value: dimension }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n return null;\n}\n\nexport function parsePlayableGroundDecalLayerPatchPath(\n path: string,\n): { index: number; field: PlayableGroundDecalLayerPatchField } | null {\n const match = path.match(/^groundDecal\\.layers\\.(\\d+)\\.(rect|textureId|text\\.value|color|color\\.a|tint|tint\\.a|text\\.color|text\\.color\\.a|editorPreviewPercent)$/);\n if (!match) return null;\n const index = Number(match[1]);\n if (!Number.isInteger(index) || index < 0) return null;\n return { index, field: match[2] as PlayableGroundDecalLayerPatchField };\n}\n\nexport function isPlayableGroundDecalLayerRectPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.rect$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTexturePath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.textureId$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerColorPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.color$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerColorAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.color\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextValuePath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.value$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextColorPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.color$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextColorAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.color\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextureTintPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.tint$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextureTintAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.tint\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerProgressPreviewPercentPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.editorPreviewPercent$/.test(path);\n}\n\nexport function isPlayableGroundDecalRenderingTextureDimensionPath(path: string): boolean {\n return path === 'groundDecal.rendering.textureWidth' || path === 'groundDecal.rendering.textureHeight';\n}\n\nexport function isPlayableGroundDecalInspectorPatchPath(path: string): boolean {\n return !!parsePlayableGroundDecalLayerPatchPath(path) || isPlayableGroundDecalRenderingTextureDimensionPath(path);\n}\n\nexport function isPlayableGroundDecalSerializedMultiFieldPath(path: string): boolean {\n return path === 'groundDecal.size.width'\n || path === 'groundDecal.size.depth'\n || path === 'groundDecal.layers'\n || isPlayableGroundDecalInspectorPatchPath(path);\n}\n\nexport function canPatchPlayableGroundDecalLayerField(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n services: Pick<\n PlayableGroundDecalInspectorServices<unknown, unknown, unknown>,\n 'isLayoutEditableLayer' | 'isEditableTextureLayer' | 'isEditableColorLayer' | 'isEditableTextLayer'\n > = {},\n): boolean {\n if (field === 'rect') return isPlayableGroundDecalLayoutEditableLayer(layer, services);\n if (field === 'textureId' || field === 'tint' || field === 'tint.a') return isPlayableGroundDecalEditableTextureLayer(layer, services);\n if (field === 'text.value' || field === 'text.color' || field === 'text.color.a') return isPlayableGroundDecalEditableTextLayer(layer, services);\n if (field === 'color' || field === 'color.a') return isPlayableGroundDecalEditableColorLayer(layer, services);\n if (field === 'editorPreviewPercent') return layer.kind === 'progress' && isPlayableGroundDecalEditableColorLayer(layer, services);\n return false;\n}\n\nexport function isPlayableGroundDecalProjectEditableLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalDocumentServices, 'isProjectEditableLayer'> = {},\n): boolean {\n return services.isProjectEditableLayer?.(layer) ?? layer.enabled !== false;\n}\n\nexport function isPlayableGroundDecalLayoutEditableLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): boolean {\n return services.isLayoutEditableLayer?.(layer) ?? layer.enabled !== false;\n}\n\nexport function isPlayableGroundDecalEditableTextureLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableTextureLayer'> = {},\n): layer is PlayableGroundDecalUiTextureLayer {\n return services.isEditableTextureLayer?.(layer) ?? layer.kind === 'texture';\n}\n\nexport function isPlayableGroundDecalEditableColorLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableColorLayer'> = {},\n): layer is PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer {\n return services.isEditableColorLayer?.(layer) ?? (layer.kind === 'color' || layer.kind === 'progress');\n}\n\nexport function isPlayableGroundDecalEditableTextLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableTextLayer'> = {},\n): layer is PlayableGroundDecalUiTextLayer {\n return services.isEditableTextLayer?.(layer) ?? layer.kind === 'text';\n}\n\nexport function isPlayableGroundDecalLayoutPatchCompatibleWithDecal(\n decal: PlayableGroundDecalUiConfig,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n services: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): boolean {\n const editableLayers = decal.layers.filter(layer => isPlayableGroundDecalLayoutEditableLayer(layer, services));\n if (patches.length !== editableLayers.length) return false;\n return editableLayers.every((layer, index) => patches[index]?.id === layer.id);\n}\n\nexport function normalizePlayableGroundDecalColorValue(value: unknown): PlayableGroundDecalUiColor | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n const r = readPlayableGroundDecalFiniteNumber(source.r);\n const g = readPlayableGroundDecalFiniteNumber(source.g);\n const b = readPlayableGroundDecalFiniteNumber(source.b);\n if (r == null || g == null || b == null) return null;\n const a = readPlayableGroundDecalFiniteNumber(source.a);\n return {\n r: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, r))),\n g: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, g))),\n b: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, b))),\n ...(a == null ? {} : { a: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, a))) }),\n };\n}\n\nexport function normalizePlayableGroundDecalAlphaValue(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n return numeric == null ? null : roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, numeric)));\n}\n\nexport function normalizePlayableGroundDecalProgressPreviewPercentValue(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n return numeric == null ? null : Math.round(Math.max(0, Math.min(100, numeric)));\n}\n\nexport function normalizePlayableGroundDecalTextureDimension(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n if (numeric == null || numeric <= 0) return null;\n return Math.max(64, Math.min(2048, Math.round(numeric)));\n}\n\nexport function roundPlayableGroundDecalFieldValue(value: number): number {\n return Math.round(value * 1000) / 1000;\n}\n\nexport function normalizePlayableGroundDecalInspectorFieldValue(path: string, value: unknown): unknown {\n if (path === 'groundDecal.layers') {\n return normalizePlayableGroundDecalLayoutPatchValue(value) ?? value;\n }\n if (isPlayableGroundDecalLayerRectPath(path)) {\n return normalizePlayableGroundDecalLayoutRect(value) ?? value;\n }\n if (isPlayableGroundDecalLayerTexturePath(path) && typeof value === 'string') {\n return value.trim();\n }\n if (isPlayableGroundDecalLayerTextValuePath(path) && typeof value === 'string') {\n return value;\n }\n if (\n isPlayableGroundDecalLayerColorPath(path)\n || isPlayableGroundDecalLayerTextureTintPath(path)\n || isPlayableGroundDecalLayerTextColorPath(path)\n ) {\n return normalizePlayableGroundDecalColorValue(value) ?? value;\n }\n if (\n isPlayableGroundDecalLayerColorAlphaPath(path)\n || isPlayableGroundDecalLayerTextureTintAlphaPath(path)\n || isPlayableGroundDecalLayerTextColorAlphaPath(path)\n ) {\n return normalizePlayableGroundDecalAlphaValue(value) ?? value;\n }\n if (isPlayableGroundDecalLayerProgressPreviewPercentPath(path)) {\n return normalizePlayableGroundDecalProgressPreviewPercentValue(value) ?? value;\n }\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return normalizePlayableGroundDecalTextureDimension(value) ?? value;\n }\n return value;\n}\n\nexport function patchPlayableGroundDecalLayer(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n value: unknown,\n): PlayableGroundDecalUiLayer | null {\n if (field === 'rect') {\n const rect = normalizePlayableGroundDecalLayoutRect(value);\n if (!rect) return null;\n if (playableGroundDecalRectsEqual(layer.rect, rect)) return layer;\n return { ...layer, rect } as PlayableGroundDecalUiLayer;\n }\n if (field === 'textureId') {\n if (layer.kind !== 'texture' || typeof value !== 'string' || !value.trim()) return null;\n const textureId = value.trim();\n if (layer.textureId === textureId) return layer;\n return { ...layer, textureId };\n }\n if (field === 'text.value') {\n if (layer.kind !== 'text' || typeof value !== 'string') return null;\n if (layer.text.value === value) return layer;\n return { ...layer, text: { ...layer.text, value } };\n }\n if (field === 'color') {\n if (layer.kind !== 'color' && layer.kind !== 'progress') return null;\n const color = normalizePlayableGroundDecalColorValue(value);\n if (!color) return null;\n const nextColor = {\n ...color,\n ...(color.a == null && layer.color.a != null ? { a: layer.color.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.color, nextColor)) return layer;\n return { ...layer, color: nextColor } as PlayableGroundDecalUiLayer;\n }\n if (field === 'color.a') {\n if (layer.kind !== 'color' && layer.kind !== 'progress') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextColor = { ...layer.color, a: alpha };\n if (playableGroundDecalColorsEqual(layer.color, nextColor)) return layer;\n return { ...layer, color: nextColor } as PlayableGroundDecalUiLayer;\n }\n if (field === 'editorPreviewPercent') {\n if (layer.kind !== 'progress') return null;\n const percent = normalizePlayableGroundDecalProgressPreviewPercentValue(value);\n if (percent === null) return null;\n if (layer.editorPreviewPercent === percent) return layer;\n return { ...layer, editorPreviewPercent: percent } as PlayableGroundDecalUiLayer;\n }\n if (field === 'tint') {\n if (layer.kind !== 'texture') return null;\n const tint = normalizePlayableGroundDecalColorValue(value);\n if (!tint) return null;\n const nextTint = {\n ...tint,\n ...(tint.a == null && layer.tint?.a != null ? { a: layer.tint.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT, nextTint)) return layer;\n return { ...layer, tint: nextTint };\n }\n if (field === 'tint.a') {\n if (layer.kind !== 'texture') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextTint = { ...PLAYABLE_GROUND_DECAL_TEXTURE_TINT, ...(layer.tint ?? {}), a: alpha };\n if (playableGroundDecalColorsEqual(layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT, nextTint)) return layer;\n return { ...layer, tint: nextTint };\n }\n if (field === 'text.color') {\n if (layer.kind !== 'text') return null;\n const color = normalizePlayableGroundDecalColorValue(value);\n if (!color) return null;\n const nextColor = {\n ...color,\n ...(color.a == null && layer.text.color.a != null ? { a: layer.text.color.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.text.color, nextColor)) return layer;\n return { ...layer, text: { ...layer.text, color: nextColor } };\n }\n if (field === 'text.color.a') {\n if (layer.kind !== 'text') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextColor = { ...layer.text.color, a: alpha };\n if (playableGroundDecalColorsEqual(layer.text.color, nextColor)) return layer;\n return { ...layer, text: { ...layer.text, color: nextColor } };\n }\n return null;\n}\n\nexport function mergePlayableGroundDecalDefaults<TConfig extends PlayableGroundDecalUiConfig>(\n groundDecal: Partial<TConfig> | null | undefined,\n createDefault: (uiKind: PlayableGroundDecalUiKind) => TConfig,\n options: Pick<PlayableGroundDecalDocumentServices, 'defaultUiKind' | 'isKnownUiKind'> = {},\n): TConfig {\n const source = groundDecal && typeof groundDecal === 'object' && !Array.isArray(groundDecal)\n ? groundDecal\n : null;\n const sourceUiKind = typeof source?.uiKind === 'string' ? source.uiKind.trim() : '';\n const uiKind = sourceUiKind && (options.isKnownUiKind?.(sourceUiKind) ?? true)\n ? sourceUiKind\n : options.defaultUiKind ?? 'default';\n const defaults = createDefault(uiKind);\n if (!source) return defaults;\n return {\n ...defaults,\n ...structuredClone(source),\n uiKind,\n size: {\n ...defaults.size,\n ...(source.size && typeof source.size === 'object' ? source.size : {}),\n },\n layers: Array.isArray(source.layers) && source.layers.length > 0\n ? structuredClone(source.layers)\n : defaults.layers,\n mask: source.mask && typeof source.mask === 'object'\n ? { ...(defaults.mask ?? {}), ...source.mask }\n : defaults.mask,\n rendering: source.rendering && typeof source.rendering === 'object'\n ? { ...(defaults.rendering ?? {}), ...source.rendering }\n : defaults.rendering,\n } as TConfig;\n}\n\nexport function playableGroundDecalColorsEqual(\n left: PlayableGroundDecalUiColor,\n right: PlayableGroundDecalUiColor,\n): boolean {\n return left.r === right.r\n && left.g === right.g\n && left.b === right.b\n && (left.a ?? 1) === (right.a ?? 1);\n}\n\nexport function playableGroundDecalRectsEqual(\n left: PlayableGroundDecalUiRect,\n right: PlayableGroundDecalUiRect,\n): boolean {\n return left.x === right.x\n && left.z === right.z\n && left.width === right.width\n && left.depth === right.depth;\n}\n\nexport function resolvePlayableGroundDecalUniformScaleFromVec3(scale: PlayableGroundDecalVec3): number {\n const values = [scale.x, scale.y, scale.z].filter(value => Number.isFinite(value));\n if (values.length === 0) return 1;\n const uniform = values.reduce((best, value) => Math.abs(value - 1) > Math.abs(best - 1) ? value : best, values[0]!);\n return Math.max(0.001, Math.abs(uniform));\n}\n\nexport function canPatchPlayableEditorSceneGroundDecalMultiField<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): boolean {\n if (!isPlayableGroundDecalSerializedMultiFieldPath(path)) return false;\n const gameObject = findPlayableGroundDecalGameObject<TGameObject, TDocument>(document, targetId);\n if (!gameObject || !services.canShowGroundDecalInspector(gameObject)) return false;\n const decal = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n if (path === 'groundDecal.size.width' || path === 'groundDecal.size.depth' || isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return true;\n }\n if (path === 'groundDecal.layers') {\n const patches = normalizePlayableGroundDecalLayoutPatchValue(value, services);\n if (!patches) return false;\n return isPlayableGroundDecalLayoutPatchCompatibleWithDecal(decal, patches, services);\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return false;\n const layer = decal.layers[parsed.index];\n return !!layer && isPlayableGroundDecalProjectEditableLayer(layer, services) && canPatchPlayableGroundDecalLayerField(layer, parsed.field, services);\n}\n\nexport function patchPlayableEditorSceneGroundDecalLayout<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n const patches = normalizePlayableGroundDecalLayoutPatchValue(value, services);\n if (!patches) return document;\n return mapPlayableGroundDecalGameObjects<TGameObject, TDocument>(document, (entry) => (\n entry.id === targetId ? patchPlayableEditorSceneGroundDecalLayoutGameObject(entry, patches, services) : entry\n ));\n}\n\nexport function patchPlayableEditorSceneGroundDecalKind<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (typeof value !== 'string' || !value.trim()) return document;\n const uiKind = value.trim();\n if (services.isKnownUiKind && !services.isKnownUiKind(uiKind)) return document;\n return mapPlayableGroundDecalGameObjects<TGameObject, TDocument>(document, (entry) => (\n entry.id === targetId ? patchPlayableEditorSceneGroundDecalKindGameObject(entry, uiKind, services) : entry\n ));\n}\n\nexport function patchPlayableEditorSceneGroundDecalInspectorField<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument | null {\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return patchPlayableEditorSceneGroundDecalRenderingDimension(document, targetId, path, value, services);\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return null;\n let changed = false;\n const normalizedValue = normalizePlayableGroundDecalInspectorFieldValue(path, value);\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId || !services.canShowGroundDecalInspector(entry)) return entry;\n const decal = mergePlayableGroundDecalDefaults(entry.groundDecal, services.createDefaultGroundDecal, services);\n const layer = decal.layers[parsed.index];\n if (!layer || !isPlayableGroundDecalProjectEditableLayer(layer, services)) return entry;\n if (parsed.field === 'rect' && !isPlayableGroundDecalLayoutEditableLayer(layer, services)) return entry;\n const patchedLayer = patchPlayableGroundDecalLayer(layer, parsed.field, normalizedValue);\n if (!patchedLayer || patchedLayer === layer) return entry;\n const layers = [...decal.layers];\n layers[parsed.index] = patchedLayer;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n groundDecal: {\n ...decal,\n layers,\n },\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function patchPlayableEditorSceneGroundDecalRenderingDimension<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n const dimension = normalizePlayableGroundDecalTextureDimension(value);\n if (dimension === null) return document;\n const key = path === 'groundDecal.rendering.textureWidth' ? 'textureWidth' : 'textureHeight';\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId || !services.canShowGroundDecalInspector(entry)) return entry;\n const decal = mergePlayableGroundDecalDefaults(entry.groundDecal, services.createDefaultGroundDecal, services);\n if (decal.rendering?.[key] === dimension) return entry;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n groundDecal: {\n ...decal,\n rendering: {\n ...decal.rendering,\n [key]: dimension,\n },\n },\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function replacePlayableEditorSceneGroundDecalUi<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n groundDecal: TConfig,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (!services.isGroundDecalConfig(groundDecal)) return document;\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId) return entry;\n if (!services.isGroundDecalUiGameObject(entry) || entry.groundDecal.uiKind !== groundDecal.uiKind) return entry;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: mergePlayableGroundDecalDefaults(groundDecal, services.createDefaultGroundDecal, services),\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function normalizePlayableGroundDecalUiScaleAfterFieldPatch<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (!path.startsWith('transform.scale')) return document;\n return normalizePlayableGroundDecalUiScales(document, services, targetId, resolvePlayableGroundDecalUiInspectorScale(path, value));\n}\n\nexport function normalizePlayableGroundDecalUiScalesForCommand<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n TPatch,\n>(\n document: TDocument,\n command: DocumentCommand<TDocument, TPatch>,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (command.type === 'document.replace') return normalizePlayableGroundDecalUiScales(document, services);\n const patch = command.patch as Record<string, unknown>;\n if (patch.kind === 'game-object.field') {\n return normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n document,\n String(patch.targetId ?? ''),\n String(patch.path ?? ''),\n patch.value,\n services,\n );\n }\n if (patch.kind === 'game-object.field-batch') {\n if (Array.isArray(patch.fields)) {\n return patch.fields.reduce<TDocument>((nextDocument, field) => {\n const record = readPlayableGroundDecalRecord(field);\n return normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n nextDocument,\n String(record?.targetId ?? ''),\n String(record?.path ?? ''),\n record?.value,\n services,\n );\n }, document);\n }\n if (Array.isArray(patch.targetIds)) {\n return patch.targetIds.reduce<TDocument>((nextDocument, targetId) => (\n normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n nextDocument,\n String(targetId),\n String(patch.path ?? ''),\n patch.value,\n services,\n )\n ), document);\n }\n return document;\n }\n return normalizePlayableGroundDecalUiScales(document, services);\n}\n\nexport function normalizePlayableGroundDecalUiScales<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n targetId?: string,\n uniformOverride?: number | null,\n): TDocument {\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((gameObject) => {\n if ((targetId && gameObject.id !== targetId) || !services.isGroundDecalUiGameObject(gameObject)) return gameObject;\n const transform = findEditorSceneTransform(gameObject);\n if (!transform || !isPlayableGroundDecalTrsTransformComponent(transform) || !transform.scale) return gameObject;\n const uniform = uniformOverride ?? resolvePlayableGroundDecalUniformScaleFromVec3(transform.scale);\n if (\n Math.abs(transform.scale.x - uniform) < 0.000001\n && Math.abs(transform.scale.y - uniform) < 0.000001\n && Math.abs(transform.scale.z - uniform) < 0.000001\n ) {\n return gameObject;\n }\n changed = true;\n return {\n ...gameObject,\n components: gameObject.components.map((component) => component === transform\n ? { ...component, scale: { x: uniform, y: uniform, z: uniform } }\n : component),\n };\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function normalizePlayableEditorSceneGroundDecalGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const next = ensurePlayableGroundDecalTransformComponent({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services),\n } as TGameObject);\n delete next.camera;\n delete next.light;\n delete next.primitive;\n return next;\n}\n\nexport function isPlayableEditorSceneGroundDecalProjectionPath(path: string): boolean {\n return path === 'groundDecal' || path.startsWith('groundDecal.');\n}\n\nfunction patchPlayableEditorSceneGroundDecalLayoutGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const patchById = new Map(patches.map(patch => [patch.id, patch]));\n const decal = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: {\n ...decal,\n layers: decal.layers.map((layer, index) => {\n if (!isPlayableGroundDecalLayoutEditableLayer(layer, services)) return layer;\n const patch = patchById.get(layer.id) ?? patches[index];\n return patch ? { ...layer, rect: patch.rect } : layer;\n }),\n },\n } as TGameObject, services);\n}\n\nfunction patchPlayableEditorSceneGroundDecalKindGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n uiKind: PlayableGroundDecalUiKind,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const previous = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n const defaults = services.createDefaultGroundDecal(uiKind);\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: {\n ...defaults,\n size: previous.size,\n mask: previous.mask ?? defaults.mask,\n rendering: previous.rendering ?? defaults.rendering,\n },\n } as TGameObject, services);\n}\n\nfunction ensurePlayableGroundDecalTransformComponent<TGameObject extends EditorSceneGameObject>(\n gameObject: TGameObject,\n): TGameObject {\n if (gameObject.components.some(component => component.type === 'Transform')) return gameObject;\n return {\n ...gameObject,\n components: [createPlayableGroundDecalIdentityTransformComponent(), ...gameObject.components],\n };\n}\n\nfunction createPlayableGroundDecalIdentityTransformComponent(): EditorSceneComponent {\n return {\n type: 'Transform',\n position: { x: 0, y: 0, z: 0 },\n rotation: { x: 0, y: 0, z: 0 },\n scale: { x: 1, y: 1, z: 1 },\n };\n}\n\nfunction isPlayableGroundDecalTrsTransformComponent(\n component: EditorSceneComponent,\n): component is EditorSceneComponent & { position: EditorSceneVec3; rotation: EditorSceneVec3; scale?: EditorSceneVec3 } {\n return component.type === 'Transform' && component.mode !== 'matrix';\n}\n\nfunction findPlayableGroundDecalGameObject<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n gameObjectId: string | null | undefined,\n): TGameObject | null {\n if (!gameObjectId) return null;\n return document.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null;\n}\n\nfunction mapPlayableGroundDecalGameObjects<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n mapGameObject: (gameObject: TGameObject) => TGameObject,\n): TDocument {\n return {\n ...document,\n scene: {\n ...document.scene,\n gameObjects: document.scene.gameObjects.map(mapGameObject),\n },\n };\n}\n\nexport function createPlayableGroundDecalInspectorProperties<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n nodeKind: TNodeKind,\n groundDecal: Partial<PlayableGroundDecalUiConfig> | null | undefined,\n options: TContext & { enableGroundDecalUiActions?: boolean } = {} as TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument>[] {\n const decal = mergePlayableGroundDecalDefaults(groundDecal, services.createDefaultGroundDecal, services);\n const properties: InspectorProperty<TDocument>[] = [\n createPlayableReadonlyInspectorProperty('groundDecal.uiKind', 'Type', services.createUiKindLabel?.(decal.uiKind) ?? decal.uiKind, 0),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.size.width',\n label: 'Width',\n valueType: 'number',\n control: 'number',\n value: decal.size.width,\n commitMode: 'live',\n order: 1,\n min: 0.001,\n step: 0.1,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.size.depth',\n label: 'Depth',\n valueType: 'number',\n control: 'number',\n value: decal.size.depth,\n commitMode: 'live',\n order: 2,\n min: 0.001,\n step: 0.1,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.rendering.textureWidth',\n label: 'Texture Width',\n valueType: 'number',\n control: 'number',\n value: decal.rendering?.textureWidth ?? 512,\n commitMode: 'change',\n order: 3,\n min: 64,\n max: 2048,\n step: 64,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.rendering.textureHeight',\n label: 'Texture Height',\n valueType: 'number',\n control: 'number',\n value: decal.rendering?.textureHeight ?? 512,\n commitMode: 'change',\n order: 4,\n min: 64,\n max: 2048,\n step: 64,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.layers',\n label: 'Layout',\n valueType: 'object',\n control: 'custom',\n customControl: 'ground-decal-layout',\n value: createPlayableGroundDecalLayoutInspectorValue(decal, options, services),\n commitMode: 'live',\n order: 5,\n coerce: (value: unknown) => services.normalizeValue('groundDecal.layers', value),\n controlOptions: {\n aspectRatio: resolvePlayableGroundDecalLayoutAspectRatio(decal),\n },\n }),\n ];\n\n let order = 10;\n if (options.enableGroundDecalUiActions && (services.canShowLayerPairActions?.(decal) ?? false) && services.layerPairActions) {\n const pairCount = services.getLayerPairs?.(decal).length ?? 0;\n const canAddPair = services.canAddLayerPair?.(decal) ?? false;\n const canRemovePair = services.canRemoveLayerPair?.(decal) ?? false;\n properties.push(createPlayableInspectorActionProperty({\n path: services.layerPairActions.addPath ?? 'groundDecal.layerPairs.add',\n label: services.layerPairActions.addLabel ?? 'Add item',\n actionId: services.layerPairActions.addActionId,\n order,\n icon: 'asset',\n tooltip: services.layerPairActions.addTooltip ?? 'Add an item.',\n params: {},\n disabled: !canAddPair,\n disabledReason: canAddPair ? undefined : services.createLayerPairDisabledReason?.({ decal, action: 'add', pairCount }),\n effect: canAddPair ? 'active' : 'unsupported',\n }));\n order += 1;\n properties.push(createPlayableInspectorActionProperty({\n path: services.layerPairActions.removePath ?? 'groundDecal.layerPairs.remove',\n label: services.layerPairActions.removeLabel ?? 'Remove item',\n actionId: services.layerPairActions.removeActionId,\n order,\n icon: 'asset',\n tooltip: services.layerPairActions.removeTooltip ?? 'Remove an item.',\n params: {},\n disabled: !canRemovePair,\n disabledReason: canRemovePair ? undefined : services.createLayerPairDisabledReason?.({ decal, action: 'remove', pairCount }),\n effect: canRemovePair ? 'active' : 'unsupported',\n }));\n order += 1;\n }\n\n for (let index = 0; index < decal.layers.length; index += 1) {\n const layer = decal.layers[index];\n if (!layer || !isPlayableGroundDecalProjectEditableLayer(layer, services)) continue;\n const label = createPlayableGroundDecalLayerLabel(layer, services);\n if (isPlayableGroundDecalEditableTextureLayer(layer, services)) {\n properties.push(createPlayableGroundDecalTextureInspectorProperty(nodeKind, options, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextureTintInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextureTintAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (layer.kind === 'progress' && isPlayableGroundDecalEditableColorLayer(layer, services)) {\n properties.push(createPlayableGroundDecalProgressPreviewInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (isPlayableGroundDecalEditableColorLayer(layer, services)) {\n properties.push(createPlayableGroundDecalColorInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalColorAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (isPlayableGroundDecalEditableTextLayer(layer, services)) {\n properties.push(services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${index}.text.value`,\n label: `${label} Text`,\n valueType: 'string',\n control: 'string',\n value: layer.text.value,\n commitMode: 'blur',\n order,\n tags: ['GroundDecalUI', 'Text'],\n }));\n order += 1;\n properties.push(createPlayableGroundDecalTextColorInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextColorAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n }\n\n appendPlayableReadonlyInspectorProperty(properties, {\n path: 'groundDecal.raw',\n label: 'Raw Ground Decal',\n value: groundDecal ?? decal,\n order,\n source: 'Document',\n tags: ['Raw'],\n });\n return properties;\n}\n\nexport function createPlayableGroundDecalInspectorSection<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n target: TTarget,\n nodeKind: TNodeKind,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorSection<TDocument> {\n const groundDecal = services.getTargetGroundDecal(target);\n return {\n id: 'groundDecal',\n title: 'Ground Decal',\n order: 40,\n placement: 'body',\n summary: groundDecal ? 'Configured' : 'Defaults',\n persistence: 'document',\n collapsedByDefault: true,\n properties: createPlayableGroundDecalInspectorProperties(\n nodeKind,\n groundDecal,\n {\n ...context,\n enableGroundDecalUiActions: services.isUiTarget?.(target) ?? false,\n },\n services,\n ),\n };\n}\n\nexport function createPlayableGroundDecalMultiInspectorSection<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n activeId: string | null,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorSection<TDocument> | null {\n const targets = resolvePlayableGroundDecalMultiInspectorTargets(document, targetIds, services);\n if (targets.length <= 1) return null;\n const activeTarget = targets.find(target => services.getTargetId(target.target) === activeId) ?? targets[0];\n if (!activeTarget) return null;\n const compatibleLayerSignature = haveCompatiblePlayableGroundDecalLayerSignatures(targets.map(target => target.decal), services);\n const nodeKind = services.getTargetNodeKind(activeTarget.target);\n const properties = createPlayableGroundDecalInspectorProperties(nodeKind, activeTarget.decal, {\n ...context,\n enableGroundDecalUiActions: false,\n }, services)\n .filter(property => isPlayableGroundDecalMultiInspectorProperty(property, compatibleLayerSignature))\n .filter(property => targets.every(target => (\n property.readOnly\n || services.canPatchMultiField(document, services.getTargetId(target.target), property.path, property.value)\n )))\n .map(property => ({\n ...property,\n mixed: isPlayableGroundDecalMultiInspectorPropertyMixed(targets, property.path, context, services),\n }));\n if (properties.length === 0) return null;\n const mixedKind = targets.some(target => target.decal.uiKind !== activeTarget.decal.uiKind);\n return {\n id: 'groundDecal',\n title: 'Ground Decal',\n order: 40,\n placement: 'body',\n summary: mixedKind ? 'Mixed' : `${targets.length} ${services.createUiKindLabel?.(activeTarget.decal.uiKind) ?? activeTarget.decal.uiKind} UIs`,\n persistence: 'document',\n collapsedByDefault: false,\n properties,\n };\n}\n\nexport function resolvePlayableGroundDecalMultiInspectorTargetIds<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): string[] {\n return resolvePlayableGroundDecalMultiInspectorTargets(document, targetIds, services)\n .map(target => services.getTargetId(target.target));\n}\n\ntype PlayableGroundDecalMultiInspectorTarget<TTarget> = {\n target: TTarget;\n decal: PlayableGroundDecalUiConfig;\n};\n\nfunction resolvePlayableGroundDecalMultiInspectorTargets<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): PlayableGroundDecalMultiInspectorTarget<TTarget>[] {\n const seen = new Set<string>();\n const targets: PlayableGroundDecalMultiInspectorTarget<TTarget>[] = [];\n for (const targetId of targetIds) {\n if (!targetId || seen.has(targetId)) continue;\n seen.add(targetId);\n const target = services.findTarget(document, targetId);\n if (!target || !services.canShowTarget(target)) continue;\n targets.push({\n target,\n decal: mergePlayableGroundDecalDefaults(services.getTargetGroundDecal(target), services.createDefaultGroundDecal, services),\n });\n }\n return targets;\n}\n\nfunction haveCompatiblePlayableGroundDecalLayerSignatures(\n decals: readonly PlayableGroundDecalUiConfig[],\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isProjectEditableLayer'> = {},\n): boolean {\n if (decals.length === 0) return false;\n const [firstSignature, ...rest] = decals.map(decal => createPlayableGroundDecalEditableLayerSignature(decal, services));\n return rest.every(signature => signature === firstSignature);\n}\n\nfunction createPlayableGroundDecalEditableLayerSignature(\n decal: PlayableGroundDecalUiConfig,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isProjectEditableLayer'> = {},\n): string {\n return decal.layers\n .map((layer, index) => ({ layer, index }))\n .filter(entry => isPlayableGroundDecalProjectEditableLayer(entry.layer, services))\n .map(({ layer, index }) => `${index}:${layer.id}:${layer.role}:${layer.kind}`)\n .join('|');\n}\n\nfunction isPlayableGroundDecalMultiInspectorProperty(\n property: InspectorProperty,\n compatibleLayerSignature: boolean,\n): boolean {\n if (property.path === 'groundDecal.raw') return false;\n if (property.path === 'groundDecal.uiKind') return true;\n if (property.path === 'groundDecal.size.width' || property.path === 'groundDecal.size.depth') return true;\n if (isPlayableGroundDecalRenderingTextureDimensionPath(property.path)) return true;\n if (property.path === 'groundDecal.layers' || parsePlayableGroundDecalLayerPatchPath(property.path)) {\n return compatibleLayerSignature;\n }\n return false;\n}\n\nfunction isPlayableGroundDecalMultiInspectorPropertyMixed<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n targets: readonly PlayableGroundDecalMultiInspectorTarget<TTarget>[],\n path: string,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): boolean {\n if (targets.length <= 1) return false;\n const [first, ...rest] = targets.map(target => (\n JSON.stringify(readPlayableGroundDecalMultiInspectorComparableValue(target.decal, path, context, services))\n ));\n return rest.some(value => value !== first);\n}\n\nfunction readPlayableGroundDecalMultiInspectorComparableValue<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n decal: PlayableGroundDecalUiConfig,\n path: string,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): unknown {\n if (path === 'groundDecal.uiKind') return decal.uiKind;\n if (path === 'groundDecal.size.width') return decal.size.width;\n if (path === 'groundDecal.size.depth') return decal.size.depth;\n if (path === 'groundDecal.rendering.textureWidth') return decal.rendering?.textureWidth ?? 512;\n if (path === 'groundDecal.rendering.textureHeight') return decal.rendering?.textureHeight ?? 512;\n if (path === 'groundDecal.layers') {\n return createPlayableGroundDecalLayoutInspectorValue(decal, context, services).layers;\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return undefined;\n const layer = decal.layers[parsed.index];\n if (!layer) return undefined;\n return readPlayableGroundDecalLayerPatchFieldValue(layer, parsed.field);\n}\n\nfunction readPlayableGroundDecalLayerPatchFieldValue(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n): unknown {\n if (field === 'rect') return layer.rect;\n if (field === 'textureId') return layer.kind === 'texture' ? layer.textureId : undefined;\n if (field === 'text.value') return layer.kind === 'text' ? layer.text.value : undefined;\n if (field === 'color') return layer.kind === 'color' || layer.kind === 'progress' ? layer.color : undefined;\n if (field === 'color.a') return layer.kind === 'color' || layer.kind === 'progress' ? layer.color.a ?? 1 : undefined;\n if (field === 'tint') return layer.kind === 'texture' ? layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT : undefined;\n if (field === 'tint.a') return layer.kind === 'texture' ? layer.tint?.a ?? 1 : undefined;\n if (field === 'text.color') return layer.kind === 'text' ? layer.text.color : undefined;\n if (field === 'text.color.a') return layer.kind === 'text' ? layer.text.color.a ?? 1 : undefined;\n if (field === 'editorPreviewPercent') return layer.kind === 'progress' ? resolvePlayableGroundDecalEditorPreviewProgressPercent(layer) : undefined;\n return undefined;\n}\n\nfunction createPlayableGroundDecalLayoutInspectorValue<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n decal: PlayableGroundDecalUiConfig,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> {\n const layoutEditableLayers = decal.layers\n .map((layer, index) => ({ layer, index }))\n .filter(entry => isPlayableGroundDecalLayoutEditableLayer(entry.layer, services));\n return {\n textureSize: {\n width: decal.rendering?.textureWidth ?? 512,\n height: decal.rendering?.textureHeight ?? 512,\n },\n mask: decal.mask,\n layers: layoutEditableLayers.map(({ layer, index }) => createPlayableGroundDecalLayoutInspectorLayer(context, layer, index, services)),\n previewLayers: decal.layers.map((layer, index) => createPlayableGroundDecalLayoutInspectorLayer(context, layer, index, services)),\n };\n}\n\nfunction createPlayableGroundDecalLayoutInspectorLayer<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n context: TContext,\n layer: PlayableGroundDecalUiLayer,\n index: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> {\n return {\n index,\n id: layer.id,\n role: layer.role,\n kind: layer.kind,\n label: createPlayableGroundDecalLayerLabel(layer, services),\n rect: layer.rect,\n enabled: layer.enabled !== false,\n editable: isPlayableGroundDecalLayoutEditableLayer(layer, services),\n zOrder: layer.zOrder,\n ...(typeof layer.opacity === 'number' ? { opacity: layer.opacity } : {}),\n ...(services.useUniformLayoutScaleMode?.(layer) ? { scaleMode: 'uniform' } : {}),\n preview: createPlayableGroundDecalLayerPreview(context, layer, services),\n };\n}\n\nexport function createPlayableGroundDecalLayerLabel(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'createLayerLabel'> = {},\n): string {\n const label = services.createLayerLabel?.(layer);\n if (label) return label;\n return layer.role.charAt(0).toUpperCase() + layer.role.slice(1);\n}\n\nfunction createPlayableGroundDecalLayerPreview<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n context: TContext,\n layer: PlayableGroundDecalUiLayer,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> | undefined {\n if (layer.kind === 'texture') {\n const textureAsset = services.findTextureAsset?.(context, layer.textureId) ?? null;\n const url = textureAsset?.url ?? services.resolveTextureAssetUrl?.(layer.textureId);\n return url\n ? {\n kind: 'image',\n url,\n alt: textureAsset?.label ?? layer.textureId,\n ...(layer.tint ? { tint: layer.tint } : {}),\n }\n : undefined;\n }\n if (layer.kind === 'color') {\n return { kind: 'color', color: layer.color };\n }\n if (layer.kind === 'progress') {\n return {\n kind: 'progress',\n value: resolvePlayableGroundDecalEditorPreviewProgressValue(layer),\n direction: layer.direction,\n color: layer.color,\n };\n }\n if (layer.kind === 'text') {\n return {\n kind: 'text',\n text: layer.text.value,\n fontFamily: layer.text.fontFamily,\n fontSize: layer.text.fontSize,\n fontWeight: layer.text.fontWeight,\n color: layer.text.color,\n strokeColor: layer.text.strokeColor,\n strokeWidth: layer.text.strokeWidth,\n align: layer.text.align,\n baseline: layer.text.baseline,\n };\n }\n return undefined;\n}\n\nfunction resolvePlayableGroundDecalEditorPreviewProgressPercent(\n layer: PlayableGroundDecalUiProgressLayer,\n): number {\n const percent = typeof layer.editorPreviewPercent === 'number' && Number.isFinite(layer.editorPreviewPercent)\n ? layer.editorPreviewPercent\n : PLAYABLE_GROUND_DECAL_UI_EDITOR_PROGRESS_PERCENT;\n return Math.round(Math.max(0, Math.min(100, percent)));\n}\n\nfunction resolvePlayableGroundDecalEditorPreviewProgressValue(layer: PlayableGroundDecalUiProgressLayer): number {\n return resolvePlayableGroundDecalEditorPreviewProgressPercent(layer) / 100;\n}\n\nfunction createPlayableGroundDecalTextureInspectorProperty<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n nodeKind: TNodeKind,\n context: TContext,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const text = services.getMaterialText?.('zh');\n const currentTexture = services.findTextureAsset?.(context, layer.textureId) ?? null;\n const path = `groundDecal.layers.${layerIndex}.textureId`;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path,\n label: `${label} PNG`,\n valueType: 'string',\n control: 'custom',\n customControl: 'asset-picker-card',\n value: layer.textureId,\n commitMode: 'change',\n order,\n tags: ['GroundDecalUI', 'TextureAsset'],\n controlOptions: services.createTexturePickerControlOptions?.(context, text, layer.textureId, currentTexture) ?? {\n currentTextureId: layer.textureId,\n currentTexture,\n },\n coerce: (value: unknown) => services.normalizeValue(path, value),\n });\n}\n\nfunction createPlayableGroundDecalColorInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.color`,\n label: `${label} Color`,\n valueType: 'color',\n control: 'color',\n value: layer.color,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalColorAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.color.a`,\n label: `${label} Alpha`,\n valueType: 'number',\n control: 'number',\n value: layer.color.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalProgressPreviewInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const path = `groundDecal.layers.${layerIndex}.editorPreviewPercent`;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path,\n label: `${label} Preview %`,\n valueType: 'number',\n control: 'number',\n value: resolvePlayableGroundDecalEditorPreviewProgressPercent(layer),\n commitMode: 'blur',\n order,\n min: 0,\n max: 100,\n step: 1,\n tags: ['GroundDecalUI', 'Progress'],\n coerce: (value: unknown) => services.normalizeValue(path, value),\n });\n}\n\nfunction createPlayableGroundDecalTextureTintInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const tint = layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.tint`,\n label: `${label} Tint Color`,\n valueType: 'color',\n control: 'color',\n value: tint,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextureTintAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const tint = layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.tint.a`,\n label: `${label} Tint Alpha`,\n valueType: 'number',\n control: 'number',\n value: tint.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextColorInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.text.color`,\n label: `${label} Text Color`,\n valueType: 'color',\n control: 'color',\n value: layer.text.color,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextColorAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.text.color.a`,\n label: `${label} Text Alpha`,\n valueType: 'number',\n control: 'number',\n value: layer.text.color.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction resolvePlayableGroundDecalLayoutAspectRatio(decal: PlayableGroundDecalUiConfig): number {\n const sourceLayer = decal.layers.find(layer => layer.id === decal.aspectSourceLayerId);\n const sourceRect = sourceLayer?.rect;\n if (sourceRect && sourceRect.width > 0 && sourceRect.depth > 0) return sourceRect.width / sourceRect.depth;\n return decal.size.width > 0 && decal.size.depth > 0 ? decal.size.width / decal.size.depth : 1;\n}\n\nfunction appendPlayableReadonlyInspectorProperty<TDocument>(\n properties: InspectorProperty<TDocument>[],\n input: Parameters<typeof createEditorSceneReadonlyInspectorProperty<TDocument>>[0],\n): void {\n const property = createEditorSceneReadonlyInspectorProperty<TDocument>(input);\n if (property) properties.push(property);\n}\n\nfunction createPlayableReadonlyInspectorProperty<TDocument>(\n path: string,\n label: string,\n value: unknown,\n order: number,\n tooltip?: string,\n): InspectorProperty<TDocument> {\n return createEditorSceneReadonlyInspectorProperty<TDocument>({\n path,\n label,\n value,\n order,\n persistence: 'readonly',\n source: 'Document',\n tooltip,\n })!;\n}\n\nfunction createPlayableInspectorActionProperty<TDocument>(input: {\n path: string;\n label: string;\n actionId: string;\n order: number;\n icon: string;\n tooltip: string;\n params: Record<string, string | undefined>;\n disabled: boolean;\n disabledReason?: string;\n effect?: InspectorProperty<TDocument>['effect'];\n}): InspectorProperty<TDocument> {\n const params = Object.fromEntries(\n Object.entries(input.params).filter((entry): entry is [string, string] => typeof entry[1] === 'string' && entry[1].length > 0),\n );\n return {\n path: input.path,\n label: input.label,\n valueType: 'string',\n control: 'custom',\n customControl: 'inspector-action-button',\n controlOptions: {\n actionId: input.actionId,\n label: input.label,\n icon: input.icon,\n params,\n ...(input.disabled ? { disabled: true } : {}),\n ...(input.disabledReason ? { disabledReason: input.disabledReason } : {}),\n },\n value: input.actionId,\n readOnly: false,\n persistence: 'readonly',\n commitMode: 'immediate',\n order: input.order,\n tooltip: input.disabledReason ?? input.tooltip,\n effect: input.effect,\n disabledReason: input.disabled ? input.disabledReason : undefined,\n };\n}\n\nfunction readPlayableGroundDecalRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : null;\n}\n\nfunction readPlayableGroundDecalString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value.trim() : null;\n}\n"]}
1
+ {"version":3,"file":"ground-decal.js","sourceRoot":"","sources":["../../src/product/ground-decal.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DocumentCommand,\n InspectorProperty,\n InspectorSection,\n InspectorValidationResult,\n} from '../core-contracts/index';\nimport {\n createEditorSceneReadonlyInspectorProperty,\n} from '../inspector/index';\nimport {\n findEditorSceneTransform,\n type EditorSceneComponent,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneVec3,\n} from '../document/index';\n\nexport const PLAYABLE_GROUND_DECAL_TEXTURE_TINT = { r: 1, g: 1, b: 1, a: 1 } as const;\n\nexport type PlayableGroundDecalUiKind = string;\n\nexport interface PlayableGroundDecalVec3 {\n x: number;\n y: number;\n z: number;\n}\n\nexport interface PlayableGroundDecalUiColor {\n r: number;\n g: number;\n b: number;\n a?: number;\n}\n\nexport interface PlayableGroundDecalUiRect {\n x: number;\n z: number;\n width: number;\n depth: number;\n}\n\nexport interface PlayableGroundDecalUiLayerBase {\n id: string;\n role: string;\n kind: string;\n rect: PlayableGroundDecalUiRect;\n enabled?: boolean;\n opacity?: number;\n zOrder?: number;\n}\n\nexport interface PlayableGroundDecalUiTextureLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'texture';\n textureId: string;\n tint?: PlayableGroundDecalUiColor;\n}\n\nexport interface PlayableGroundDecalUiColorLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'color';\n color: PlayableGroundDecalUiColor;\n}\n\nexport interface PlayableGroundDecalUiTextLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'text';\n text: {\n value: string;\n color: PlayableGroundDecalUiColor;\n fontFamily?: string;\n fontSize?: number;\n fontWeight?: string | number;\n strokeColor?: PlayableGroundDecalUiColor;\n strokeWidth?: number;\n align?: string;\n baseline?: string;\n };\n}\n\nexport interface PlayableGroundDecalUiProgressLayer extends PlayableGroundDecalUiLayerBase {\n kind: 'progress';\n color: PlayableGroundDecalUiColor;\n direction?: string;\n editorPreviewPercent?: number;\n}\n\nexport type PlayableGroundDecalUiLayer =\n | PlayableGroundDecalUiTextureLayer\n | PlayableGroundDecalUiColorLayer\n | PlayableGroundDecalUiTextLayer\n | PlayableGroundDecalUiProgressLayer;\n\nexport interface PlayableGroundDecalUiConfig {\n uiKind: PlayableGroundDecalUiKind;\n size: {\n width: number;\n depth: number;\n };\n layers: PlayableGroundDecalUiLayer[];\n mask?: unknown;\n rendering?: {\n textureWidth?: number;\n textureHeight?: number;\n };\n aspectSourceLayerId?: string;\n}\n\nexport type PlayableGroundDecalLayoutLayerPatch = {\n id: string;\n rect: PlayableGroundDecalUiRect;\n};\n\nexport type PlayableGroundDecalLayerPatchField =\n | 'rect'\n | 'textureId'\n | 'text.value'\n | 'color'\n | 'color.a'\n | 'tint'\n | 'tint.a'\n | 'text.color'\n | 'text.color.a'\n | 'editorPreviewPercent';\n\nexport interface PlayableGroundDecalInspectorTextureAsset {\n id: string;\n label: string;\n url: string;\n meta?: string;\n}\n\nexport interface PlayableGroundDecalInspectorContext {\n textureAssets?: readonly PlayableGroundDecalInspectorTextureAsset[];\n resolveTextureAssetUrl?(textureId: string | null | undefined): string | null | undefined;\n}\n\nexport type PlayableGroundDecalDocumentInspectorPropertyFactory<TDocument, TNodeKind> = (\n document: TDocument | null,\n nodeKind: TNodeKind,\n property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>,\n) => InspectorProperty<TDocument>;\n\nexport interface PlayableGroundDecalLayerPairActionOptions {\n addActionId: string;\n removeActionId: string;\n addPath?: string;\n removePath?: string;\n addLabel?: string;\n removeLabel?: string;\n addTooltip?: string;\n removeTooltip?: string;\n}\n\nexport type PlayableGroundDecalEditorSceneGameObject<TConfig extends PlayableGroundDecalUiConfig = PlayableGroundDecalUiConfig> =\n EditorSceneGameObject & {\n groundDecal?: Partial<TConfig> | null;\n };\n\nexport type PlayableGroundDecalEditorSceneDocument<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject = PlayableGroundDecalEditorSceneGameObject,\n> = EditorSceneDocument<TGameObject>;\n\nexport interface PlayableGroundDecalDocumentServices<\n TConfig extends PlayableGroundDecalUiConfig = PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig> = PlayableGroundDecalEditorSceneGameObject<TConfig>,\n> {\n defaultUiKind?: PlayableGroundDecalUiKind;\n isKnownUiKind?: (value: string) => boolean;\n isProjectEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isLayoutEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n createDefaultGroundDecal(uiKind: PlayableGroundDecalUiKind): TConfig;\n isGroundDecalConfig(value: unknown): value is TConfig;\n canShowGroundDecalInspector(gameObject: TGameObject): boolean;\n isGroundDecalUiGameObject(gameObject: TGameObject): gameObject is TGameObject & { groundDecal: TConfig };\n}\n\nexport interface PlayableGroundDecalInspectorServices<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n> {\n defaultUiKind?: PlayableGroundDecalUiKind;\n isKnownUiKind?: (value: string) => boolean;\n isProjectEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isLayoutEditableLayer?: (layer: PlayableGroundDecalUiLayer) => boolean;\n isEditableTextureLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiTextureLayer;\n isEditableColorLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer;\n isEditableTextLayer?: (layer: PlayableGroundDecalUiLayer) => layer is PlayableGroundDecalUiTextLayer;\n useUniformLayoutScaleMode?: (layer: PlayableGroundDecalUiLayer) => boolean;\n createLayerLabel?: (layer: PlayableGroundDecalUiLayer) => string;\n createUiKindLabel?: (uiKind: PlayableGroundDecalUiKind) => string;\n canShowLayerPairActions?: (decal: PlayableGroundDecalUiConfig) => boolean;\n createLayerPairDisabledReason?: (input: {\n decal: PlayableGroundDecalUiConfig;\n action: 'add' | 'remove';\n pairCount: number;\n }) => string | undefined;\n createDefaultGroundDecal(uiKind: PlayableGroundDecalUiKind): PlayableGroundDecalUiConfig;\n createDocumentInspectorProperty: PlayableGroundDecalDocumentInspectorPropertyFactory<TDocument, TNodeKind>;\n normalizeValue(path: string, value: unknown): unknown;\n findTarget(document: TDocument, targetId: string): TTarget | null;\n getTargetId(target: TTarget): string;\n getTargetNodeKind(target: TTarget): TNodeKind;\n getTargetGroundDecal(target: TTarget): Partial<PlayableGroundDecalUiConfig> | null | undefined;\n canShowTarget(target: TTarget): boolean;\n isUiTarget?(target: TTarget): boolean;\n canPatchMultiField(document: TDocument, targetId: string, path: string, value: unknown): boolean;\n findTextureAsset?(\n context: TContext,\n textureId: string | null | undefined,\n ): PlayableGroundDecalInspectorTextureAsset | null;\n resolveTextureAssetUrl?(textureId: string | null | undefined): string | null | undefined;\n getMaterialText?(language: 'zh' | 'en'): unknown;\n createTexturePickerControlOptions?(\n context: TContext,\n text: unknown,\n currentTextureId: string | null | undefined,\n currentTexture: PlayableGroundDecalInspectorTextureAsset | null,\n ): InspectorProperty<TDocument>['controlOptions'];\n getLayerPairs?(decal: PlayableGroundDecalUiConfig): readonly unknown[];\n canAddLayerPair?(decal: PlayableGroundDecalUiConfig): boolean;\n canRemoveLayerPair?(decal: PlayableGroundDecalUiConfig): boolean;\n layerPairActions?: PlayableGroundDecalLayerPairActionOptions;\n}\n\nexport interface PlayableGroundDecalDocumentServiceBridgeInput<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n> extends Pick<\n PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n | 'defaultUiKind'\n | 'isKnownUiKind'\n | 'isProjectEditableLayer'\n | 'isLayoutEditableLayer'\n | 'createDefaultGroundDecal'\n | 'isGroundDecalConfig'\n > {\n canShowGroundDecalInspector(gameObject: TGameObject): boolean;\n isGroundDecalUiGameObject(gameObject: TGameObject): gameObject is TGameObject & { groundDecal: TConfig };\n}\n\nexport interface PlayableGroundDecalInspectorServiceBridgeInput<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext,\n> {\n policy: Pick<\n PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n 'createDefaultGroundDecal'\n > & Partial<PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>>;\n createDocumentInspectorProperty: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['createDocumentInspectorProperty'];\n normalizeValue: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['normalizeValue'];\n findTarget: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['findTarget'];\n getTargetId: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetId'];\n getTargetNodeKind: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetNodeKind'];\n getTargetGroundDecal: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getTargetGroundDecal'];\n canShowTarget: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['canShowTarget'];\n isUiTarget?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['isUiTarget'];\n canPatchMultiField: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['canPatchMultiField'];\n findTextureAsset?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['findTextureAsset'];\n resolveTextureAssetUrl?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['resolveTextureAssetUrl'];\n getMaterialText?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['getMaterialText'];\n createTexturePickerControlOptions?: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>['createTexturePickerControlOptions'];\n}\n\nexport interface PlayableGroundDecalDocumentBridge<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n> {\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>;\n normalizeLayoutPatchValue(value: unknown): PlayableGroundDecalLayoutLayerPatch[] | null;\n isLayoutPatchCompatibleWithDecal(\n decal: TConfig,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n ): boolean;\n canPatchMultiField(document: TDocument, targetId: string, path: string, value: unknown): boolean;\n patchLayout(document: TDocument, targetId: string, value: unknown): TDocument;\n patchKind(document: TDocument, targetId: string, value: unknown): TDocument;\n patchInspectorField(document: TDocument, targetId: string, path: string, value: unknown): TDocument | null;\n normalizeGameObject(gameObject: TGameObject): TGameObject;\n replaceUi(document: TDocument, targetId: string, groundDecal: TConfig): TDocument;\n normalizeScaleAfterFieldPatch(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n ): TDocument;\n normalizeScalesForCommand<TPatch>(\n document: TDocument,\n command: DocumentCommand<TDocument, TPatch>,\n ): TDocument;\n normalizeScales(document: TDocument, targetId?: string, uniformOverride?: number | null): TDocument;\n mergeDefaults(groundDecal: Partial<TConfig> | null | undefined): TConfig;\n}\n\nexport function createPlayableGroundDecalDocumentServices<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n input: PlayableGroundDecalDocumentServiceBridgeInput<TConfig, TGameObject>,\n): PlayableGroundDecalDocumentServices<TConfig, TGameObject> {\n return { ...input };\n}\n\nexport function createPlayableGroundDecalDocumentBridge<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject> = PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n input: PlayableGroundDecalDocumentServiceBridgeInput<TConfig, TGameObject>,\n): PlayableGroundDecalDocumentBridge<TConfig, TGameObject, TDocument> {\n const services = createPlayableGroundDecalDocumentServices(input);\n return {\n services,\n normalizeLayoutPatchValue: value => normalizePlayableGroundDecalLayoutPatchValue(value, services),\n isLayoutPatchCompatibleWithDecal: (decal, patches) => (\n isPlayableGroundDecalLayoutPatchCompatibleWithDecal(decal, patches, services)\n ),\n canPatchMultiField: (document, targetId, path, value) => (\n canPatchPlayableEditorSceneGroundDecalMultiField(document, targetId, path, value, services)\n ),\n patchLayout: (document, targetId, value) => (\n patchPlayableEditorSceneGroundDecalLayout(document, targetId, value, services)\n ),\n patchKind: (document, targetId, value) => (\n patchPlayableEditorSceneGroundDecalKind(document, targetId, value, services)\n ),\n patchInspectorField: (document, targetId, path, value) => (\n patchPlayableEditorSceneGroundDecalInspectorField(document, targetId, path, value, services)\n ),\n normalizeGameObject: gameObject => normalizePlayableEditorSceneGroundDecalGameObject(gameObject, services),\n replaceUi: (document, targetId, groundDecal) => (\n replacePlayableEditorSceneGroundDecalUi(document, targetId, groundDecal, services)\n ),\n normalizeScaleAfterFieldPatch: (document, targetId, path, value) => (\n normalizePlayableGroundDecalUiScaleAfterFieldPatch(document, targetId, path, value, services)\n ),\n normalizeScalesForCommand: (document, command) => (\n normalizePlayableGroundDecalUiScalesForCommand(document, command, services)\n ),\n normalizeScales: (document, targetId, uniformOverride) => (\n normalizePlayableGroundDecalUiScales(document, services, targetId, uniformOverride)\n ),\n mergeDefaults: groundDecal => mergePlayableGroundDecalDefaults(\n groundDecal,\n services.createDefaultGroundDecal,\n services,\n ),\n };\n}\n\nexport function createPlayableGroundDecalInspectorServices<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext,\n>(\n input: PlayableGroundDecalInspectorServiceBridgeInput<TDocument, TNodeKind, TTarget, TContext>,\n): PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext> {\n return {\n ...input.policy,\n createDocumentInspectorProperty: input.createDocumentInspectorProperty,\n normalizeValue: input.normalizeValue,\n findTarget: input.findTarget,\n getTargetId: input.getTargetId,\n getTargetNodeKind: input.getTargetNodeKind,\n getTargetGroundDecal: input.getTargetGroundDecal,\n canShowTarget: input.canShowTarget,\n isUiTarget: input.isUiTarget,\n canPatchMultiField: input.canPatchMultiField,\n findTextureAsset: input.findTextureAsset,\n resolveTextureAssetUrl: input.resolveTextureAssetUrl,\n getMaterialText: input.getMaterialText,\n createTexturePickerControlOptions: input.createTexturePickerControlOptions,\n };\n}\n\nconst PLAYABLE_GROUND_DECAL_UI_EDITOR_PROGRESS_PERCENT = 75;\n\nexport function resolvePlayableGroundDecalUiInspectorScale(path: string, value: unknown): number | null {\n if (path === 'transform.scale') {\n const scale = value as Partial<PlayableGroundDecalVec3> | null;\n if (!scale || typeof scale !== 'object') return null;\n return resolvePlayableGroundDecalUniformScaleFromVec3({\n x: typeof scale.x === 'number' ? scale.x : 1,\n y: typeof scale.y === 'number' ? scale.y : 1,\n z: typeof scale.z === 'number' ? scale.z : 1,\n });\n }\n if (!/^transform\\.scale\\.(x|y|z)$/.test(path)) return null;\n if (typeof value !== 'number' || !Number.isFinite(value)) return null;\n return Math.max(0.001, Math.abs(value));\n}\n\nexport function normalizePlayableGroundDecalLayoutPatchValue(\n value: unknown,\n options: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): PlayableGroundDecalLayoutLayerPatch[] | null {\n const source = readPlayableGroundDecalRecord(value);\n const layers = Array.isArray(value)\n ? value\n : source && Array.isArray(source.layers)\n ? source.layers\n : null;\n if (!layers) return null;\n const normalized = layers\n .map((layer, index) => normalizePlayableGroundDecalLayoutLayerPatch(layer, index, options))\n .filter((layer): layer is PlayableGroundDecalLayoutLayerPatch => !!layer);\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function normalizePlayableGroundDecalLayoutLayerPatch(\n value: unknown,\n index: number,\n _options: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): PlayableGroundDecalLayoutLayerPatch | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n // Inspector values can already be normalized to { id, rect }, so they no longer carry\n // layer roles. Editability is authorized against the decal's actual layers when the\n // normalized patch is checked for compatibility and applied.\n const id = readPlayableGroundDecalString(source.id) ?? `layer_${index}`;\n const rect = normalizePlayableGroundDecalLayoutRect(source.rect);\n return rect ? { id, rect } : null;\n}\n\nexport function normalizePlayableGroundDecalLayoutRect(value: unknown): PlayableGroundDecalUiRect | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n const x = readPlayableGroundDecalFiniteNumber(source.x);\n const z = readPlayableGroundDecalFiniteNumber(source.z);\n const width = readPlayableGroundDecalPositiveFiniteNumber(source.width);\n const depth = readPlayableGroundDecalPositiveFiniteNumber(source.depth);\n return x == null || z == null || width == null || depth == null\n ? null\n : { x, z, width, depth };\n}\n\nexport function readPlayableGroundDecalFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nexport function readPlayableGroundDecalPositiveFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null;\n}\n\nexport function validatePlayableGroundDecalInspectorField(\n path: string,\n value: unknown,\n): InspectorValidationResult | null {\n if (isPlayableGroundDecalLayerRectPath(path)) {\n return normalizePlayableGroundDecalLayoutRect(value)\n ? { ok: true, value }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerTexturePath(path)) {\n return typeof value === 'string' && value.trim().length > 0\n ? { ok: true, value: value.trim() }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerTextValuePath(path)) {\n return typeof value === 'string'\n ? { ok: true, value }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (\n isPlayableGroundDecalLayerColorPath(path)\n || isPlayableGroundDecalLayerTextureTintPath(path)\n || isPlayableGroundDecalLayerTextColorPath(path)\n ) {\n const color = normalizePlayableGroundDecalColorValue(value);\n return color\n ? { ok: true, value: color }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (\n isPlayableGroundDecalLayerColorAlphaPath(path)\n || isPlayableGroundDecalLayerTextureTintAlphaPath(path)\n || isPlayableGroundDecalLayerTextColorAlphaPath(path)\n ) {\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n return alpha !== null\n ? { ok: true, value: alpha }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalLayerProgressPreviewPercentPath(path)) {\n const percent = normalizePlayableGroundDecalProgressPreviewPercentValue(value);\n return percent !== null\n ? { ok: true, value: percent }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n const dimension = normalizePlayableGroundDecalTextureDimension(value);\n return dimension !== null\n ? { ok: true, value: dimension }\n : { ok: false, message: `Invalid value for scene node field: ${path}.` };\n }\n return null;\n}\n\nexport function parsePlayableGroundDecalLayerPatchPath(\n path: string,\n): { index: number; field: PlayableGroundDecalLayerPatchField } | null {\n const match = path.match(/^groundDecal\\.layers\\.(\\d+)\\.(rect|textureId|text\\.value|color|color\\.a|tint|tint\\.a|text\\.color|text\\.color\\.a|editorPreviewPercent)$/);\n if (!match) return null;\n const index = Number(match[1]);\n if (!Number.isInteger(index) || index < 0) return null;\n return { index, field: match[2] as PlayableGroundDecalLayerPatchField };\n}\n\nexport function isPlayableGroundDecalLayerRectPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.rect$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTexturePath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.textureId$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerColorPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.color$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerColorAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.color\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextValuePath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.value$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextColorPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.color$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextColorAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.text\\.color\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextureTintPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.tint$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerTextureTintAlphaPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.tint\\.a$/.test(path);\n}\n\nexport function isPlayableGroundDecalLayerProgressPreviewPercentPath(path: string): boolean {\n return /^groundDecal\\.layers\\.\\d+\\.editorPreviewPercent$/.test(path);\n}\n\nexport function isPlayableGroundDecalRenderingTextureDimensionPath(path: string): boolean {\n return path === 'groundDecal.rendering.textureWidth' || path === 'groundDecal.rendering.textureHeight';\n}\n\nexport function isPlayableGroundDecalInspectorPatchPath(path: string): boolean {\n return path === 'groundDecal.layers'\n || !!parsePlayableGroundDecalLayerPatchPath(path)\n || isPlayableGroundDecalRenderingTextureDimensionPath(path);\n}\n\nexport function isPlayableGroundDecalSerializedMultiFieldPath(path: string): boolean {\n return path === 'groundDecal.size.width'\n || path === 'groundDecal.size.depth'\n || path === 'groundDecal.layers'\n || isPlayableGroundDecalInspectorPatchPath(path);\n}\n\nexport function canPatchPlayableGroundDecalLayerField(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n services: Pick<\n PlayableGroundDecalInspectorServices<unknown, unknown, unknown>,\n 'isLayoutEditableLayer' | 'isEditableTextureLayer' | 'isEditableColorLayer' | 'isEditableTextLayer'\n > = {},\n): boolean {\n if (field === 'rect') return isPlayableGroundDecalLayoutEditableLayer(layer, services);\n if (field === 'textureId' || field === 'tint' || field === 'tint.a') return isPlayableGroundDecalEditableTextureLayer(layer, services);\n if (field === 'text.value' || field === 'text.color' || field === 'text.color.a') return isPlayableGroundDecalEditableTextLayer(layer, services);\n if (field === 'color' || field === 'color.a') return isPlayableGroundDecalEditableColorLayer(layer, services);\n if (field === 'editorPreviewPercent') return layer.kind === 'progress' && isPlayableGroundDecalEditableColorLayer(layer, services);\n return false;\n}\n\nexport function isPlayableGroundDecalProjectEditableLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalDocumentServices, 'isProjectEditableLayer'> = {},\n): boolean {\n return services.isProjectEditableLayer?.(layer) ?? layer.enabled !== false;\n}\n\nexport function isPlayableGroundDecalLayoutEditableLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): boolean {\n return services.isLayoutEditableLayer?.(layer) ?? layer.enabled !== false;\n}\n\nexport function isPlayableGroundDecalEditableTextureLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableTextureLayer'> = {},\n): layer is PlayableGroundDecalUiTextureLayer {\n return services.isEditableTextureLayer?.(layer) ?? layer.kind === 'texture';\n}\n\nexport function isPlayableGroundDecalEditableColorLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableColorLayer'> = {},\n): layer is PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer {\n return services.isEditableColorLayer?.(layer) ?? (layer.kind === 'color' || layer.kind === 'progress');\n}\n\nexport function isPlayableGroundDecalEditableTextLayer(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isEditableTextLayer'> = {},\n): layer is PlayableGroundDecalUiTextLayer {\n return services.isEditableTextLayer?.(layer) ?? layer.kind === 'text';\n}\n\nexport function isPlayableGroundDecalLayoutPatchCompatibleWithDecal(\n decal: PlayableGroundDecalUiConfig,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n services: Pick<PlayableGroundDecalDocumentServices, 'isLayoutEditableLayer'> = {},\n): boolean {\n const editableLayers = decal.layers.filter(layer => isPlayableGroundDecalLayoutEditableLayer(layer, services));\n if (patches.length !== editableLayers.length) return false;\n return editableLayers.every((layer, index) => patches[index]?.id === layer.id);\n}\n\nexport function normalizePlayableGroundDecalColorValue(value: unknown): PlayableGroundDecalUiColor | null {\n const source = readPlayableGroundDecalRecord(value);\n if (!source) return null;\n const r = readPlayableGroundDecalFiniteNumber(source.r);\n const g = readPlayableGroundDecalFiniteNumber(source.g);\n const b = readPlayableGroundDecalFiniteNumber(source.b);\n if (r == null || g == null || b == null) return null;\n const a = readPlayableGroundDecalFiniteNumber(source.a);\n return {\n r: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, r))),\n g: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, g))),\n b: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, b))),\n ...(a == null ? {} : { a: roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, a))) }),\n };\n}\n\nexport function normalizePlayableGroundDecalAlphaValue(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n return numeric == null ? null : roundPlayableGroundDecalFieldValue(Math.max(0, Math.min(1, numeric)));\n}\n\nexport function normalizePlayableGroundDecalProgressPreviewPercentValue(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n return numeric == null ? null : Math.round(Math.max(0, Math.min(100, numeric)));\n}\n\nexport function normalizePlayableGroundDecalTextureDimension(value: unknown): number | null {\n const numeric = readPlayableGroundDecalFiniteNumber(value);\n if (numeric == null || numeric <= 0) return null;\n return Math.max(64, Math.min(2048, Math.round(numeric)));\n}\n\nexport function roundPlayableGroundDecalFieldValue(value: number): number {\n return Math.round(value * 1000) / 1000;\n}\n\nexport function normalizePlayableGroundDecalInspectorFieldValue(path: string, value: unknown): unknown {\n if (path === 'groundDecal.layers') {\n return normalizePlayableGroundDecalLayoutPatchValue(value) ?? value;\n }\n if (isPlayableGroundDecalLayerRectPath(path)) {\n return normalizePlayableGroundDecalLayoutRect(value) ?? value;\n }\n if (isPlayableGroundDecalLayerTexturePath(path) && typeof value === 'string') {\n return value.trim();\n }\n if (isPlayableGroundDecalLayerTextValuePath(path) && typeof value === 'string') {\n return value;\n }\n if (\n isPlayableGroundDecalLayerColorPath(path)\n || isPlayableGroundDecalLayerTextureTintPath(path)\n || isPlayableGroundDecalLayerTextColorPath(path)\n ) {\n return normalizePlayableGroundDecalColorValue(value) ?? value;\n }\n if (\n isPlayableGroundDecalLayerColorAlphaPath(path)\n || isPlayableGroundDecalLayerTextureTintAlphaPath(path)\n || isPlayableGroundDecalLayerTextColorAlphaPath(path)\n ) {\n return normalizePlayableGroundDecalAlphaValue(value) ?? value;\n }\n if (isPlayableGroundDecalLayerProgressPreviewPercentPath(path)) {\n return normalizePlayableGroundDecalProgressPreviewPercentValue(value) ?? value;\n }\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return normalizePlayableGroundDecalTextureDimension(value) ?? value;\n }\n return value;\n}\n\nexport function patchPlayableGroundDecalLayer(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n value: unknown,\n): PlayableGroundDecalUiLayer | null {\n if (field === 'rect') {\n const rect = normalizePlayableGroundDecalLayoutRect(value);\n if (!rect) return null;\n if (playableGroundDecalRectsEqual(layer.rect, rect)) return layer;\n return { ...layer, rect } as PlayableGroundDecalUiLayer;\n }\n if (field === 'textureId') {\n if (layer.kind !== 'texture' || typeof value !== 'string' || !value.trim()) return null;\n const textureId = value.trim();\n if (layer.textureId === textureId) return layer;\n return { ...layer, textureId };\n }\n if (field === 'text.value') {\n if (layer.kind !== 'text' || typeof value !== 'string') return null;\n if (layer.text.value === value) return layer;\n return { ...layer, text: { ...layer.text, value } };\n }\n if (field === 'color') {\n if (layer.kind !== 'color' && layer.kind !== 'progress') return null;\n const color = normalizePlayableGroundDecalColorValue(value);\n if (!color) return null;\n const nextColor = {\n ...color,\n ...(color.a == null && layer.color.a != null ? { a: layer.color.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.color, nextColor)) return layer;\n return { ...layer, color: nextColor } as PlayableGroundDecalUiLayer;\n }\n if (field === 'color.a') {\n if (layer.kind !== 'color' && layer.kind !== 'progress') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextColor = { ...layer.color, a: alpha };\n if (playableGroundDecalColorsEqual(layer.color, nextColor)) return layer;\n return { ...layer, color: nextColor } as PlayableGroundDecalUiLayer;\n }\n if (field === 'editorPreviewPercent') {\n if (layer.kind !== 'progress') return null;\n const percent = normalizePlayableGroundDecalProgressPreviewPercentValue(value);\n if (percent === null) return null;\n if (layer.editorPreviewPercent === percent) return layer;\n return { ...layer, editorPreviewPercent: percent } as PlayableGroundDecalUiLayer;\n }\n if (field === 'tint') {\n if (layer.kind !== 'texture') return null;\n const tint = normalizePlayableGroundDecalColorValue(value);\n if (!tint) return null;\n const nextTint = {\n ...tint,\n ...(tint.a == null && layer.tint?.a != null ? { a: layer.tint.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT, nextTint)) return layer;\n return { ...layer, tint: nextTint };\n }\n if (field === 'tint.a') {\n if (layer.kind !== 'texture') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextTint = { ...PLAYABLE_GROUND_DECAL_TEXTURE_TINT, ...(layer.tint ?? {}), a: alpha };\n if (playableGroundDecalColorsEqual(layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT, nextTint)) return layer;\n return { ...layer, tint: nextTint };\n }\n if (field === 'text.color') {\n if (layer.kind !== 'text') return null;\n const color = normalizePlayableGroundDecalColorValue(value);\n if (!color) return null;\n const nextColor = {\n ...color,\n ...(color.a == null && layer.text.color.a != null ? { a: layer.text.color.a } : {}),\n };\n if (playableGroundDecalColorsEqual(layer.text.color, nextColor)) return layer;\n return { ...layer, text: { ...layer.text, color: nextColor } };\n }\n if (field === 'text.color.a') {\n if (layer.kind !== 'text') return null;\n const alpha = normalizePlayableGroundDecalAlphaValue(value);\n if (alpha === null) return null;\n const nextColor = { ...layer.text.color, a: alpha };\n if (playableGroundDecalColorsEqual(layer.text.color, nextColor)) return layer;\n return { ...layer, text: { ...layer.text, color: nextColor } };\n }\n return null;\n}\n\nexport function mergePlayableGroundDecalDefaults<TConfig extends PlayableGroundDecalUiConfig>(\n groundDecal: Partial<TConfig> | null | undefined,\n createDefault: (uiKind: PlayableGroundDecalUiKind) => TConfig,\n options: Pick<PlayableGroundDecalDocumentServices, 'defaultUiKind' | 'isKnownUiKind'> = {},\n): TConfig {\n const source = groundDecal && typeof groundDecal === 'object' && !Array.isArray(groundDecal)\n ? groundDecal\n : null;\n const sourceUiKind = typeof source?.uiKind === 'string' ? source.uiKind.trim() : '';\n const uiKind = sourceUiKind && (options.isKnownUiKind?.(sourceUiKind) ?? true)\n ? sourceUiKind\n : options.defaultUiKind ?? 'default';\n const defaults = createDefault(uiKind);\n if (!source) return defaults;\n return {\n ...defaults,\n ...structuredClone(source),\n uiKind,\n size: {\n ...defaults.size,\n ...(source.size && typeof source.size === 'object' ? source.size : {}),\n },\n layers: Array.isArray(source.layers) && source.layers.length > 0\n ? structuredClone(source.layers)\n : defaults.layers,\n mask: source.mask && typeof source.mask === 'object'\n ? { ...(defaults.mask ?? {}), ...source.mask }\n : defaults.mask,\n rendering: source.rendering && typeof source.rendering === 'object'\n ? { ...(defaults.rendering ?? {}), ...source.rendering }\n : defaults.rendering,\n } as TConfig;\n}\n\nexport function playableGroundDecalColorsEqual(\n left: PlayableGroundDecalUiColor,\n right: PlayableGroundDecalUiColor,\n): boolean {\n return left.r === right.r\n && left.g === right.g\n && left.b === right.b\n && (left.a ?? 1) === (right.a ?? 1);\n}\n\nexport function playableGroundDecalRectsEqual(\n left: PlayableGroundDecalUiRect,\n right: PlayableGroundDecalUiRect,\n): boolean {\n return left.x === right.x\n && left.z === right.z\n && left.width === right.width\n && left.depth === right.depth;\n}\n\nexport function resolvePlayableGroundDecalUniformScaleFromVec3(scale: PlayableGroundDecalVec3): number {\n const values = [scale.x, scale.y, scale.z].filter(value => Number.isFinite(value));\n if (values.length === 0) return 1;\n const uniform = values.reduce((best, value) => Math.abs(value - 1) > Math.abs(best - 1) ? value : best, values[0]!);\n return Math.max(0.001, Math.abs(uniform));\n}\n\nexport function canPatchPlayableEditorSceneGroundDecalMultiField<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): boolean {\n if (!isPlayableGroundDecalSerializedMultiFieldPath(path)) return false;\n const gameObject = findPlayableGroundDecalGameObject<TGameObject, TDocument>(document, targetId);\n if (!gameObject || !services.canShowGroundDecalInspector(gameObject)) return false;\n const decal = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n if (path === 'groundDecal.size.width' || path === 'groundDecal.size.depth' || isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return true;\n }\n if (path === 'groundDecal.layers') {\n const patches = normalizePlayableGroundDecalLayoutPatchValue(value, services);\n if (!patches) return false;\n return isPlayableGroundDecalLayoutPatchCompatibleWithDecal(decal, patches, services);\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return false;\n const layer = decal.layers[parsed.index];\n return !!layer && isPlayableGroundDecalProjectEditableLayer(layer, services) && canPatchPlayableGroundDecalLayerField(layer, parsed.field, services);\n}\n\nexport function patchPlayableEditorSceneGroundDecalLayout<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n const patches = normalizePlayableGroundDecalLayoutPatchValue(value, services);\n if (!patches) return document;\n return mapPlayableGroundDecalGameObjects<TGameObject, TDocument>(document, (entry) => (\n entry.id === targetId ? patchPlayableEditorSceneGroundDecalLayoutGameObject(entry, patches, services) : entry\n ));\n}\n\nexport function patchPlayableEditorSceneGroundDecalKind<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (typeof value !== 'string' || !value.trim()) return document;\n const uiKind = value.trim();\n if (services.isKnownUiKind && !services.isKnownUiKind(uiKind)) return document;\n return mapPlayableGroundDecalGameObjects<TGameObject, TDocument>(document, (entry) => (\n entry.id === targetId ? patchPlayableEditorSceneGroundDecalKindGameObject(entry, uiKind, services) : entry\n ));\n}\n\nexport function patchPlayableEditorSceneGroundDecalInspectorField<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument | null {\n if (isPlayableGroundDecalRenderingTextureDimensionPath(path)) {\n return patchPlayableEditorSceneGroundDecalRenderingDimension(document, targetId, path, value, services);\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return null;\n let changed = false;\n const normalizedValue = normalizePlayableGroundDecalInspectorFieldValue(path, value);\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId || !services.canShowGroundDecalInspector(entry)) return entry;\n const decal = mergePlayableGroundDecalDefaults(entry.groundDecal, services.createDefaultGroundDecal, services);\n const layer = decal.layers[parsed.index];\n if (!layer || !isPlayableGroundDecalProjectEditableLayer(layer, services)) return entry;\n if (parsed.field === 'rect' && !isPlayableGroundDecalLayoutEditableLayer(layer, services)) return entry;\n const patchedLayer = patchPlayableGroundDecalLayer(layer, parsed.field, normalizedValue);\n if (!patchedLayer || patchedLayer === layer) return entry;\n const layers = [...decal.layers];\n layers[parsed.index] = patchedLayer;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n groundDecal: {\n ...decal,\n layers,\n },\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function patchPlayableEditorSceneGroundDecalRenderingDimension<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n const dimension = normalizePlayableGroundDecalTextureDimension(value);\n if (dimension === null) return document;\n const key = path === 'groundDecal.rendering.textureWidth' ? 'textureWidth' : 'textureHeight';\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId || !services.canShowGroundDecalInspector(entry)) return entry;\n const decal = mergePlayableGroundDecalDefaults(entry.groundDecal, services.createDefaultGroundDecal, services);\n if (decal.rendering?.[key] === dimension) return entry;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n groundDecal: {\n ...decal,\n rendering: {\n ...decal.rendering,\n [key]: dimension,\n },\n },\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function replacePlayableEditorSceneGroundDecalUi<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n groundDecal: TConfig,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (!services.isGroundDecalConfig(groundDecal)) return document;\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((entry) => {\n if (entry.id !== targetId) return entry;\n if (!services.isGroundDecalUiGameObject(entry) || entry.groundDecal.uiKind !== groundDecal.uiKind) return entry;\n changed = true;\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...entry,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: mergePlayableGroundDecalDefaults(groundDecal, services.createDefaultGroundDecal, services),\n }, services);\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function normalizePlayableGroundDecalUiScaleAfterFieldPatch<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n targetId: string,\n path: string,\n value: unknown,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (!path.startsWith('transform.scale')) return document;\n return normalizePlayableGroundDecalUiScales(document, services, targetId, resolvePlayableGroundDecalUiInspectorScale(path, value));\n}\n\nexport function normalizePlayableGroundDecalUiScalesForCommand<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n TPatch,\n>(\n document: TDocument,\n command: DocumentCommand<TDocument, TPatch>,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TDocument {\n if (command.type === 'document.replace') return normalizePlayableGroundDecalUiScales(document, services);\n const patch = command.patch as Record<string, unknown>;\n if (patch.kind === 'game-object.field') {\n return normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n document,\n String(patch.targetId ?? ''),\n String(patch.path ?? ''),\n patch.value,\n services,\n );\n }\n if (patch.kind === 'game-object.field-batch') {\n if (Array.isArray(patch.fields)) {\n return patch.fields.reduce<TDocument>((nextDocument, field) => {\n const record = readPlayableGroundDecalRecord(field);\n return normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n nextDocument,\n String(record?.targetId ?? ''),\n String(record?.path ?? ''),\n record?.value,\n services,\n );\n }, document);\n }\n if (Array.isArray(patch.targetIds)) {\n return patch.targetIds.reduce<TDocument>((nextDocument, targetId) => (\n normalizePlayableGroundDecalUiScaleAfterFieldPatch(\n nextDocument,\n String(targetId),\n String(patch.path ?? ''),\n patch.value,\n services,\n )\n ), document);\n }\n return document;\n }\n return normalizePlayableGroundDecalUiScales(document, services);\n}\n\nexport function normalizePlayableGroundDecalUiScales<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n targetId?: string,\n uniformOverride?: number | null,\n): TDocument {\n let changed = false;\n const gameObjects = document.scene.gameObjects.map((gameObject) => {\n if ((targetId && gameObject.id !== targetId) || !services.isGroundDecalUiGameObject(gameObject)) return gameObject;\n const transform = findEditorSceneTransform(gameObject);\n if (!transform || !isPlayableGroundDecalTrsTransformComponent(transform) || !transform.scale) return gameObject;\n const uniform = uniformOverride ?? resolvePlayableGroundDecalUniformScaleFromVec3(transform.scale);\n if (\n Math.abs(transform.scale.x - uniform) < 0.000001\n && Math.abs(transform.scale.y - uniform) < 0.000001\n && Math.abs(transform.scale.z - uniform) < 0.000001\n ) {\n return gameObject;\n }\n changed = true;\n return {\n ...gameObject,\n components: gameObject.components.map((component) => component === transform\n ? { ...component, scale: { x: uniform, y: uniform, z: uniform } }\n : component),\n };\n });\n return changed ? { ...document, scene: { ...document.scene, gameObjects } } as TDocument : document;\n}\n\nexport function normalizePlayableEditorSceneGroundDecalGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const next = ensurePlayableGroundDecalTransformComponent({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services),\n } as TGameObject);\n delete next.camera;\n delete next.light;\n delete next.primitive;\n return next;\n}\n\nexport function isPlayableEditorSceneGroundDecalProjectionPath(path: string): boolean {\n return path === 'groundDecal' || path.startsWith('groundDecal.');\n}\n\nfunction patchPlayableEditorSceneGroundDecalLayoutGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n patches: readonly PlayableGroundDecalLayoutLayerPatch[],\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const patchById = new Map(patches.map(patch => [patch.id, patch]));\n const decal = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: {\n ...decal,\n layers: decal.layers.map((layer, index) => {\n if (!isPlayableGroundDecalLayoutEditableLayer(layer, services)) return layer;\n const patch = patchById.get(layer.id) ?? patches[index];\n return patch ? { ...layer, rect: patch.rect } : layer;\n }),\n },\n } as TGameObject, services);\n}\n\nfunction patchPlayableEditorSceneGroundDecalKindGameObject<\n TConfig extends PlayableGroundDecalUiConfig,\n TGameObject extends PlayableGroundDecalEditorSceneGameObject<TConfig>,\n>(\n gameObject: TGameObject,\n uiKind: PlayableGroundDecalUiKind,\n services: PlayableGroundDecalDocumentServices<TConfig, TGameObject>,\n): TGameObject {\n const previous = mergePlayableGroundDecalDefaults(gameObject.groundDecal, services.createDefaultGroundDecal, services);\n const defaults = services.createDefaultGroundDecal(uiKind);\n return normalizePlayableEditorSceneGroundDecalGameObject({\n ...gameObject,\n kind: 'transform',\n transformType: 'groundDecal',\n groundDecal: {\n ...defaults,\n size: previous.size,\n mask: previous.mask ?? defaults.mask,\n rendering: previous.rendering ?? defaults.rendering,\n },\n } as TGameObject, services);\n}\n\nfunction ensurePlayableGroundDecalTransformComponent<TGameObject extends EditorSceneGameObject>(\n gameObject: TGameObject,\n): TGameObject {\n if (gameObject.components.some(component => component.type === 'Transform')) return gameObject;\n return {\n ...gameObject,\n components: [createPlayableGroundDecalIdentityTransformComponent(), ...gameObject.components],\n };\n}\n\nfunction createPlayableGroundDecalIdentityTransformComponent(): EditorSceneComponent {\n return {\n type: 'Transform',\n position: { x: 0, y: 0, z: 0 },\n rotation: { x: 0, y: 0, z: 0 },\n scale: { x: 1, y: 1, z: 1 },\n };\n}\n\nfunction isPlayableGroundDecalTrsTransformComponent(\n component: EditorSceneComponent,\n): component is EditorSceneComponent & { position: EditorSceneVec3; rotation: EditorSceneVec3; scale?: EditorSceneVec3 } {\n return component.type === 'Transform' && component.mode !== 'matrix';\n}\n\nfunction findPlayableGroundDecalGameObject<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n gameObjectId: string | null | undefined,\n): TGameObject | null {\n if (!gameObjectId) return null;\n return document.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null;\n}\n\nfunction mapPlayableGroundDecalGameObjects<\n TGameObject extends PlayableGroundDecalEditorSceneGameObject,\n TDocument extends PlayableGroundDecalEditorSceneDocument<TGameObject>,\n>(\n document: TDocument,\n mapGameObject: (gameObject: TGameObject) => TGameObject,\n): TDocument {\n return {\n ...document,\n scene: {\n ...document.scene,\n gameObjects: document.scene.gameObjects.map(mapGameObject),\n },\n };\n}\n\nexport function createPlayableGroundDecalInspectorProperties<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n nodeKind: TNodeKind,\n groundDecal: Partial<PlayableGroundDecalUiConfig> | null | undefined,\n options: TContext & { enableGroundDecalUiActions?: boolean } = {} as TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument>[] {\n const decal = mergePlayableGroundDecalDefaults(groundDecal, services.createDefaultGroundDecal, services);\n const properties: InspectorProperty<TDocument>[] = [\n createPlayableReadonlyInspectorProperty('groundDecal.uiKind', 'Type', services.createUiKindLabel?.(decal.uiKind) ?? decal.uiKind, 0),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.size.width',\n label: 'Width',\n valueType: 'number',\n control: 'number',\n value: decal.size.width,\n commitMode: 'live',\n order: 1,\n min: 0.001,\n step: 0.1,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.size.depth',\n label: 'Depth',\n valueType: 'number',\n control: 'number',\n value: decal.size.depth,\n commitMode: 'live',\n order: 2,\n min: 0.001,\n step: 0.1,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.rendering.textureWidth',\n label: 'Texture Width',\n valueType: 'number',\n control: 'number',\n value: decal.rendering?.textureWidth ?? 512,\n commitMode: 'change',\n order: 3,\n min: 64,\n max: 2048,\n step: 64,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.rendering.textureHeight',\n label: 'Texture Height',\n valueType: 'number',\n control: 'number',\n value: decal.rendering?.textureHeight ?? 512,\n commitMode: 'change',\n order: 4,\n min: 64,\n max: 2048,\n step: 64,\n }),\n services.createDocumentInspectorProperty(null, nodeKind, {\n path: 'groundDecal.layers',\n label: 'Layout',\n valueType: 'object',\n control: 'custom',\n customControl: 'ground-decal-layout',\n value: createPlayableGroundDecalLayoutInspectorValue(decal, options, services),\n commitMode: 'live',\n order: 5,\n coerce: (value: unknown) => services.normalizeValue('groundDecal.layers', value),\n controlOptions: {\n aspectRatio: resolvePlayableGroundDecalLayoutAspectRatio(decal),\n },\n }),\n ];\n\n let order = 10;\n if (options.enableGroundDecalUiActions && (services.canShowLayerPairActions?.(decal) ?? false) && services.layerPairActions) {\n const pairCount = services.getLayerPairs?.(decal).length ?? 0;\n const canAddPair = services.canAddLayerPair?.(decal) ?? false;\n const canRemovePair = services.canRemoveLayerPair?.(decal) ?? false;\n properties.push(createPlayableInspectorActionProperty({\n path: services.layerPairActions.addPath ?? 'groundDecal.layerPairs.add',\n label: services.layerPairActions.addLabel ?? 'Add item',\n actionId: services.layerPairActions.addActionId,\n order,\n icon: 'asset',\n tooltip: services.layerPairActions.addTooltip ?? 'Add an item.',\n params: {},\n disabled: !canAddPair,\n disabledReason: canAddPair ? undefined : services.createLayerPairDisabledReason?.({ decal, action: 'add', pairCount }),\n effect: canAddPair ? 'active' : 'unsupported',\n }));\n order += 1;\n properties.push(createPlayableInspectorActionProperty({\n path: services.layerPairActions.removePath ?? 'groundDecal.layerPairs.remove',\n label: services.layerPairActions.removeLabel ?? 'Remove item',\n actionId: services.layerPairActions.removeActionId,\n order,\n icon: 'asset',\n tooltip: services.layerPairActions.removeTooltip ?? 'Remove an item.',\n params: {},\n disabled: !canRemovePair,\n disabledReason: canRemovePair ? undefined : services.createLayerPairDisabledReason?.({ decal, action: 'remove', pairCount }),\n effect: canRemovePair ? 'active' : 'unsupported',\n }));\n order += 1;\n }\n\n for (let index = 0; index < decal.layers.length; index += 1) {\n const layer = decal.layers[index];\n if (!layer || !isPlayableGroundDecalProjectEditableLayer(layer, services)) continue;\n const label = createPlayableGroundDecalLayerLabel(layer, services);\n if (isPlayableGroundDecalEditableTextureLayer(layer, services)) {\n properties.push(createPlayableGroundDecalTextureInspectorProperty(nodeKind, options, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextureTintInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextureTintAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (layer.kind === 'progress' && isPlayableGroundDecalEditableColorLayer(layer, services)) {\n properties.push(createPlayableGroundDecalProgressPreviewInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (isPlayableGroundDecalEditableColorLayer(layer, services)) {\n properties.push(createPlayableGroundDecalColorInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalColorAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n if (isPlayableGroundDecalEditableTextLayer(layer, services)) {\n properties.push(services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${index}.text.value`,\n label: `${label} Text`,\n valueType: 'string',\n control: 'string',\n value: layer.text.value,\n commitMode: 'blur',\n order,\n tags: ['GroundDecalUI', 'Text'],\n }));\n order += 1;\n properties.push(createPlayableGroundDecalTextColorInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n properties.push(createPlayableGroundDecalTextColorAlphaInspectorProperty(nodeKind, layer, index, label, order, services));\n order += 1;\n }\n }\n\n appendPlayableReadonlyInspectorProperty(properties, {\n path: 'groundDecal.raw',\n label: 'Raw Ground Decal',\n value: groundDecal ?? decal,\n order,\n source: 'Document',\n tags: ['Raw'],\n });\n return properties;\n}\n\nexport function createPlayableGroundDecalInspectorSection<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n target: TTarget,\n nodeKind: TNodeKind,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorSection<TDocument> {\n const groundDecal = services.getTargetGroundDecal(target);\n return {\n id: 'groundDecal',\n title: 'Ground Decal',\n order: 40,\n placement: 'body',\n summary: groundDecal ? 'Configured' : 'Defaults',\n persistence: 'document',\n collapsedByDefault: true,\n properties: createPlayableGroundDecalInspectorProperties(\n nodeKind,\n groundDecal,\n {\n ...context,\n enableGroundDecalUiActions: services.isUiTarget?.(target) ?? false,\n },\n services,\n ),\n };\n}\n\nexport function createPlayableGroundDecalMultiInspectorSection<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n activeId: string | null,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorSection<TDocument> | null {\n const targets = resolvePlayableGroundDecalMultiInspectorTargets(document, targetIds, services);\n if (targets.length <= 1) return null;\n const activeTarget = targets.find(target => services.getTargetId(target.target) === activeId) ?? targets[0];\n if (!activeTarget) return null;\n const compatibleLayerSignature = haveCompatiblePlayableGroundDecalLayerSignatures(targets.map(target => target.decal), services);\n const nodeKind = services.getTargetNodeKind(activeTarget.target);\n const properties = createPlayableGroundDecalInspectorProperties(nodeKind, activeTarget.decal, {\n ...context,\n enableGroundDecalUiActions: false,\n }, services)\n .filter(property => isPlayableGroundDecalMultiInspectorProperty(property, compatibleLayerSignature))\n .filter(property => targets.every(target => (\n property.readOnly\n || services.canPatchMultiField(document, services.getTargetId(target.target), property.path, property.value)\n )))\n .map(property => ({\n ...property,\n mixed: isPlayableGroundDecalMultiInspectorPropertyMixed(targets, property.path, context, services),\n }));\n if (properties.length === 0) return null;\n const mixedKind = targets.some(target => target.decal.uiKind !== activeTarget.decal.uiKind);\n return {\n id: 'groundDecal',\n title: 'Ground Decal',\n order: 40,\n placement: 'body',\n summary: mixedKind ? 'Mixed' : `${targets.length} ${services.createUiKindLabel?.(activeTarget.decal.uiKind) ?? activeTarget.decal.uiKind} UIs`,\n persistence: 'document',\n collapsedByDefault: false,\n properties,\n };\n}\n\nexport function resolvePlayableGroundDecalMultiInspectorTargetIds<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): string[] {\n return resolvePlayableGroundDecalMultiInspectorTargets(document, targetIds, services)\n .map(target => services.getTargetId(target.target));\n}\n\ntype PlayableGroundDecalMultiInspectorTarget<TTarget> = {\n target: TTarget;\n decal: PlayableGroundDecalUiConfig;\n};\n\nfunction resolvePlayableGroundDecalMultiInspectorTargets<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n document: TDocument,\n targetIds: readonly string[],\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): PlayableGroundDecalMultiInspectorTarget<TTarget>[] {\n const seen = new Set<string>();\n const targets: PlayableGroundDecalMultiInspectorTarget<TTarget>[] = [];\n for (const targetId of targetIds) {\n if (!targetId || seen.has(targetId)) continue;\n seen.add(targetId);\n const target = services.findTarget(document, targetId);\n if (!target || !services.canShowTarget(target)) continue;\n targets.push({\n target,\n decal: mergePlayableGroundDecalDefaults(services.getTargetGroundDecal(target), services.createDefaultGroundDecal, services),\n });\n }\n return targets;\n}\n\nfunction haveCompatiblePlayableGroundDecalLayerSignatures(\n decals: readonly PlayableGroundDecalUiConfig[],\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isProjectEditableLayer'> = {},\n): boolean {\n if (decals.length === 0) return false;\n const [firstSignature, ...rest] = decals.map(decal => createPlayableGroundDecalEditableLayerSignature(decal, services));\n return rest.every(signature => signature === firstSignature);\n}\n\nfunction createPlayableGroundDecalEditableLayerSignature(\n decal: PlayableGroundDecalUiConfig,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'isProjectEditableLayer'> = {},\n): string {\n return decal.layers\n .map((layer, index) => ({ layer, index }))\n .filter(entry => isPlayableGroundDecalProjectEditableLayer(entry.layer, services))\n .map(({ layer, index }) => `${index}:${layer.id}:${layer.role}:${layer.kind}`)\n .join('|');\n}\n\nfunction isPlayableGroundDecalMultiInspectorProperty(\n property: InspectorProperty,\n compatibleLayerSignature: boolean,\n): boolean {\n if (property.path === 'groundDecal.raw') return false;\n if (property.path === 'groundDecal.uiKind') return true;\n if (property.path === 'groundDecal.size.width' || property.path === 'groundDecal.size.depth') return true;\n if (isPlayableGroundDecalRenderingTextureDimensionPath(property.path)) return true;\n if (property.path === 'groundDecal.layers' || parsePlayableGroundDecalLayerPatchPath(property.path)) {\n return compatibleLayerSignature;\n }\n return false;\n}\n\nfunction isPlayableGroundDecalMultiInspectorPropertyMixed<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n targets: readonly PlayableGroundDecalMultiInspectorTarget<TTarget>[],\n path: string,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): boolean {\n if (targets.length <= 1) return false;\n const [first, ...rest] = targets.map(target => (\n JSON.stringify(readPlayableGroundDecalMultiInspectorComparableValue(target.decal, path, context, services))\n ));\n return rest.some(value => value !== first);\n}\n\nfunction readPlayableGroundDecalMultiInspectorComparableValue<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n decal: PlayableGroundDecalUiConfig,\n path: string,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): unknown {\n if (path === 'groundDecal.uiKind') return decal.uiKind;\n if (path === 'groundDecal.size.width') return decal.size.width;\n if (path === 'groundDecal.size.depth') return decal.size.depth;\n if (path === 'groundDecal.rendering.textureWidth') return decal.rendering?.textureWidth ?? 512;\n if (path === 'groundDecal.rendering.textureHeight') return decal.rendering?.textureHeight ?? 512;\n if (path === 'groundDecal.layers') {\n return createPlayableGroundDecalLayoutInspectorValue(decal, context, services).layers;\n }\n const parsed = parsePlayableGroundDecalLayerPatchPath(path);\n if (!parsed) return undefined;\n const layer = decal.layers[parsed.index];\n if (!layer) return undefined;\n return readPlayableGroundDecalLayerPatchFieldValue(layer, parsed.field);\n}\n\nfunction readPlayableGroundDecalLayerPatchFieldValue(\n layer: PlayableGroundDecalUiLayer,\n field: PlayableGroundDecalLayerPatchField,\n): unknown {\n if (field === 'rect') return layer.rect;\n if (field === 'textureId') return layer.kind === 'texture' ? layer.textureId : undefined;\n if (field === 'text.value') return layer.kind === 'text' ? layer.text.value : undefined;\n if (field === 'color') return layer.kind === 'color' || layer.kind === 'progress' ? layer.color : undefined;\n if (field === 'color.a') return layer.kind === 'color' || layer.kind === 'progress' ? layer.color.a ?? 1 : undefined;\n if (field === 'tint') return layer.kind === 'texture' ? layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT : undefined;\n if (field === 'tint.a') return layer.kind === 'texture' ? layer.tint?.a ?? 1 : undefined;\n if (field === 'text.color') return layer.kind === 'text' ? layer.text.color : undefined;\n if (field === 'text.color.a') return layer.kind === 'text' ? layer.text.color.a ?? 1 : undefined;\n if (field === 'editorPreviewPercent') return layer.kind === 'progress' ? resolvePlayableGroundDecalEditorPreviewProgressPercent(layer) : undefined;\n return undefined;\n}\n\nfunction createPlayableGroundDecalLayoutInspectorValue<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n decal: PlayableGroundDecalUiConfig,\n context: TContext,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> {\n const layoutEditableLayers = decal.layers\n .map((layer, index) => ({ layer, index }))\n .filter(entry => isPlayableGroundDecalLayoutEditableLayer(entry.layer, services));\n return {\n textureSize: {\n width: decal.rendering?.textureWidth ?? 512,\n height: decal.rendering?.textureHeight ?? 512,\n },\n mask: decal.mask,\n layers: layoutEditableLayers.map(({ layer, index }) => createPlayableGroundDecalLayoutInspectorLayer(context, layer, index, services)),\n previewLayers: decal.layers.map((layer, index) => createPlayableGroundDecalLayoutInspectorLayer(context, layer, index, services)),\n };\n}\n\nfunction createPlayableGroundDecalLayoutInspectorLayer<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n context: TContext,\n layer: PlayableGroundDecalUiLayer,\n index: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> {\n return {\n index,\n id: layer.id,\n role: layer.role,\n kind: layer.kind,\n label: createPlayableGroundDecalLayerLabel(layer, services),\n rect: layer.rect,\n enabled: layer.enabled !== false,\n editable: isPlayableGroundDecalLayoutEditableLayer(layer, services),\n zOrder: layer.zOrder,\n ...(typeof layer.opacity === 'number' ? { opacity: layer.opacity } : {}),\n ...(services.useUniformLayoutScaleMode?.(layer) ? { scaleMode: 'uniform' } : {}),\n preview: createPlayableGroundDecalLayerPreview(context, layer, services),\n };\n}\n\nexport function createPlayableGroundDecalLayerLabel(\n layer: PlayableGroundDecalUiLayer,\n services: Pick<PlayableGroundDecalInspectorServices<unknown, unknown, unknown>, 'createLayerLabel'> = {},\n): string {\n const label = services.createLayerLabel?.(layer);\n if (label) return label;\n return layer.role.charAt(0).toUpperCase() + layer.role.slice(1);\n}\n\nfunction createPlayableGroundDecalLayerPreview<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n context: TContext,\n layer: PlayableGroundDecalUiLayer,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): Record<string, unknown> | undefined {\n if (layer.kind === 'texture') {\n const textureAsset = services.findTextureAsset?.(context, layer.textureId) ?? null;\n const url = textureAsset?.url\n ?? context.resolveTextureAssetUrl?.(layer.textureId)\n ?? services.resolveTextureAssetUrl?.(layer.textureId);\n return url\n ? {\n kind: 'image',\n url,\n alt: textureAsset?.label ?? layer.textureId,\n ...(layer.tint ? { tint: layer.tint } : {}),\n }\n : undefined;\n }\n if (layer.kind === 'color') {\n return { kind: 'color', color: layer.color };\n }\n if (layer.kind === 'progress') {\n return {\n kind: 'progress',\n value: resolvePlayableGroundDecalEditorPreviewProgressValue(layer),\n direction: layer.direction,\n color: layer.color,\n };\n }\n if (layer.kind === 'text') {\n return {\n kind: 'text',\n text: layer.text.value,\n fontFamily: layer.text.fontFamily,\n fontSize: layer.text.fontSize,\n fontWeight: layer.text.fontWeight,\n color: layer.text.color,\n strokeColor: layer.text.strokeColor,\n strokeWidth: layer.text.strokeWidth,\n align: layer.text.align,\n baseline: layer.text.baseline,\n };\n }\n return undefined;\n}\n\nfunction resolvePlayableGroundDecalEditorPreviewProgressPercent(\n layer: PlayableGroundDecalUiProgressLayer,\n): number {\n const percent = typeof layer.editorPreviewPercent === 'number' && Number.isFinite(layer.editorPreviewPercent)\n ? layer.editorPreviewPercent\n : PLAYABLE_GROUND_DECAL_UI_EDITOR_PROGRESS_PERCENT;\n return Math.round(Math.max(0, Math.min(100, percent)));\n}\n\nfunction resolvePlayableGroundDecalEditorPreviewProgressValue(layer: PlayableGroundDecalUiProgressLayer): number {\n return resolvePlayableGroundDecalEditorPreviewProgressPercent(layer) / 100;\n}\n\nfunction createPlayableGroundDecalTextureInspectorProperty<\n TDocument,\n TNodeKind,\n TTarget,\n TContext extends PlayableGroundDecalInspectorContext = PlayableGroundDecalInspectorContext,\n>(\n nodeKind: TNodeKind,\n context: TContext,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const text = services.getMaterialText?.('zh');\n const currentTexture = services.findTextureAsset?.(context, layer.textureId) ?? null;\n const path = `groundDecal.layers.${layerIndex}.textureId`;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path,\n label: `${label} PNG`,\n valueType: 'string',\n control: 'custom',\n customControl: 'asset-picker-card',\n value: layer.textureId,\n commitMode: 'change',\n order,\n tags: ['GroundDecalUI', 'TextureAsset'],\n controlOptions: services.createTexturePickerControlOptions?.(context, text, layer.textureId, currentTexture) ?? {\n currentTextureId: layer.textureId,\n currentTexture,\n },\n coerce: (value: unknown) => services.normalizeValue(path, value),\n });\n}\n\nfunction createPlayableGroundDecalColorInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.color`,\n label: `${label} Color`,\n valueType: 'color',\n control: 'color',\n value: layer.color,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalColorAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiColorLayer | PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.color.a`,\n label: `${label} Alpha`,\n valueType: 'number',\n control: 'number',\n value: layer.color.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalProgressPreviewInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiProgressLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const path = `groundDecal.layers.${layerIndex}.editorPreviewPercent`;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path,\n label: `${label} Preview %`,\n valueType: 'number',\n control: 'number',\n value: resolvePlayableGroundDecalEditorPreviewProgressPercent(layer),\n commitMode: 'blur',\n order,\n min: 0,\n max: 100,\n step: 1,\n tags: ['GroundDecalUI', 'Progress'],\n coerce: (value: unknown) => services.normalizeValue(path, value),\n });\n}\n\nfunction createPlayableGroundDecalTextureTintInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const tint = layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.tint`,\n label: `${label} Tint Color`,\n valueType: 'color',\n control: 'color',\n value: tint,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextureTintAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextureLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n const tint = layer.tint ?? PLAYABLE_GROUND_DECAL_TEXTURE_TINT;\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.tint.a`,\n label: `${label} Tint Alpha`,\n valueType: 'number',\n control: 'number',\n value: tint.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextColorInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.text.color`,\n label: `${label} Text Color`,\n valueType: 'color',\n control: 'color',\n value: layer.text.color,\n commitMode: 'immediate',\n order,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction createPlayableGroundDecalTextColorAlphaInspectorProperty<TDocument, TNodeKind, TTarget, TContext extends PlayableGroundDecalInspectorContext>(\n nodeKind: TNodeKind,\n layer: PlayableGroundDecalUiTextLayer,\n layerIndex: number,\n label: string,\n order: number,\n services: PlayableGroundDecalInspectorServices<TDocument, TNodeKind, TTarget, TContext>,\n): InspectorProperty<TDocument> {\n return services.createDocumentInspectorProperty(null, nodeKind, {\n path: `groundDecal.layers.${layerIndex}.text.color.a`,\n label: `${label} Text Alpha`,\n valueType: 'number',\n control: 'number',\n value: layer.text.color.a ?? 1,\n commitMode: 'live',\n order,\n min: 0,\n max: 1,\n step: 0.01,\n tags: ['GroundDecalUI', 'Color'],\n });\n}\n\nfunction resolvePlayableGroundDecalLayoutAspectRatio(decal: PlayableGroundDecalUiConfig): number {\n const sourceLayer = decal.layers.find(layer => layer.id === decal.aspectSourceLayerId);\n const sourceRect = sourceLayer?.rect;\n if (sourceRect && sourceRect.width > 0 && sourceRect.depth > 0) return sourceRect.width / sourceRect.depth;\n return decal.size.width > 0 && decal.size.depth > 0 ? decal.size.width / decal.size.depth : 1;\n}\n\nfunction appendPlayableReadonlyInspectorProperty<TDocument>(\n properties: InspectorProperty<TDocument>[],\n input: Parameters<typeof createEditorSceneReadonlyInspectorProperty<TDocument>>[0],\n): void {\n const property = createEditorSceneReadonlyInspectorProperty<TDocument>(input);\n if (property) properties.push(property);\n}\n\nfunction createPlayableReadonlyInspectorProperty<TDocument>(\n path: string,\n label: string,\n value: unknown,\n order: number,\n tooltip?: string,\n): InspectorProperty<TDocument> {\n return createEditorSceneReadonlyInspectorProperty<TDocument>({\n path,\n label,\n value,\n order,\n persistence: 'readonly',\n source: 'Document',\n tooltip,\n })!;\n}\n\nfunction createPlayableInspectorActionProperty<TDocument>(input: {\n path: string;\n label: string;\n actionId: string;\n order: number;\n icon: string;\n tooltip: string;\n params: Record<string, string | undefined>;\n disabled: boolean;\n disabledReason?: string;\n effect?: InspectorProperty<TDocument>['effect'];\n}): InspectorProperty<TDocument> {\n const params = Object.fromEntries(\n Object.entries(input.params).filter((entry): entry is [string, string] => typeof entry[1] === 'string' && entry[1].length > 0),\n );\n return {\n path: input.path,\n label: input.label,\n valueType: 'string',\n control: 'custom',\n customControl: 'inspector-action-button',\n controlOptions: {\n actionId: input.actionId,\n label: input.label,\n icon: input.icon,\n params,\n ...(input.disabled ? { disabled: true } : {}),\n ...(input.disabledReason ? { disabledReason: input.disabledReason } : {}),\n },\n value: input.actionId,\n readOnly: false,\n persistence: 'readonly',\n commitMode: 'immediate',\n order: input.order,\n tooltip: input.disabledReason ?? input.tooltip,\n effect: input.effect,\n disabledReason: input.disabled ? input.disabledReason : undefined,\n };\n}\n\nfunction readPlayableGroundDecalRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : null;\n}\n\nfunction readPlayableGroundDecalString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value.trim() : null;\n}\n"]}