@forgeax/view 0.5.0-dev.13604.c415409c3b9d → 0.5.0-dev.13713.d28c4863d779

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 (280) hide show
  1. package/README.md +67 -9
  2. package/dist/build-revision.json +1 -1
  3. package/dist/modules/backend.mjs +34 -34
  4. package/dist/modules/browser.mjs +55 -49
  5. package/dist/modules/chunks/{chunk-EWSCJF77.mjs → chunk-2CMCY54A.mjs} +2 -2
  6. package/dist/modules/chunks/{chunk-M6S5YA6X.mjs → chunk-2RUKPDIE.mjs} +4 -4
  7. package/dist/modules/chunks/{chunk-M6S5YA6X.mjs.map → chunk-2RUKPDIE.mjs.map} +1 -1
  8. package/dist/modules/chunks/{chunk-DWT3TA6M.mjs → chunk-3FBX3P3H.mjs} +9 -8
  9. package/dist/modules/chunks/chunk-3FBX3P3H.mjs.map +7 -0
  10. package/dist/modules/chunks/{chunk-6KM24NH6.mjs → chunk-3Y5WN22T.mjs} +3 -3
  11. package/dist/modules/chunks/chunk-3Y5WN22T.mjs.map +7 -0
  12. package/dist/modules/chunks/{chunk-YFQGSDK3.mjs → chunk-45WL24XN.mjs} +2 -2
  13. package/dist/modules/chunks/{chunk-FMCHH5R4.mjs → chunk-4FYKRL46.mjs} +3 -3
  14. package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs → chunk-4MJHVZMB.mjs} +6 -6
  15. package/dist/modules/chunks/{chunk-XQYF2P6M.mjs → chunk-5HVXQEO3.mjs} +7 -7
  16. package/dist/modules/chunks/{chunk-XMP4THLF.mjs → chunk-66LM6NO6.mjs} +4 -4
  17. package/dist/modules/chunks/{chunk-P4UPH74B.mjs → chunk-6C4OCCYB.mjs} +12 -12
  18. package/dist/modules/chunks/{chunk-P4UPH74B.mjs.map → chunk-6C4OCCYB.mjs.map} +1 -1
  19. package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs → chunk-6J27SWMY.mjs} +1 -1
  20. package/dist/modules/chunks/{chunk-JK7K7RG3.mjs → chunk-6VK7HB4X.mjs} +4 -4
  21. package/dist/modules/chunks/{chunk-HRKW766Y.mjs → chunk-6WZZ7TIC.mjs} +2 -2
  22. package/dist/modules/chunks/{chunk-FICPCJKR.mjs → chunk-7DFCIN3T.mjs} +3 -3
  23. package/dist/modules/chunks/{chunk-FICPCJKR.mjs.map → chunk-7DFCIN3T.mjs.map} +1 -1
  24. package/dist/modules/chunks/{chunk-U64FRQKP.mjs → chunk-7MWZK7HS.mjs} +3 -3
  25. package/dist/modules/chunks/{chunk-F5RLQAPN.mjs → chunk-A7OGXJAV.mjs} +3 -3
  26. package/dist/modules/chunks/{chunk-QUFVUMSY.mjs → chunk-AUINYWZP.mjs} +2 -2
  27. package/dist/modules/chunks/{chunk-PZIAKZJC.mjs → chunk-B24VYGHV.mjs} +3 -3
  28. package/dist/modules/chunks/{chunk-SRYQLFBV.mjs → chunk-BIUWJROZ.mjs} +3 -3
  29. package/dist/modules/chunks/{chunk-SRYQLFBV.mjs.map → chunk-BIUWJROZ.mjs.map} +2 -2
  30. package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs → chunk-C2AMOM7H.mjs} +3 -3
  31. package/dist/modules/chunks/{chunk-IZAHIOFU.mjs → chunk-C3WVSJZF.mjs} +6 -6
  32. package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs → chunk-CAXCOZ7Y.mjs} +3 -3
  33. package/dist/modules/chunks/{chunk-HWZCLROY.mjs → chunk-CN6YN4HP.mjs} +251 -45
  34. package/dist/modules/chunks/chunk-CN6YN4HP.mjs.map +7 -0
  35. package/dist/modules/chunks/{chunk-B6QUJ33G.mjs → chunk-CXFQME65.mjs} +3 -3
  36. package/dist/modules/chunks/{chunk-IJPWKKIU.mjs → chunk-CYOLEAAY.mjs} +14 -13
  37. package/dist/modules/chunks/chunk-CYOLEAAY.mjs.map +7 -0
  38. package/dist/modules/chunks/{chunk-U6UMATPV.mjs → chunk-CYU3WWN6.mjs} +3 -3
  39. package/dist/modules/chunks/{chunk-AGVLPYVE.mjs → chunk-D2LZIQE2.mjs} +2 -2
  40. package/dist/modules/chunks/{chunk-5YTMN435.mjs → chunk-DC5JP46Y.mjs} +13 -3
  41. package/dist/modules/chunks/chunk-DC5JP46Y.mjs.map +7 -0
  42. package/dist/modules/chunks/{chunk-YNHEYXDG.mjs → chunk-DOU4MNMQ.mjs} +3 -3
  43. package/dist/modules/chunks/{chunk-ZIDEETK4.mjs → chunk-E4G4HDOC.mjs} +3 -3
  44. package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs → chunk-EZAJ66NW.mjs} +3 -3
  45. package/dist/modules/chunks/{chunk-APD2EWSZ.mjs → chunk-FIWL6TQS.mjs} +2 -2
  46. package/dist/modules/chunks/{chunk-U5J7OTEB.mjs → chunk-FSSARTVM.mjs} +3 -3
  47. package/dist/modules/chunks/{chunk-47RJSHLM.mjs → chunk-FXXPWAXM.mjs} +3 -3
  48. package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs → chunk-G2QCXN56.mjs} +6 -6
  49. package/dist/modules/chunks/{chunk-4T3D67CS.mjs → chunk-GRDCA6LD.mjs} +8 -8
  50. package/dist/modules/chunks/{chunk-4T3D67CS.mjs.map → chunk-GRDCA6LD.mjs.map} +1 -1
  51. package/dist/modules/chunks/{chunk-WVU3CQ62.mjs → chunk-GUVUL6D2.mjs} +3 -3
  52. package/dist/modules/chunks/{chunk-YLCJNKIW.mjs → chunk-I32EONBF.mjs} +70 -30
  53. package/dist/modules/chunks/chunk-I32EONBF.mjs.map +7 -0
  54. package/dist/modules/chunks/{chunk-E3PJGTLI.mjs → chunk-IGIELQZ2.mjs} +5 -5
  55. package/dist/modules/chunks/{chunk-5PHAXNFO.mjs → chunk-IMDR26Y3.mjs} +3 -3
  56. package/dist/modules/chunks/{chunk-55F55BQY.mjs → chunk-JVOHFCI4.mjs} +3 -3
  57. package/dist/modules/chunks/{chunk-6I7RY73G.mjs → chunk-KCM7ZCQ3.mjs} +5 -5
  58. package/dist/modules/chunks/chunk-KCM7ZCQ3.mjs.map +7 -0
  59. package/dist/modules/chunks/{chunk-K2QZRFLE.mjs → chunk-KJTMDFFX.mjs} +4 -4
  60. package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs → chunk-KPLESRQY.mjs} +3 -3
  61. package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs → chunk-KUOWDTI6.mjs} +2 -2
  62. package/dist/modules/chunks/chunk-L6IHUN7X.mjs +13 -0
  63. package/dist/modules/chunks/chunk-L6IHUN7X.mjs.map +7 -0
  64. package/dist/modules/chunks/{chunk-INTTYJVW.mjs → chunk-LBQ6DFMP.mjs} +2 -2
  65. package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs → chunk-LVWHM3UN.mjs} +2 -2
  66. package/dist/modules/chunks/{chunk-D57DDEV2.mjs → chunk-MDQMARAN.mjs} +6 -6
  67. package/dist/modules/chunks/{chunk-D57DDEV2.mjs.map → chunk-MDQMARAN.mjs.map} +2 -2
  68. package/dist/modules/chunks/{chunk-STQPRNEO.mjs → chunk-MLXRIWJA.mjs} +2 -2
  69. package/dist/modules/chunks/{chunk-D25SR5FS.mjs → chunk-N2SH3JGI.mjs} +3 -3
  70. package/dist/modules/chunks/{chunk-KI4WGTWL.mjs → chunk-N7NXZ6R3.mjs} +4 -4
  71. package/dist/modules/chunks/{chunk-KI4WGTWL.mjs.map → chunk-N7NXZ6R3.mjs.map} +2 -2
  72. package/dist/modules/chunks/{chunk-7IGFAI5H.mjs → chunk-O5QX6H3U.mjs} +5 -5
  73. package/dist/modules/chunks/{chunk-5W7SC5D4.mjs → chunk-P2Y73QJJ.mjs} +11 -1
  74. package/dist/modules/chunks/{chunk-5W7SC5D4.mjs.map → chunk-P2Y73QJJ.mjs.map} +2 -2
  75. package/dist/modules/chunks/{chunk-FNRGLCZW.mjs → chunk-PCQNUFDL.mjs} +39 -13
  76. package/dist/modules/chunks/chunk-PCQNUFDL.mjs.map +7 -0
  77. package/dist/modules/chunks/{chunk-46UEGAXY.mjs → chunk-Q7M7VUOZ.mjs} +6 -6
  78. package/dist/modules/chunks/{chunk-XE6ITXHT.mjs → chunk-QB33CMEU.mjs} +2 -2
  79. package/dist/modules/chunks/{chunk-E3Z7GLFU.mjs → chunk-QJHQN6OD.mjs} +15 -4
  80. package/dist/modules/chunks/chunk-QJHQN6OD.mjs.map +7 -0
  81. package/dist/modules/chunks/{chunk-KAGFU64Y.mjs → chunk-QW2VT3XB.mjs} +2 -2
  82. package/dist/modules/chunks/{chunk-U5R6MVM4.mjs → chunk-RFTLGEB5.mjs} +2 -2
  83. package/dist/modules/chunks/{chunk-VKNIYV2W.mjs → chunk-RYYKMDNI.mjs} +202 -35
  84. package/dist/modules/chunks/chunk-RYYKMDNI.mjs.map +7 -0
  85. package/dist/modules/chunks/{chunk-P5XMFZY4.mjs → chunk-SFB5BDTB.mjs} +2 -2
  86. package/dist/modules/chunks/{chunk-4D3Q7K44.mjs → chunk-SNICHQJP.mjs} +2 -2
  87. package/dist/modules/chunks/{chunk-CX5WREJC.mjs → chunk-SPGFO2TA.mjs} +2 -2
  88. package/dist/modules/chunks/{chunk-H256DQT6.mjs → chunk-TMPTVIAP.mjs} +2 -2
  89. package/dist/modules/chunks/{chunk-OQXDADAS.mjs → chunk-UWJYROKS.mjs} +6 -6
  90. package/dist/modules/chunks/chunk-UWJYROKS.mjs.map +7 -0
  91. package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs → chunk-UZH2664E.mjs} +3 -3
  92. package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs.map → chunk-UZH2664E.mjs.map} +2 -2
  93. package/dist/modules/chunks/{chunk-CKYXAT7H.mjs → chunk-VC4OEPDH.mjs} +2 -2
  94. package/dist/modules/chunks/{chunk-RJVOH7G2.mjs → chunk-VKWEA6NG.mjs} +27 -27
  95. package/dist/modules/chunks/{chunk-LZ57Y73Z.mjs → chunk-VSJOW7J4.mjs} +9 -7
  96. package/dist/modules/chunks/chunk-VSJOW7J4.mjs.map +7 -0
  97. package/dist/modules/chunks/{chunk-PVP5YBNR.mjs → chunk-WFM434WJ.mjs} +2 -2
  98. package/dist/modules/chunks/{chunk-TXLD7JI5.mjs → chunk-WJNASQF2.mjs} +2 -2
  99. package/dist/modules/chunks/{chunk-357UOBAS.mjs → chunk-XUNDH3E7.mjs} +2 -2
  100. package/dist/modules/chunks/{chunk-PJFFCRRD.mjs → chunk-YDARD4EP.mjs} +2 -2
  101. package/dist/modules/chunks/{chunk-27XASYEH.mjs → chunk-YU3HRQX7.mjs} +17 -11
  102. package/dist/modules/chunks/chunk-YU3HRQX7.mjs.map +7 -0
  103. package/dist/modules/chunks/{chunk-EZSGDSCC.mjs → chunk-ZRE7BDDB.mjs} +30 -5
  104. package/dist/modules/chunks/chunk-ZRE7BDDB.mjs.map +7 -0
  105. package/dist/modules/cli-contributions.mjs +14 -14
  106. package/dist/modules/cli.mjs +5 -5
  107. package/dist/modules/command-executor.mjs +3 -3
  108. package/dist/modules/embedded.mjs +82 -42
  109. package/dist/modules/embedded.mjs.map +2 -2
  110. package/dist/modules/extension-bridge.mjs +4 -4
  111. package/dist/modules/frontend-root.mjs +46 -46
  112. package/dist/modules/index.mjs +71 -65
  113. package/dist/modules/index.mjs.map +1 -1
  114. package/dist/modules/pages/scene.mjs +5 -5
  115. package/dist/modules/plugin.mjs +35 -35
  116. package/dist/modules/plugins/asset/frontend.mjs +10 -10
  117. package/dist/modules/plugins/asset/identity.mjs +9 -9
  118. package/dist/modules/plugins/asset/ui.mjs +3 -3
  119. package/dist/modules/plugins/content-browser/frontend.mjs +3 -3
  120. package/dist/modules/plugins/content-browser/identity.mjs +2 -2
  121. package/dist/modules/plugins/content-browser/ui.mjs +3 -3
  122. package/dist/modules/plugins/display/api.mjs +1 -1
  123. package/dist/modules/plugins/display/backend.mjs +4 -4
  124. package/dist/modules/plugins/display/frontend.mjs +5 -5
  125. package/dist/modules/plugins/display/identity.mjs +2 -2
  126. package/dist/modules/plugins/display/ui.mjs +3 -3
  127. package/dist/modules/plugins/inspector/frontend.mjs +3 -3
  128. package/dist/modules/plugins/inspector/identity.mjs +2 -2
  129. package/dist/modules/plugins/inspector/ui.mjs +3 -3
  130. package/dist/modules/plugins/material/frontend.mjs +10 -10
  131. package/dist/modules/plugins/material/identity.mjs +9 -9
  132. package/dist/modules/plugins/material/ui.mjs +10 -10
  133. package/dist/modules/plugins/mesh/frontend.mjs +10 -10
  134. package/dist/modules/plugins/mesh/identity.mjs +9 -9
  135. package/dist/modules/plugins/mesh/ui.mjs +10 -10
  136. package/dist/modules/plugins/plugins/api.mjs +4 -4
  137. package/dist/modules/plugins/plugins/backend.mjs +7 -7
  138. package/dist/modules/plugins/plugins/cli.mjs +5 -5
  139. package/dist/modules/plugins/plugins/frontend.mjs +3 -3
  140. package/dist/modules/plugins/plugins/identity.mjs +2 -2
  141. package/dist/modules/plugins/plugins/runtime.mjs +6 -6
  142. package/dist/modules/plugins/plugins/ui/panel.mjs +3 -3
  143. package/dist/modules/plugins/plugins/ui.mjs +4 -4
  144. package/dist/modules/plugins/scene/frontend.mjs +5 -5
  145. package/dist/modules/plugins/scene/identity.mjs +2 -2
  146. package/dist/modules/plugins/scene-tree/frontend.mjs +3 -3
  147. package/dist/modules/plugins/scene-tree/identity.mjs +2 -2
  148. package/dist/modules/plugins/scene-tree/ui.mjs +3 -3
  149. package/dist/modules/plugins/texture/frontend.mjs +10 -10
  150. package/dist/modules/plugins/texture/identity.mjs +9 -9
  151. package/dist/modules/plugins/texture/ui.mjs +10 -10
  152. package/dist/modules/plugins/viewport/frontend.mjs +12 -12
  153. package/dist/modules/plugins/viewport/identity.mjs +2 -2
  154. package/dist/modules/plugins/viewport/presentation.mjs +4 -4
  155. package/dist/modules/plugins/viewport/schema.mjs +2 -2
  156. package/dist/modules/plugins/viewport/workspace-shell.mjs +9 -9
  157. package/dist/modules/product.mjs +35 -35
  158. package/dist/modules/shell/frontend.mjs +1 -1
  159. package/dist/modules/viewer/catalog/backend.mjs +31 -31
  160. package/dist/modules/viewer/catalog/frontend.mjs +42 -42
  161. package/dist/modules/viewer/catalog/shared.mjs +20 -20
  162. package/dist/modules/viewer/catalog.mjs +51 -51
  163. package/dist/modules/viewer/cli.mjs +10 -10
  164. package/dist/modules/viewer-host/frontend.mjs +48 -48
  165. package/dist/modules/viewer-host/page-registry.mjs +6 -6
  166. package/dist/modules/viewer-host.mjs +7 -7
  167. package/dist/modules/viewer.mjs +51 -51
  168. package/dist/modules/workspace/api.mjs +1 -1
  169. package/dist/modules/workspace/backend.mjs +10 -10
  170. package/dist/modules/workspace/broker.mjs +9 -9
  171. package/dist/modules/workspace/cli.mjs +2 -2
  172. package/dist/modules/workspace/client.mjs +3 -3
  173. package/dist/modules/workspace/command-error.mjs +2 -2
  174. package/dist/modules/workspace/contract.mjs +7 -1
  175. package/dist/modules/workspace/engine-adapter.mjs +3 -3
  176. package/dist/modules/workspace/extension-bridge.mjs +4 -4
  177. package/dist/modules/workspace/frontend-plugin.mjs +8 -8
  178. package/dist/modules/workspace/frontend.mjs +9 -9
  179. package/dist/modules/workspace/page-title.mjs +3 -3
  180. package/dist/modules/workspace/presentation.mjs +4 -4
  181. package/dist/modules/workspace/preview-surface.mjs +7 -7
  182. package/dist/modules/workspace/project-session.mjs +2 -2
  183. package/dist/modules/workspace/render-resize-sync.mjs +2 -2
  184. package/dist/modules/workspace/resident.mjs +4 -4
  185. package/dist/modules/workspace/resource-open.mjs +5 -5
  186. package/dist/modules/workspace/resource-page.mjs +8 -8
  187. package/dist/modules/workspace/tool-runtime.mjs +7 -5
  188. package/dist/modules/workspace/view-trace.mjs +3 -3
  189. package/dist/modules/workspace/workspace-recovery.mjs +4 -4
  190. package/dist/modules/workspace/workspace-state.mjs +2 -2
  191. package/dist/modules/workspace-frontend.mjs +8 -8
  192. package/dist/viewer/assets/{embedded-DXSSFAyM.js → embedded-BKEAtUD6.js} +2 -2
  193. package/dist/viewer/assets/{embedded-DXSSFAyM.js.map → embedded-BKEAtUD6.js.map} +1 -1
  194. package/dist/viewer/assets/main-BQrn6wsa.js +22 -0
  195. package/dist/viewer/assets/main-BQrn6wsa.js.map +1 -0
  196. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js → panels-lazy-C_Cs-76A.js} +2 -2
  197. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js.map → panels-lazy-C_Cs-76A.js.map} +1 -1
  198. package/dist/viewer/assets/panels-ui-DEDHJLuE.js +12 -0
  199. package/dist/viewer/assets/panels-ui-DEDHJLuE.js.map +1 -0
  200. package/dist/viewer/assets/style-CcYzhsIZ.css +2 -0
  201. package/dist/viewer/assets/{wgpu_wasm--oeqTwVY.js → wgpu_wasm-cNR5izZM.js} +126 -0
  202. package/dist/viewer/assets/{wgpu_wasm_bg-WoZ1YI1I.wasm → wgpu_wasm_bg-Dps0jNcQ.wasm} +0 -0
  203. package/dist/viewer/index.html +4 -4
  204. package/dist/viewer/panels.js +1 -1
  205. package/package.json +2 -2
  206. package/scripts/verify-runtime-content-engine.mjs +7 -4
  207. package/skills/forgeax-view-cli/SKILL.md +11 -0
  208. package/dist/modules/chunks/chunk-27XASYEH.mjs.map +0 -7
  209. package/dist/modules/chunks/chunk-5YTMN435.mjs.map +0 -7
  210. package/dist/modules/chunks/chunk-6I7RY73G.mjs.map +0 -7
  211. package/dist/modules/chunks/chunk-6KM24NH6.mjs.map +0 -7
  212. package/dist/modules/chunks/chunk-DWT3TA6M.mjs.map +0 -7
  213. package/dist/modules/chunks/chunk-E3Z7GLFU.mjs.map +0 -7
  214. package/dist/modules/chunks/chunk-EZSGDSCC.mjs.map +0 -7
  215. package/dist/modules/chunks/chunk-FNRGLCZW.mjs.map +0 -7
  216. package/dist/modules/chunks/chunk-HWZCLROY.mjs.map +0 -7
  217. package/dist/modules/chunks/chunk-IJPWKKIU.mjs.map +0 -7
  218. package/dist/modules/chunks/chunk-LZ57Y73Z.mjs.map +0 -7
  219. package/dist/modules/chunks/chunk-OQXDADAS.mjs.map +0 -7
  220. package/dist/modules/chunks/chunk-QELNKFSI.mjs +0 -10
  221. package/dist/modules/chunks/chunk-QELNKFSI.mjs.map +0 -7
  222. package/dist/modules/chunks/chunk-VKNIYV2W.mjs.map +0 -7
  223. package/dist/modules/chunks/chunk-YLCJNKIW.mjs.map +0 -7
  224. package/dist/viewer/assets/main-CI6ZQziX.js +0 -22
  225. package/dist/viewer/assets/main-CI6ZQziX.js.map +0 -1
  226. package/dist/viewer/assets/panels-ui-CfUtl68h.js +0 -12
  227. package/dist/viewer/assets/panels-ui-CfUtl68h.js.map +0 -1
  228. package/dist/viewer/assets/style-gOtSMZif.css +0 -2
  229. /package/dist/modules/chunks/{chunk-EWSCJF77.mjs.map → chunk-2CMCY54A.mjs.map} +0 -0
  230. /package/dist/modules/chunks/{chunk-YFQGSDK3.mjs.map → chunk-45WL24XN.mjs.map} +0 -0
  231. /package/dist/modules/chunks/{chunk-FMCHH5R4.mjs.map → chunk-4FYKRL46.mjs.map} +0 -0
  232. /package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs.map → chunk-4MJHVZMB.mjs.map} +0 -0
  233. /package/dist/modules/chunks/{chunk-XQYF2P6M.mjs.map → chunk-5HVXQEO3.mjs.map} +0 -0
  234. /package/dist/modules/chunks/{chunk-XMP4THLF.mjs.map → chunk-66LM6NO6.mjs.map} +0 -0
  235. /package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs.map → chunk-6J27SWMY.mjs.map} +0 -0
  236. /package/dist/modules/chunks/{chunk-JK7K7RG3.mjs.map → chunk-6VK7HB4X.mjs.map} +0 -0
  237. /package/dist/modules/chunks/{chunk-HRKW766Y.mjs.map → chunk-6WZZ7TIC.mjs.map} +0 -0
  238. /package/dist/modules/chunks/{chunk-U64FRQKP.mjs.map → chunk-7MWZK7HS.mjs.map} +0 -0
  239. /package/dist/modules/chunks/{chunk-F5RLQAPN.mjs.map → chunk-A7OGXJAV.mjs.map} +0 -0
  240. /package/dist/modules/chunks/{chunk-QUFVUMSY.mjs.map → chunk-AUINYWZP.mjs.map} +0 -0
  241. /package/dist/modules/chunks/{chunk-PZIAKZJC.mjs.map → chunk-B24VYGHV.mjs.map} +0 -0
  242. /package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs.map → chunk-C2AMOM7H.mjs.map} +0 -0
  243. /package/dist/modules/chunks/{chunk-IZAHIOFU.mjs.map → chunk-C3WVSJZF.mjs.map} +0 -0
  244. /package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs.map → chunk-CAXCOZ7Y.mjs.map} +0 -0
  245. /package/dist/modules/chunks/{chunk-B6QUJ33G.mjs.map → chunk-CXFQME65.mjs.map} +0 -0
  246. /package/dist/modules/chunks/{chunk-U6UMATPV.mjs.map → chunk-CYU3WWN6.mjs.map} +0 -0
  247. /package/dist/modules/chunks/{chunk-AGVLPYVE.mjs.map → chunk-D2LZIQE2.mjs.map} +0 -0
  248. /package/dist/modules/chunks/{chunk-YNHEYXDG.mjs.map → chunk-DOU4MNMQ.mjs.map} +0 -0
  249. /package/dist/modules/chunks/{chunk-ZIDEETK4.mjs.map → chunk-E4G4HDOC.mjs.map} +0 -0
  250. /package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs.map → chunk-EZAJ66NW.mjs.map} +0 -0
  251. /package/dist/modules/chunks/{chunk-APD2EWSZ.mjs.map → chunk-FIWL6TQS.mjs.map} +0 -0
  252. /package/dist/modules/chunks/{chunk-U5J7OTEB.mjs.map → chunk-FSSARTVM.mjs.map} +0 -0
  253. /package/dist/modules/chunks/{chunk-47RJSHLM.mjs.map → chunk-FXXPWAXM.mjs.map} +0 -0
  254. /package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs.map → chunk-G2QCXN56.mjs.map} +0 -0
  255. /package/dist/modules/chunks/{chunk-WVU3CQ62.mjs.map → chunk-GUVUL6D2.mjs.map} +0 -0
  256. /package/dist/modules/chunks/{chunk-E3PJGTLI.mjs.map → chunk-IGIELQZ2.mjs.map} +0 -0
  257. /package/dist/modules/chunks/{chunk-5PHAXNFO.mjs.map → chunk-IMDR26Y3.mjs.map} +0 -0
  258. /package/dist/modules/chunks/{chunk-55F55BQY.mjs.map → chunk-JVOHFCI4.mjs.map} +0 -0
  259. /package/dist/modules/chunks/{chunk-K2QZRFLE.mjs.map → chunk-KJTMDFFX.mjs.map} +0 -0
  260. /package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs.map → chunk-KPLESRQY.mjs.map} +0 -0
  261. /package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs.map → chunk-KUOWDTI6.mjs.map} +0 -0
  262. /package/dist/modules/chunks/{chunk-INTTYJVW.mjs.map → chunk-LBQ6DFMP.mjs.map} +0 -0
  263. /package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs.map → chunk-LVWHM3UN.mjs.map} +0 -0
  264. /package/dist/modules/chunks/{chunk-STQPRNEO.mjs.map → chunk-MLXRIWJA.mjs.map} +0 -0
  265. /package/dist/modules/chunks/{chunk-D25SR5FS.mjs.map → chunk-N2SH3JGI.mjs.map} +0 -0
  266. /package/dist/modules/chunks/{chunk-7IGFAI5H.mjs.map → chunk-O5QX6H3U.mjs.map} +0 -0
  267. /package/dist/modules/chunks/{chunk-46UEGAXY.mjs.map → chunk-Q7M7VUOZ.mjs.map} +0 -0
  268. /package/dist/modules/chunks/{chunk-XE6ITXHT.mjs.map → chunk-QB33CMEU.mjs.map} +0 -0
  269. /package/dist/modules/chunks/{chunk-KAGFU64Y.mjs.map → chunk-QW2VT3XB.mjs.map} +0 -0
  270. /package/dist/modules/chunks/{chunk-U5R6MVM4.mjs.map → chunk-RFTLGEB5.mjs.map} +0 -0
  271. /package/dist/modules/chunks/{chunk-P5XMFZY4.mjs.map → chunk-SFB5BDTB.mjs.map} +0 -0
  272. /package/dist/modules/chunks/{chunk-4D3Q7K44.mjs.map → chunk-SNICHQJP.mjs.map} +0 -0
  273. /package/dist/modules/chunks/{chunk-CX5WREJC.mjs.map → chunk-SPGFO2TA.mjs.map} +0 -0
  274. /package/dist/modules/chunks/{chunk-H256DQT6.mjs.map → chunk-TMPTVIAP.mjs.map} +0 -0
  275. /package/dist/modules/chunks/{chunk-CKYXAT7H.mjs.map → chunk-VC4OEPDH.mjs.map} +0 -0
  276. /package/dist/modules/chunks/{chunk-RJVOH7G2.mjs.map → chunk-VKWEA6NG.mjs.map} +0 -0
  277. /package/dist/modules/chunks/{chunk-PVP5YBNR.mjs.map → chunk-WFM434WJ.mjs.map} +0 -0
  278. /package/dist/modules/chunks/{chunk-TXLD7JI5.mjs.map → chunk-WJNASQF2.mjs.map} +0 -0
  279. /package/dist/modules/chunks/{chunk-357UOBAS.mjs.map → chunk-XUNDH3E7.mjs.map} +0 -0
  280. /package/dist/modules/chunks/{chunk-PJFFCRRD.mjs.map → chunk-YDARD4EP.mjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,KASI,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,EACC,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,QAAnC,GAA6C,CAAC,EAC/C,EAtBH,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,CACD,GAAwC,EAAc,EAAa,CAgBzE,EAAQ,MAAQ,GAAmC,EAAI,EAAa,CACpE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACD,EAGP,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CAIA,IAHA,KAEU,EAAY,aAAe,QAAlC,GAA4C,CAAC,EAC3C,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAiB,EACjB,EAAuB,EACvB,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,GACL,IAAK,IACL,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAA0B,EAAG,EAAa,CAC1C,MACF,IAAK,IACH,MACF,IAAK,IACH,IAAI,EAAW,EAAa,UACnB,EAAa,gBAAtB,MAaM,EAAS,aAAe,EAC1B,GACE,EACA,EACA,EACA,EACA,EACD,EAnBD,EAAS,YAAc,EACrB,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EACA,EACD,CASP,GACE,EAAQ,MACR,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EAAQ,MACR,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACA,EACD,CAEL,EAAc,EAAY,SAG9B,SAAS,GACP,EACA,EACA,CACA,GAAI,EAAY,aAAe,MAC7B,IAAK,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAQ,EAAa,MACvB,OAAQ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8B,EACnC,IACE,EACF,EAAa,EACb,MAAM,EAER,EAAsB,GACtB,GAAsC,EAC7B,IAAT,OACY,KAAT,KACI,GAAsC,EACvC,GAAoC,KAAK,MACvC,GACA,EACD,EAET,EAAa,EAGf,GADA,EAAsB,CAAC,EACb,IAAN,EAAkB,UAG1B,GAAU,IAAN,EAAkB,CACpB,GAAkB,EAAe,EAAE,CACnC,GAAkB,EAAe,EAAO,EAAG,CAAC,EAAE,CAC9C,MAEF,EAAG,CAGD,OAFA,EAAkB,EAClB,EAAsB,EACd,EAAR,CACE,IAAK,GACL,IAAK,GACH,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1C,IAAK,GACH,IAAK,EAAQ,WAAa,EAAO,MACnC,IAAK,GACH,GACE,EACA,EACA,GACA,CAAC,GACF,CACD,MAAM,EACR,IAAK,GACH,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAE5C,IACG,EAAQ,YAAc,IACrB,EAAa,GAA+B,IAAM,IAAK,CACzD,GAAK,GACL,CAOA,GANA,GACE,EACA,EACA,GACA,CAAC,GACF,CACS,GAAa,EAAiB,EAAG,CAAC,EAAE,GAA1C,EAA4C,MAAM,EACtD,GAAsB,EACtB,EAAgB,cAAgB,GAC9B,GAAoB,KAClB,KACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,YACA,GACA,EACD,CACD,EACD,CACD,MAAM,EAER,GACE,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,KACA,GACA,EACD,EAGL,YACO,GACT,GAAsB,EAAc,CAEtC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAGA,GAFA,EAAK,cAAgB,GACrB,EAAwB,EAAa,aAEnC,EAAwB,OACV,EAAwB,WAAtC,SACA,CACA,EAAwB,CACtB,YAAa,KACb,MAAO,EACP,SAAU,EACV,SAAU,EACV,gBAAiB,EAAE,CACnB,iBAAkB,CAAC,EACnB,yBAA0B,CAAC,EAC3B,UAAW,GACZ,CACD,GACE,EACA,EACA,EACD,CACD,IAAI,GACD,EAAQ,YAAc,EACnB,GAA+B,IAAK,EACnC,EAAQ,WAAa,EACpB,GAAiC,IAAK,CACtC,EAKR,GAJA,EAAgB,GACd,EACA,EACD,CACY,IAAT,KAAwB,CAC1B,GAAsB,EACtB,EAAK,oBAAsB,EACzB,GAAW,KACT,KACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KACA,EACA,EACD,CACF,CACD,GAAkB,EAAM,EAAO,EAAa,CAAC,EAAyB,CACtE,QAGJ,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAEH,SAAS,GAAqC,EAAc,CAC1D,IAAK,IAAI,EAAO,IAAkB,CAChC,IAAI,EAAM,EAAK,IACf,IACS,IAAN,GAAoB,IAAP,IAAqB,IAAP,KAC5B,EAAK,MAAQ,QACX,EAAM,EAAK,YACJ,IAAT,OAAkB,EAAM,EAAI,OAAkB,IAAT,OAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,IAAI,EAAQ,EAAI,GACd,EAAc,EAAM,YACtB,EAAQ,EAAM,MACd,GAAI,CACF,GAAI,CAAC,GAAS,GAAa,CAAE,EAAM,CAAE,MAAO,CAAC,OAC/B,CACd,MAAO,CAAC,GAId,GADA,EAAM,EAAK,MACP,EAAK,aAAe,OAAkB,IAAT,KAC9B,EAAI,OAAS,EAAQ,EAAO,MAC1B,CACH,GAAI,IAAS,EAAc,MAC3B,KAAgB,EAAK,UAAd,MAAyB,CAC9B,GAAa,EAAK,SAAd,MAAwB,EAAK,SAAW,EAAc,MAAO,CAAC,EAClE,EAAO,EAAK,OAEd,EAAK,QAAQ,OAAS,EAAK,OAC3B,EAAO,EAAK,SAGhB,MAAO,CAAC,EAEV,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAkB,CAAC,GACnB,GAAkB,CAAC,GACnB,EAAK,gBAAkB,EACvB,EAAK,aAAe,CAAC,EACrB,IAAyB,EAAK,WAAa,GAC3C,EAAuB,EAAK,gBAC5B,IAAK,IAAI,EAAQ,EAAgB,EAAI,GAAS,CAC5C,IAAI,EAAU,GAAK,GAAM,EAAM,CAC7B,EAAO,GAAK,EACd,EAAqB,GAAW,GAChC,GAAS,CAAC,EAEN,IAAN,GACE,GAAwB,EAAM,EAAa,EAAe,CAE9D,SAAS,IAAkB,CACzB,OAAc,EAAmB,EAE7B,CAAC,GADA,GAA8B,EAAG,CAAC,EAAE,CAAE,CAAC,GAG9C,SAAS,IAA2B,CAClC,GAAa,IAAT,KAAyB,CAC3B,GAAU,IAAN,EACF,IAAI,EAAkB,EAAe,YAEpC,EAAkB,EAChB,GAAwB,GAA4B,KACrD,GAAmB,EAAgB,CAClC,GAAkB,KAClB,GAAyB,EACzB,EAAkB,EACvB,KAAgB,IAAT,MACL,GAAsB,EAAgB,UAAW,EAAgB,CAC9D,EAAkB,EAAgB,OACvC,EAAiB,MAGrB,SAAS,GAAkB,EAAM,EAAO,CACtC,IAAI,EAAgB,EAAK,cAClB,IAAP,KACI,EAAK,cAAgB,GAAK,GAAc,EAAc,EAC1D,EAAgB,EAAK,oBACZ,IAAT,OACI,EAAK,oBAAsB,KAAO,GAAe,EACrD,GAAsB,EACtB,IAA0B,CAC1B,EAAqB,EACrB,EAAiB,EAAgB,GAAqB,EAAK,QAAS,KAAK,CACzE,EAAgC,EAChC,EAAgC,EAChC,GAA4B,KAC5B,GAA6C,CAAC,EAC9C,GAAmC,GAA0B,EAAM,EAAM,CACzE,GAA0C,CAAC,EAC3C,GACE,GACA,GACA,GACA,GACA,GACE,EACJ,GAAsC,GACpC,KACF,GAAoD,CAAC,EAC9C,EAAQ,IAAO,GAAS,EAAQ,IACvC,IAAI,EAAoB,EAAK,eAC7B,GAAU,IAAN,EACF,IACE,EAAO,EAAK,cAAe,GAAqB,EAChD,EAAI,GAEJ,CACA,IAAI,EAAU,GAAK,GAAM,EAAkB,CACzC,EAAO,GAAK,EACd,GAAS,EAAK,GACd,GAAqB,CAAC,EAI1B,MAFA,IAAuB,EACvB,IAAiC,CAC1B,EAET,SAAS,GAAY,EAAM,EAAa,CACtC,EAA0B,KAC1B,EAAqB,EAAI,GACzB,IAAgB,IAAqB,IAAgB,IAC/C,EAAc,IAAsB,CACrC,EAAgC,GACjC,IAAgB,IACZ,EAAc,IAAsB,CACrC,EAAgC,GAChC,EACC,IAAgB,GACZ,EAEe,OAAO,GAApB,UADO,GAEQ,OAAO,EAAY,MAAlC,WACA,EACA,EACd,GAA4B,EACnB,IAAT,OACI,GAA+B,EACjC,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,EAEL,SAAS,IAA+B,CACtC,IAAI,EAAU,GAA2B,QACzC,OAAgB,IAAT,KACH,CAAC,GACA,EAAgC,WAC/B,EACS,KAAT,MAGC,EAAgC,YAC7B,GACK,EAAgC,UACvC,IAAY,GACZ,CAAC,EAEX,SAAS,IAAiB,CACxB,IAAI,EAAiB,EAAqB,EAE1C,MADA,GAAqB,EAAI,GACT,IAAT,KAA0B,GAAwB,EAE3D,SAAS,IAAsB,CAC7B,IAAI,EAAsB,EAAqB,EAE/C,MADA,GAAqB,EAAI,GAClB,EAET,SAAS,IAAkC,CACzC,GAA+B,EAC/B,KACI,EAAgC,WAChC,GACS,GAA2B,UAApC,OACD,GAAmC,CAAC,GACtC,EAAO,GAAiC,YACvC,EAAO,GAA4C,YAC1C,IAAT,MACA,GACE,EACA,EACA,GACA,CAAC,EACF,CAEL,SAAS,GAAe,EAAM,EAAO,EAA4B,CAC/D,IAAI,EAAuB,EAC3B,GAAoB,EACpB,IAAI,EAAiB,IAAgB,CACnC,EAAsB,IAAqB,EACzC,IAAuB,GAAQ,IAAkC,KAClE,GAA4B,KAAO,GAAkB,EAAM,EAAM,EACpE,EAAQ,CAAC,EACT,IAAI,EAAa,GACjB,EAAG,EACD,IAAI,CACF,GAAU,IAAN,GAAgD,IAAT,KAAyB,CAClE,IAAI,EAAa,EACf,EAAc,GAChB,OAAQ,EAAR,CACE,IAAK,GACH,IAA0B,CAC1B,EAAa,EACb,MAAM,EACR,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACM,GAA2B,UAApC,OAAgD,EAAQ,CAAC,GACzD,IAAI,EAAS,EAIb,GAHA,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAY,EAAa,EAAO,CAE3D,GACA,GACA,CACA,EAAa,EACb,MAAM,EAER,MACF,QACG,EAAS,EACP,EAAgC,EAChC,GAA4B,KAC7B,GAAuB,EAAM,EAAY,EAAa,EAAO,EAGrE,IAAc,CACd,EAAa,GACb,YACO,EAAiB,CACxB,GAAY,EAAM,EAAgB,OAE/B,GAUP,OATA,GAAS,EAAK,sBACd,GAAwB,GAA4B,KACpD,EAAmB,EACnB,EAAqB,EAAI,EACzB,EAAqB,EAAI,EAChB,IAAT,OACI,EAAqB,KACtB,EAAgC,EACjC,IAAiC,EAC5B,EAET,SAAS,IAAe,CACtB,KAAgB,IAAT,MAA2B,GAAkB,EAAe,CAErE,SAAS,GAAqB,EAAM,EAAO,CACzC,IAAI,EAAuB,EAC3B,GAAoB,EACpB,IAAI,EAAiB,IAAgB,CACnC,EAAsB,IAAqB,CAC7C,IAAuB,GAAQ,IAAkC,GAC3D,GAA4B,KAC7B,GAAqC,IAAK,CAAG,IAC9C,GAAkB,EAAM,EAAM,EAC7B,GAAmC,GAClC,EACA,EACD,CACL,EAAG,EACD,IAAI,CACF,GAAU,IAAN,GAAgD,IAAT,KAAyB,CAClE,EAAQ,EACR,IAAI,EAAc,GAClB,EAAG,OAAQ,EAAR,CACD,IAAK,GACH,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACL,IAAK,GACH,GAAI,GAAmB,EAAY,CAAE,CACnC,EAAgC,EAChC,GAA4B,KAC5B,GAA0B,EAAM,CAChC,MAEF,EAAQ,UAAY,CACX,IAAN,GACO,IAAN,GACA,IAAuB,IACtB,EAAgC,GACnC,GAAsB,EAAK,EAE7B,EAAY,KAAK,EAAO,EAAM,CAC9B,MAAM,EACR,IAAK,GACH,EAAgC,EAChC,MAAM,EACR,IAAK,GACH,EAAgC,EAChC,MAAM,EACR,IAAK,GACH,GAAmB,EAAY,EACzB,EAAgC,EACjC,GAA4B,KAC7B,GAA0B,EAAM,GAC9B,EAAgC,EACjC,GAA4B,KAC7B,GAAuB,EAAM,EAAO,EAAa,EAAE,EACvD,MACF,IAAK,GACH,IAAI,EAAW,KACf,OAAQ,EAAe,IAAvB,CACE,IAAK,IACH,EAAW,EAAe,cAC5B,IAAK,GACL,IAAK,IACH,IAAI,EAAY,EAChB,GACE,EACI,GAAgB,EAAS,CACzB,EAAU,UAAU,SACxB,CACA,EAAgC,EAChC,GAA4B,KAC5B,IAAI,EAAU,EAAU,QACxB,GAAa,IAAT,KAAkB,EAAiB,MAClC,CACH,IAAI,EAAc,EAAU,OACnB,IAAT,KAGK,EAAiB,MAFhB,EAAiB,EACnB,GAAmB,EAAY,EAGrC,MAAM,GAGZ,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACH,EAAgC,EAChC,GAA4B,KAC5B,GAAuB,EAAM,EAAO,EAAa,EAAE,CACnD,MACF,IAAK,GACH,IAA0B,CAC1B,GAA+B,EAC/B,MAAM,EACR,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,EAG9C,IAA+B,CAC/B,YACO,EAAiB,CACxB,GAAY,EAAM,EAAgB,OAE/B,GASP,MARA,IAAwB,GAA4B,KACpD,EAAqB,EAAI,EACzB,EAAqB,EAAI,EACzB,EAAmB,EACN,IAAT,MACJ,EAAqB,KACrB,EAAgC,EAChC,IAAiC,CAC1B,IAJ6B,EAMtC,SAAS,IAAgC,CACvC,KAAgB,IAAT,MAA2B,CAAC,IAAa,EAC9C,GAAkB,EAAe,CAErC,SAAS,GAAkB,EAAY,CACrC,IAAI,EAAO,GAAU,EAAW,UAAW,EAAY,GAAqB,CAC5E,EAAW,cAAgB,EAAW,aAC7B,IAAT,KAAgB,GAAmB,EAAW,CAAI,EAAiB,EAErE,SAAS,GAA0B,EAAY,CAC7C,IAAI,EAAO,EACP,EAAU,EAAK,UACnB,OAAQ,EAAK,IAAb,CACE,IAAK,IACL,IAAK,GACH,EAAO,GACL,EACA,EACA,EAAK,aACL,EAAK,KACL,IAAK,GACL,EACD,CACD,MACF,IAAK,IACH,EAAO,GACL,EACA,EACA,EAAK,aACL,EAAK,KAAK,OACV,EAAK,IACL,EACD,CACD,MACF,IAAK,GACH,GAAmB,EAAK,CAC1B,QACE,GAAsB,EAAS,EAAK,CACjC,EAAO,EACN,GAAoB,EAAM,GAAqB,CAChD,EAAO,GAAU,EAAS,EAAM,GAAqB,CAE5D,EAAW,cAAgB,EAAW,aAC7B,IAAT,KAAgB,GAAmB,EAAW,CAAI,EAAiB,EAErE,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAwB,GAA4B,KACpD,GAAmB,EAAW,CAC9B,GAAkB,KAClB,GAAyB,EACzB,IAAI,EAAc,EAAW,OAC7B,GAAI,CACF,GACE,GACE,EACA,EACA,EACA,EACA,EACD,CACD,CACA,GAA+B,EAC/B,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,CACD,EAAiB,KACjB,cAEK,EAAO,CACd,GAAa,IAAT,KAAsB,KAAQ,GAAiB,EAAc,EACjE,GAA+B,EAC/B,GACE,EACA,GAA2B,EAAa,EAAK,QAAQ,CACtD,CACD,EAAiB,KACjB,OAEE,EAAW,MAAQ,OACjB,GAAqB,IAAN,EAAuB,EAAO,CAAC,EAEhD,IACO,EAAgC,UAEvC,EAAO,CAAC,GAEN,GAA6C,EAAO,CAAC,GACjD,IAAN,GACQ,IAAN,GACM,IAAN,GACM,IAAN,KAED,EAAkB,GAA2B,QACnC,IAAT,MACS,EAAgB,MAAvB,KACC,EAAgB,OAAS,SAChC,GAAiB,EAAY,EAAK,EAC7B,GAAmB,EAAW,CAEvC,SAAS,GAAmB,EAAY,CACtC,IAAI,EAAgB,EACpB,EAAG,CACD,GAAW,EAAc,MAAQ,MAAQ,CACvC,GACE,EACA,GACD,CACD,OAEF,EAAa,EAAc,OAC3B,IAAI,EAAO,GACT,EAAc,UACd,EACA,GACD,CACD,GAAa,IAAT,KAAe,CACjB,EAAiB,EACjB,OAGF,GADA,EAAgB,EAAc,QACjB,IAAT,KAAwB,CAC1B,EAAiB,EACjB,OAEF,EAAiB,EAAgB,QACjB,IAAT,MACH,KAAN,IAAuC,GAA+B,GAExE,SAAS,GAAiB,EAAY,EAAc,CAClD,EAAG,CACD,IAAI,EAAO,GAAW,EAAW,UAAW,EAAW,CACvD,GAAa,IAAT,KAAe,CACjB,EAAK,OAAS,MACd,EAAiB,EACjB,OAKF,GAHA,EAAO,EAAW,OACT,IAAT,OACI,EAAK,OAAS,MAAS,EAAK,aAAe,EAAK,EAAK,UAAY,MAEnE,CAAC,IACC,EAAa,EAAW,QAAmB,IAAT,MACpC,CACA,EAAiB,EACjB,OAEF,EAAiB,EAAa,QACd,IAAT,MACT,GAA+B,EAC/B,EAAiB,KAEnB,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,EAAK,oBAAsB,KAC3B,GAAG,IAAqB,OACX,KAAN,GACP,GAAW,EAAmB,EAAI,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,GAAa,IAAT,KAAuB,CACzB,GAAI,IAAiB,EAAK,QAAS,MAAM,MAAM,EAAuB,IAAI,CAAC,CA8B3E,GA7BA,EAA8B,EAAa,MAAQ,EAAa,WAChE,GAA+B,GAC/B,GACE,EACA,EACA,EACA,EACA,EACA,EACD,CACD,IAAS,IACL,EAAiB,EAAqB,KACvC,EAAgC,GACnC,GAAsB,EACtB,GAAqB,EACrB,GAAsB,EACtB,GAA+B,EAC/B,GAA4B,EAC5B,GAA2B,EACpB,EAAa,aAAe,OAC5B,EAAa,MAAQ,OACtB,EAAK,aAAe,KACrB,EAAK,iBAAmB,EACzB,GAAmB,GAAkB,UAAY,CAE/C,OADA,IAAqB,CACd,MACP,GACA,EAAK,aAAe,KAAQ,EAAK,iBAAmB,GAC1D,GAA2B,EAAa,MAAQ,QAA5B,EACT,EAAa,aAAe,OAAU,EAAmB,CAClE,EAAoB,EAAqB,EACzC,EAAqB,EAAI,KACzB,EAAc,EAAwB,EACtC,EAAwB,EAAI,EAC5B,EAAc,EACd,GAAoB,EACpB,GAAI,CACF,GAA4B,EAAM,EAAc,EAAM,QAC9C,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,GAAuB,EACvB,IAAsB,CACtB,IAAoB,CACpB,IAAkB,EAGtB,SAAS,IAAuB,CAC9B,GAAU,KAAN,EAA4B,CAC9B,GAAuB,EACvB,IAAI,EAAO,GACT,EAAe,GACf,GAA+B,EAAa,MAAQ,QAA5B,EAC1B,GAAW,EAAa,aAAe,OAAU,EAAuB,CACtE,EAAwB,EAAqB,EAC7C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,EAAwB,EAAI,EAC5B,IAAI,EAAuB,EAC3B,GAAoB,EACpB,GAAI,CACF,GAA6B,EAAc,EAAK,CAChD,IAAI,EAA4B,GAC9B,EAAiB,GAAqB,EAAK,cAAc,CACzD,EAAmB,EAA0B,YAC7C,EAAsB,EAA0B,eAClD,GACE,IAAmB,GACnB,GACA,EAAiB,eACjB,GACE,EAAiB,cAAc,gBAC/B,EACD,CACD,CACA,GACW,IAAT,MACA,GAAyB,EAAiB,CAC1C,CACA,IAAI,EAAQ,EAAoB,MAC9B,EAAM,EAAoB,IAE5B,GADW,IAAX,IAAK,KAAc,EAAM,GACrB,mBAAoB,EACrB,EAAiB,eAAiB,EAChC,EAAiB,aAAe,KAAK,IACpC,EACA,EAAiB,MAAM,OACxB,KACA,CACH,IAAI,EAAM,EAAiB,eAAiB,SAC1C,EAAO,GAAO,EAAI,aAAgB,OACpC,GAAI,EAAI,aAAc,CACpB,IAAI,EAAY,EAAI,cAAc,CAChC,EAAS,EAAiB,YAAY,OACtC,EAAiB,KAAK,IAAI,EAAoB,MAAO,EAAO,CAC5D,EACa,EAAoB,MAA/B,IAAK,GACD,EACA,KAAK,IAAI,EAAoB,IAAK,EAAO,CACjD,CAAC,EAAU,QACT,EAAiB,IACf,EAAiB,EAClB,EAAe,EACf,EAAiB,GACpB,IAAI,EAAc,GACd,EACA,EACD,CACD,EAAY,GACV,EACA,EACD,CACH,GACE,GACA,IACO,EAAU,aAAhB,GACC,EAAU,aAAe,EAAY,MACrC,EAAU,eAAiB,EAAY,QACvC,EAAU,YAAc,EAAU,MAClC,EAAU,cAAgB,EAAU,QACtC,CACA,IAAI,EAAQ,EAAI,aAAa,CAC7B,EAAM,SAAS,EAAY,KAAM,EAAY,OAAO,CACpD,EAAU,iBAAiB,CAC3B,EAAiB,GACZ,EAAU,SAAS,EAAM,CAC1B,EAAU,OAAO,EAAU,KAAM,EAAU,OAAO,GACjD,EAAM,OAAO,EAAU,KAAM,EAAU,OAAO,CAC/C,EAAU,SAAS,EAAM,KAMrC,IADA,EAAM,EAAE,CAEN,EAAY,EACX,EAAY,EAAU,YAGjB,EAAU,WAAhB,GACE,EAAI,KAAK,CACP,QAAS,EACT,KAAM,EAAU,WAChB,IAAK,EAAU,UAChB,CAAC,CAGN,IAFe,OAAO,EAAiB,OAAvC,YACE,EAAiB,OAAO,CAExB,EAAmB,EACnB,EAAmB,EAAI,OACvB,IACA,CACA,IAAI,EAAO,EAAI,GACf,EAAK,QAAQ,WAAa,EAAK,KAC/B,EAAK,QAAQ,UAAY,EAAK,KAGlC,GAAW,CAAC,CAAC,GACb,GAAuB,GAAgB,YAC/B,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,EAAK,QAAU,EACf,GAAuB,GAG3B,SAAS,IAAqB,CAC5B,GAAU,KAAN,EAA4B,CAC9B,GAAuB,EACvB,IAAI,EAAO,GACT,EAAe,GACf,GAA6B,EAAa,MAAQ,OAA5B,EACxB,GAAW,EAAa,aAAe,MAAS,EAAqB,CACnE,EAAsB,EAAqB,EAC3C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,EAAwB,EAAI,EAC5B,IAAI,EAAuB,EAC3B,GAAoB,EACpB,GAAI,CACF,GAA0B,EAAM,EAAa,UAAW,EAAa,QAC7D,CACP,EAAmB,EACjB,EAAwB,EAAI,EAC5B,EAAqB,EAAI,GAGhC,GAAuB,GAG3B,SAAS,IAAmB,CAC1B,GAAU,KAAN,GAAoC,KAAN,EAA4B,CAC5D,GAAuB,EACvB,IAAc,CACd,IAAI,EAAO,GACT,EAAe,GACf,EAAQ,GACR,EAAoB,GACf,EAAa,aAAe,OAC5B,EAAa,MAAQ,MACvB,GAAuB,GACtB,GAAuB,EACxB,GAAsB,GAAqB,KAC5C,GAAuB,EAAM,EAAK,aAAa,EACnD,IAAI,EAAiB,EAAK,aAI1B,GAHM,IAAN,IAAyB,GAAyC,MAClE,GAAqB,EAAM,CAC3B,EAAe,EAAa,UACxB,IAA+B,OAAO,GAAa,mBAAnC,WAClB,GAAI,CACF,GAAa,kBACX,GACA,EACA,IAAK,IACI,EAAa,QAAQ,MAAQ,MAAtC,IACD,MACW,EAChB,GAAa,IAAT,KAA4B,CAC9B,EAAe,EAAqB,EACpC,EAAiB,EAAwB,EACzC,EAAwB,EAAI,EAC5B,EAAqB,EAAI,KACzB,GAAI,CACF,IACE,IAAI,EAAqB,EAAK,mBAAoB,EAAI,EACtD,EAAI,EAAkB,OACtB,IACA,CACA,IAAI,EAAmB,EAAkB,GACzC,EAAmB,EAAiB,MAAO,CACzC,eAAgB,EAAiB,MAClC,CAAC,SAEI,CACP,EAAqB,EAAI,EACvB,EAAwB,EAAI,GAG5B,GAAsB,GAAM,IAAqB,CACxD,GAAsB,EAAK,CAC3B,EAAiB,EAAK,aACf,EAAQ,QAAkB,EAAiB,GAC9C,IAAS,GACP,MACE,GAAoB,EAAK,GAAwB,GACpD,GAAoB,EACzB,GAA8B,EAAG,CAAC,EAAE,EAGxC,SAAS,GAAuB,EAAM,EAAgB,EAC7C,EAAK,kBAAoB,KAAhC,IACI,EAAiB,EAAK,YAChB,GAAR,OACI,EAAK,YAAc,KAAO,GAAa,EAAe,GAE9D,SAAS,IAAsB,CAI7B,OAHA,IAAsB,CACtB,IAAoB,CACpB,IAAkB,CACX,IAAqB,CAE9B,SAAS,IAAsB,CAC7B,GAAU,KAAN,EAA4B,MAAO,CAAC,EACxC,IAAI,EAAO,GACT,EAAiB,GACnB,GAA+B,EAC/B,IAAI,EAAiB,GAAqB,GAAoB,CAC5D,EAAiB,EAAqB,EACtC,EAAmB,EAAwB,EAC7C,GAAI,CACF,EAAwB,EAAI,GAAK,EAAiB,GAAK,EACvD,EAAqB,EAAI,KACzB,EAAiB,GACjB,GAA4B,KAC5B,IAAI,EAAgB,GAClB,EAAQ,GAIV,GAHA,GAAuB,EACvB,GAAsB,GAAqB,KAC3C,GAAsB,EACX,EAAmB,EAAI,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,IAAI,EAAuB,EAW3B,GAVA,GAAoB,EACpB,GAA4B,EAAc,QAAQ,CAClD,GACE,EACA,EAAc,QACd,EACA,EACD,CACD,EAAmB,EACnB,GAA8B,EAAG,CAAC,EAAE,CAElC,IACe,OAAO,GAAa,uBAAnC,WAEA,GAAI,CACF,GAAa,sBAAsB,GAAY,EAAc,MACjD,EAChB,MAAO,CAAC,SACA,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,EAC1B,GAAuB,EAAM,EAAe,EAGlD,SAAS,GAA8B,EAAW,EAAa,EAAO,CACpE,EAAc,GAA2B,EAAO,EAAY,CAC5D,EAAc,GAAsB,EAAU,UAAW,EAAa,EAAE,CACxE,EAAY,GAAc,EAAW,EAAa,EAAE,CAC3C,IAAT,OACG,GAAkB,EAAW,EAAE,CAAE,GAAsB,EAAU,EAEtE,SAAS,EAAwB,EAAa,EAAwB,EAAO,CAC3E,GAAU,EAAY,MAAlB,EACF,GAA8B,EAAa,EAAa,EAAM,MAE9D,KAAgB,IAAT,MAAmC,CACxC,GAAU,EAAuB,MAA7B,EAAkC,CACpC,GACE,EACA,EACA,EACD,CACD,cACe,EAAuB,MAA7B,EAAkC,CAC3C,IAAI,EAAW,EAAuB,UACtC,GAEI,OAAO,EAAuB,KAAK,0BADrC,YAEgB,OAAO,EAAS,mBAA/B,aACW,KAAT,MACC,CAAC,GAAuC,IAAI,EAAS,EACzD,CACA,EAAc,GAA2B,EAAO,EAAY,CAC5D,EAAQ,GAAuB,EAAE,CACjC,EAAW,GAAc,EAAwB,EAAO,EAAE,CACjD,IAAT,OACG,GACC,EACA,EACA,EACA,EACD,CACD,GAAkB,EAAU,EAAE,CAC9B,GAAsB,EAAS,EACjC,OAGJ,EAAyB,EAAuB,QAGtD,SAAS,GAAmB,EAAM,EAAU,EAAO,CACjD,IAAI,EAAY,EAAK,UACrB,GAAa,IAAT,KAAoB,CACtB,EAAY,EAAK,UAAY,IAAI,GACjC,IAAI,EAAY,IAAI,IACpB,EAAU,IAAI,EAAU,EAAU,MAEjC,EAAY,EAAU,IAAI,EAAS,CACvB,IAAX,IAAK,KACD,EAAY,IAAI,IAAQ,EAAU,IAAI,EAAU,EAAU,EAClE,EAAU,IAAI,EAAM,GAChB,GAA0C,CAAC,EAC7C,EAAU,IAAI,EAAM,CACnB,EAAO,GAAkB,KAAK,KAAM,EAAM,EAAU,EAAM,CAC3D,EAAS,KAAK,EAAM,EAAK,EAE7B,SAAS,GAAkB,EAAM,EAAU,EAAa,CACtD,IAAI,EAAY,EAAK,UACZ,IAAT,MAAsB,EAAU,OAAO,EAAS,CAChD,EAAK,aAAe,EAAK,eAAiB,EAC1C,EAAK,WAAa,CAAC,EACnB,IAAuB,IACpB,EAAgC,KAAiB,IAC3C,KAAN,GACM,KAAN,IACE,EAAgC,YAC/B,GACF,IAAM,IAAK,CAAG,GACZ,EAAO,EAAmB,IAAM,GAAkB,EAAM,EAAE,CACzD,IAAiC,EACtC,KAAsC,IACnC,GAAoC,IACzC,GAAsB,EAAK,CAE7B,SAAS,GAAsB,EAAe,EAAW,CACjD,IAAN,IAAoB,EAAY,IAAoB,EACpD,EAAgB,GAA+B,EAAe,EAAU,CAC/D,IAAT,OACG,GAAkB,EAAe,EAAU,CAC5C,GAAsB,EAAc,EAExC,SAAS,GAAgC,EAAe,CACtD,IAAI,EAAgB,EAAc,cAChC,EAAY,EACL,IAAT,OAA2B,EAAY,EAAc,WACrD,GAAsB,EAAe,EAAU,CAEjD,SAAS,GAAqB,EAAe,EAAU,CACrD,IAAI,EAAY,EAChB,OAAQ,EAAc,IAAtB,CACE,IAAK,IACL,IAAK,IACH,IAAI,EAAa,EAAc,UAC3B,EAAgB,EAAc,cACzB,IAAT,OAA2B,EAAY,EAAc,WACrD,MACF,IAAK,IACH,EAAa,EAAc,UAC3B,MACF,IAAK,IACH,EAAa,EAAc,UAAU,YACrC,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAEnC,IAAT,MAAuB,EAAW,OAAO,EAAS,CAClD,GAAsB,EAAe,EAAU,CAEjD,SAAS,GAAmB,EAAe,EAAU,CACnD,OAAO,GAAmB,EAAe,EAAS,CAEpD,IAAI,GAAqB,KACvB,GAAoB,KACpB,GAAuB,CAAC,EACxB,GAA2B,CAAC,EAC5B,GAAiB,CAAC,EAClB,GAA6B,EAC/B,SAAS,GAAsB,EAAM,CACnC,IAAS,IACE,EAAK,OAAd,OACU,KAAT,KACI,GAAqB,GAAoB,EACzC,GAAoB,GAAkB,KAAO,GACpD,GAA2B,CAAC,EAC5B,KACI,GAAuB,CAAC,EAAI,IAAmC,EAErE,SAAS,GAA8B,EAAqB,EAAY,CACtE,GAAI,CAAC,IAAkB,GAA0B,CAC/C,GAAiB,CAAC,EAClB,EAEE,KAAK,IADD,EAAqB,CAAC,EACjB,EAAW,GAA6B,IAAT,MAAqB,CAC3D,GAAI,CAAC,EACH,GAAU,IAAN,EAA2B,CAC7B,IAAI,EAAe,EAAS,aAC5B,GAAU,IAAN,EAAoB,IAAI,EAA2B,MAClD,CACH,IAAI,EAAiB,EAAS,eAC5B,EAAc,EAAS,YACzB,GACG,GAAM,GAAK,GAAM,GAAK,EAAoB,CAAG,GAAM,EACtD,GACE,EAAe,EAAE,EAAiB,CAAC,GACrC,EACE,EAA2B,UACtB,EAA2B,UAAa,EACzC,EACE,EAA2B,EAC3B,EAEJ,IAAN,IACI,EAAqB,CAAC,EACxB,GAAsB,EAAU,EAAyB,OAE1D,EAA2B,EACzB,EAA2B,GAC1B,EACA,IAAa,EAAqB,EAA2B,EACpD,EAAS,sBAAlB,MACS,EAAS,gBAAhB,GACH,CACD,EAAO,EAA2B,IAChC,GAA0B,EAAU,EAAyB,GAC3D,EAAqB,CAAC,EACxB,GAAsB,EAAU,EAAyB,EACjE,EAAW,EAAS,WAEf,GACT,GAAiB,CAAC,GAGtB,SAAS,IAAqC,CAC5C,IAAgC,CAElC,SAAS,IAAiC,CACxC,GAA2B,GAAuB,CAAC,EACnD,IAAI,EAAsB,EACpB,KAAN,GACE,IAA8B,GAC7B,EAAsB,IACzB,IACE,IAAI,EAAc,IAAK,CAAE,EAAO,KAAM,EAAO,GACpC,IAAT,MAEA,CACA,IAAI,EAAO,EAAK,KACd,EAAY,GAAmC,EAAM,EAAY,CACzD,IAAN,GACD,EAAK,KAAO,KACF,IAAT,KAAiB,GAAqB,EAAS,EAAK,KAAO,EAClD,IAAT,OAAkB,GAAoB,KAEtC,EAAO,GAAa,IAAN,GAAoC,EAAY,KAEhE,GAA2B,CAAC,IAC9B,EAAO,EAEF,KAAN,GAAoC,KAAN,GAC7B,GAA8B,EAAqB,CAAC,EAAE,CAClD,KAAN,IAAqC,GAA6B,GAEpE,SAAS,GAAmC,EAAM,EAAa,CAC7D,IACE,IAAI,EAAiB,EAAK,eACxB,EAAc,EAAK,YACnB,EAAkB,EAAK,gBACvB,EAAQ,EAAK,aAAe,UAC9B,EAAI,GAEJ,CACA,IAAI,EAAU,GAAK,GAAM,EAAM,CAC7B,EAAO,GAAK,EACZ,EAAiB,EAAgB,GACxB,IAAP,KACS,EAAO,KAAd,IAAwC,EAAO,KAAd,KACnC,EAAgB,GAAW,GAAsB,EAAM,EAAY,EAChE,GAAkB,IAAgB,EAAK,cAAgB,GAC9D,GAAS,CAAC,EAUZ,GARA,EAAc,EACd,EAAiB,EACjB,EAAiB,GACf,EACA,IAAS,EAAc,EAAiB,EAC/B,EAAK,sBAAd,MAA4C,EAAK,gBAAZ,GACtC,CACD,EAAc,EAAK,aAEX,IAAN,GACC,IAAS,IACD,IAAN,GACO,IAAN,IACK,EAAK,sBAAd,KAEA,OACW,IAAT,MACW,IAAT,MACA,GAAiB,EAAY,CAC9B,EAAK,aAAe,KACpB,EAAK,iBAAmB,EAE7B,GACE,EAAO,EAAiB,IACxB,GAA0B,EAAM,EAAe,CAC/C,CAEA,GADA,EAAc,EAAiB,CAAC,EAC5B,IAAgB,EAAK,iBAAkB,OAAO,EAElD,OADS,IAAT,MAAwB,GAAiB,EAAY,CAC7C,GAAqB,EAAe,CAA5C,CACE,IAAK,GACL,IAAK,GACH,EAAiB,GACjB,MACF,IAAK,IACH,EAAiB,GACjB,MACF,IAAK,WACH,EAAiB,GACjB,MACF,QACE,EAAiB,GAMrB,MAJA,GAAc,GAAkC,KAAK,KAAM,EAAK,CAChE,EAAiB,GAAmB,EAAgB,EAAY,CAChE,EAAK,iBAAmB,EACxB,EAAK,aAAe,EACb,EAKT,OAHS,IAAT,MAAiC,IAAT,MAAwB,GAAiB,EAAY,CAC7E,EAAK,iBAAmB,EACxB,EAAK,aAAe,KACb,EAET,SAAS,GAAkC,EAAM,EAAY,CAC3D,GAAU,KAAN,GAAoC,KAAN,EAChC,MAAQ,GAAK,aAAe,KAAQ,EAAK,iBAAmB,EAAI,KAClE,IAAI,EAAuB,EAAK,aAChC,GAAI,IAAqB,EAAI,EAAK,eAAiB,EACjD,OAAO,KACT,IAAI,EAAyC,EAS7C,MARA,GAAyC,GACvC,EACA,IAAS,EAAqB,EAAyC,EAC9D,EAAK,sBAAd,MAA4C,EAAK,gBAAZ,GACtC,CACS,IAAN,EAAqD,MACzD,GAAkB,EAAM,EAAwC,EAAW,CAC3E,GAAmC,EAAM,IAAK,CAAC,CAChC,EAAK,cAAb,MAA6B,EAAK,eAAiB,EACtD,GAAkC,KAAK,KAAM,EAAK,CAClD,MAEN,SAAS,GAAsB,EAAM,EAAO,CAC1C,GAAI,IAAqB,CAAE,OAAO,KAClC,GAAkB,EAAM,EAAO,CAAC,EAAE,CAEpC,SAAS,IAAoC,CAC3C,GAAkB,UAAY,CACrB,EAAmB,EACtB,GACE,GACA,GACD,CACD,IAAgC,EACpC,CAEJ,SAAS,IAAwB,CAC/B,GAAU,KAAN,EAAkC,CACpC,IAAI,EAAkB,GAChB,IAAN,IACI,EAAkB,GACnB,KAA6B,EAC9B,EAAO,GAA2B,UAC/B,GAA2B,MAChC,GAA6B,EAE/B,OAAO,GAET,SAAS,GAAqB,EAAY,CACxC,OAAe,GAAR,MACQ,OAAO,GAApB,UACc,OAAO,GAArB,UACE,KACe,OAAO,GAAtB,WACE,EACA,GAAY,GAAK,EAAW,CAEpC,SAAS,GAA4B,EAAM,EAAW,CACpD,IAAI,EAAO,EAAU,cAAc,cAAc,QAAQ,CAOzD,MANA,GAAK,KAAO,EAAU,KACtB,EAAK,MAAQ,EAAU,MACvB,EAAK,IAAM,EAAK,aAAa,OAAQ,EAAK,GAAG,CAC7C,EAAU,WAAW,aAAa,EAAM,EAAU,CAClD,EAAO,IAAI,SAAS,EAAK,CACzB,EAAK,WAAW,YAAY,EAAK,CAC1B,EAET,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,GACe,IAAb,UACA,GACA,EAAgB,YAAc,EAC9B,CACA,IAAI,EAAS,IACR,EAAkB,KAAqB,MAAM,OAC/C,CACD,EAAY,EAAY,UAC1B,IACI,GAAgB,EAAe,EAAU,KAAqB,MAC5D,GAAqB,EAAa,WAAW,CAC7C,EAAU,aAAa,aAAa,CAC/B,IAAT,OAA2B,EAAS,EAAgB,EAAY,OAClE,IAAI,EAAQ,IAAI,GACd,SACA,SACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CACV,QACP,UAAW,CACT,CACE,SAAU,KACV,SAAU,UAAY,CACpB,GAAI,EAAY,qBACJ,KAAN,EAAkC,CACpC,IAAI,EAAW,EACX,GAA4B,EAAmB,EAAU,CACzD,IAAI,SAAS,EAAkB,CACnC,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAkB,OAClB,SACT,CACD,KACA,EACD,OAGY,OAAO,GAAtB,aACG,EAAM,gBAAgB,CACtB,EAAW,EACR,GAA4B,EAAmB,EAAU,CACzD,IAAI,SAAS,EAAkB,CACnC,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAkB,OAClB,SACT,CACD,EACA,EACD,GAEP,cAAe,EAChB,CACF,CACF,CAAC,EAGN,IACE,IAAI,GAAuB,EAC3B,GAAuB,GAAwB,OAC/C,KACA,CACA,IAAI,GACA,GAAwB,IAM5B,GAJI,GAA6B,aAKA,CAC/B,MAJE,GAA6B,GAAG,aAAa,CAC7C,GAA6B,MAAM,EAAE,EAIxC,CAEH,GAAoB,GAAe,iBAAiB,CACpD,GAAoB,GAAqB,uBAAuB,CAChE,GAAoB,GAAiB,mBAAmB,CACxD,GAAoB,WAAY,gBAAgB,CAChD,GAAoB,UAAW,UAAU,CACzC,GAAoB,WAAY,SAAS,CACzC,GAAoB,GAAgB,kBAAkB,CACtD,GAAoB,GAAkB,oBAAoB,CAC1D,GAAoB,GAAmB,qBAAqB,CAC5D,GAAoB,GAAgB,kBAAkB,CACtD,GAAoB,eAAgB,CAAC,WAAY,YAAY,CAAC,CAC9D,GAAoB,eAAgB,CAAC,WAAY,YAAY,CAAC,CAC9D,GAAoB,iBAAkB,CAAC,aAAc,cAAc,CAAC,CACpE,GAAoB,iBAAkB,CAAC,aAAc,cAAc,CAAC,CACpE,GACE,WACA,oEAAoE,MAAM,IAAI,CAC/E,CACD,GACE,WACA,uFAAuF,MACrF,IACD,CACF,CACD,GAAsB,gBAAiB,CACrC,iBACA,WACA,YACA,QACD,CAAC,CACF,GACE,mBACA,2DAA2D,MAAM,IAAI,CACtE,CACD,GACE,qBACA,6DAA6D,MAAM,IAAI,CACxE,CACD,GACE,sBACA,8DAA8D,MAAM,IAAI,CACzE,CACD,IAAI,GACA,6NAA6N,MAC3N,IACD,CACH,GAAqB,IAAI,IACvB,iEACG,MAAM,IAAI,CACV,OAAO,GAAgB,CAC3B,CACH,SAAS,GAAqB,EAAe,EAAkB,CAC7D,GAA0B,EAAmB,IAA1B,EACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC7C,IAAI,EAAmB,EAAc,GACnC,EAAQ,EAAiB,MAC3B,EAAmB,EAAiB,UACpC,EAAG,CACD,IAAI,EAAmB,IAAK,GAC5B,GAAI,EACF,IACE,IAAI,EAAa,EAAiB,OAAS,EAC3C,GAAK,EACL,IACA,CACA,IAAI,EAAuB,EAAiB,GAC1C,EAAW,EAAqB,SAChC,EAAgB,EAAqB,cAEvC,GADA,EAAuB,EAAqB,SACxC,IAAa,GAAoB,EAAM,sBAAsB,CAC/D,MAAM,EACR,EAAmB,EACnB,EAAM,cAAgB,EACtB,GAAI,CACF,EAAiB,EAAM,OAChB,EAAO,CACd,GAAkB,EAAM,CAE1B,EAAM,cAAgB,KACtB,EAAmB,OAGrB,IACE,EAAa,EACb,EAAa,EAAiB,OAC9B,IACA,CAKA,GAJA,EAAuB,EAAiB,GACxC,EAAW,EAAqB,SAChC,EAAgB,EAAqB,cACrC,EAAuB,EAAqB,SACxC,IAAa,GAAoB,EAAM,sBAAsB,CAC/D,MAAM,EACR,EAAmB,EACnB,EAAM,cAAgB,EACtB,GAAI,CACF,EAAiB,EAAM,OAChB,EAAO,CACd,GAAkB,EAAM,CAE1B,EAAM,cAAgB,KACtB,EAAmB,KAK7B,SAAS,EAA0B,EAAc,EAAe,CAC9D,IAAI,EAA2B,EAAc,IAClC,IAAX,IAAK,KACF,EAA2B,EAAc,IACxC,IAAI,KACR,IAAI,EAAiB,EAAe,WACpC,EAAyB,IAAI,EAAe,GACzC,GAAwB,EAAe,EAAc,EAAG,CAAC,EAAE,CAC5D,EAAyB,IAAI,EAAe,EAEhD,SAAS,GAAoB,EAAc,EAAwB,EAAQ,CACzE,IAAI,EAAmB,EACvB,IAA2B,GAAoB,GAC/C,GACE,EACA,EACA,EACA,EACD,CAEH,IAAI,GAAkB,kBAAoB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAC7E,SAAS,GAA2B,EAAsB,CACxD,GAAI,CAAC,EAAqB,IAAkB,CAC1C,EAAqB,IAAmB,CAAC,EACzC,GAAgB,QAAQ,SAAU,EAAc,CACxB,IAAtB,oBACG,GAAmB,IAAI,EAAa,EACnC,GAAoB,EAAc,CAAC,EAAG,EAAqB,CAC7D,GAAoB,EAAc,CAAC,EAAG,EAAqB,GAC7D,CACF,IAAI,EACI,EAAqB,WAA3B,EACI,EACA,EAAqB,cAClB,IAAT,MACE,EAAc,MACZ,EAAc,IAAmB,CAAC,EACpC,GAAoB,kBAAmB,CAAC,EAAG,EAAc,GAG/D,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,OAAQ,GAAiB,EAAa,CAAtC,CACE,IAAK,GACH,IAAI,EAAkB,GACtB,MACF,IAAK,GACH,EAAkB,GAClB,MACF,QACE,EAAkB,GAEtB,EAAmB,EAAgB,KACjC,KACA,EACA,EACA,EACD,CACD,EAAkB,IAAK,GACvB,CAAC,IACmB,IAAjB,cACiB,IAAhB,aACY,IAAZ,UACD,EAAkB,CAAC,GACtB,EACe,IAAX,IAAK,GAKH,EAAgB,iBAAiB,EAAc,EAAkB,CAAC,EAAE,CAJpE,EAAgB,iBAAiB,EAAc,EAAkB,CAC/D,QAAS,CAAC,EACV,QAAS,EACV,CAAC,CAEO,IAAX,IAAK,GAIH,EAAgB,iBAAiB,EAAc,EAAkB,CAAC,EAAE,CAHpE,EAAgB,iBAAiB,EAAc,EAAkB,CAC/D,QAAS,EACV,CAAC,CAGV,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,IAAI,EAAe,EACnB,GACE,EAAO,EAAmB,IAC1B,EAAO,EAAmB,IACjB,IAAT,KAEA,EAAG,OAAS,CACV,GAAa,IAAT,KAA8B,OAClC,IAAI,EAAU,EAAoB,IAClC,GAAU,IAAN,GAAuB,IAAN,EAAe,CAClC,IAAI,EAAY,EAAoB,UAAU,cAC9C,GAAI,IAAc,EAAiB,MACnC,GAAU,IAAN,EACF,IAAK,EAAU,EAAoB,OAAiB,IAAT,MAAoB,CAC7D,IAAI,EAAW,EAAQ,IACvB,IACS,IAAN,GAAwB,IAAN,IACnB,EAAQ,UAAU,gBAAkB,EAEpC,OACF,EAAU,EAAQ,OAEtB,KAAgB,IAAT,MAAsB,CAE3B,GADA,EAAU,GAA2B,EAAU,CAClC,IAAT,KAAkB,OAEtB,GADA,EAAW,EAAQ,IAEX,IAAN,GACM,IAAN,GACO,IAAP,IACO,IAAP,GACA,CACA,EAAsB,EAAe,EACrC,SAAS,EAEX,EAAY,EAAU,YAG1B,EAAsB,EAAoB,OAE9C,GAAiB,UAAY,CAC3B,IAAI,EAAa,EACf,EAAoB,GAAe,EAAY,CAC/C,EAAgB,EAAE,CACpB,EAAG,CACD,IAAI,EAAY,GAA2B,IAAI,EAAa,CAC5D,GAAe,IAAX,IAAK,GAAiB,CACxB,IAAI,EAAqB,GACvB,EAAiB,EACnB,OAAQ,EAAR,CACE,IAAK,WACH,GAAU,GAAiB,EAAY,GAAnC,EAAqC,MAAM,EACjD,IAAK,UACL,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,UACH,EAAiB,QACjB,EAAqB,GACrB,MACF,IAAK,WACH,EAAiB,OACjB,EAAqB,GACrB,MACF,IAAK,aACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,QACH,GAAU,EAAY,SAAlB,EAA0B,MAAM,EACtC,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,cACH,EAAqB,GACrB,MACF,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,OACH,EAAqB,GACrB,MACF,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,aACH,EAAqB,GACrB,MACF,KAAK,GACL,KAAK,GACL,KAAK,GACH,EAAqB,GACrB,MACF,KAAK,GACH,EAAqB,GACrB,MACF,IAAK,SACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,OACL,IAAK,MACL,IAAK,QACH,EAAqB,GACrB,MACF,IAAK,oBACL,IAAK,qBACL,IAAK,gBACL,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,YACH,EAAqB,GACrB,MACF,IAAK,SACL,IAAK,eACH,EAAqB,GAEzB,IAAI,GAAwB,EAAmB,IAA1B,EACnB,EACE,CAAC,IACa,IAAb,UAA6C,IAAhB,aAChC,EAAiB,EACJ,IAAT,KAEE,KADA,EAAY,UAEd,EACN,EAAiB,EAAE,CACnB,IACE,IAAI,EAAW,EAAY,EAClB,IAAT,MAEA,CACA,IAAI,EAAY,EAWhB,GAVA,EAAoB,EAAU,UAC9B,EAAY,EAAU,IACf,IAAN,GAA0B,IAAP,IAA2B,IAAP,IAC7B,IAAT,MACS,IAAT,OACE,EAAY,GAAY,EAAU,EAAe,CAC3C,GAAR,MACE,EAAe,KACb,GAAuB,EAAU,EAAW,EAAkB,CAC/D,EACD,EAAsB,MAC1B,EAAW,EAAS,OAEtB,EAAI,EAAe,SACf,EAAY,IAAI,EAChB,EACA,EACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CAAE,MAAO,EAAW,UAAW,EAAgB,CAAC,GAGzE,GAAI,EAAO,EAAmB,GAAI,CAChC,EAAG,CAKD,GAJA,EACkB,IAAhB,aAAkD,IAAlB,cAClC,EACiB,IAAf,YAAgD,IAAjB,aAE/B,GACA,IAAgB,KACf,EACC,EAAY,eAAiB,EAAY,eAC1C,GAA2B,EAAe,EACzC,EAAe,KAEjB,MAAM,EACR,IAAI,GAAsB,KACxB,EACE,EAAkB,SAAW,EACzB,GACC,EAAY,EAAkB,eAC7B,EAAU,aAAe,EAAU,aACnC,OACJ,GAEE,EACA,EAAY,eAAiB,EAAY,UAC1C,EAAqB,EACrB,EAAiB,EACd,GAA2B,EAAe,CAC1C,KACK,IAAT,OACI,EACA,EAAuB,EAAe,CACvC,EAAiB,EAAe,IACjC,IAAmB,GACV,IAAN,GACQ,IAAP,IACM,IAAN,KAEN,EAAiB,QACb,EAAqB,KAAQ,EAAiB,GAClD,IAAuB,GAAgB,CAwCzC,GAvCA,EAAiB,GACjB,EAAY,eACZ,EAAiB,eACjB,EAAW,SACU,IAAjB,cAAmD,IAAlB,iBAClC,EAAiB,GACf,EAAY,iBACZ,EAAiB,iBACjB,EAAW,WAChB,EACU,GAAR,KACI,EACA,GAAoB,EAAmB,CAC7C,EACU,GAAR,KACI,EACA,GAAoB,EAAe,CACzC,EAAY,IAAI,EACd,EACA,EAAW,QACX,EACA,EACA,EACD,CACD,EAAU,OAAS,EACnB,EAAU,cAAgB,EAC1B,EAAY,KACZ,GAA2B,EAAkB,GAAK,IAC9C,EAAiB,IAAI,EACrB,EACA,EAAW,QACX,EACA,EACA,EACD,CACA,EAAe,OAAS,EACxB,EAAe,cAAgB,EAC/B,EAAY,GACf,EAAuB,EACnB,GAAsB,EACxB,EAAG,CAKD,IAJA,EAAiB,GACjB,EAAiB,EACjB,EAAW,EACX,EAAoB,EAElB,EAAY,EACZ,EACA,EAAY,EAAe,EAAU,CAErC,IACF,EAAY,EACZ,IAAK,IAAI,EAAQ,EAAU,EAAO,EAAQ,EAAe,EAAM,CAC7D,IACF,KAAO,EAAI,EAAoB,GAC5B,EAAiB,EAAe,EAAe,CAC9C,IACJ,KAAO,EAAI,EAAY,GACpB,EAAW,EAAe,EAAS,CAAG,IACzC,KAAO,KAAuB,CAC5B,GACE,IAAmB,GACT,IAAT,MAAqB,IAAmB,EAAS,UAClD,CACA,EAAiB,EACjB,MAAM,EAER,EAAiB,EAAe,EAAe,CAC/C,EAAW,EAAe,EAAS,CAErC,EAAiB,UAEhB,EAAiB,KACb,IAAT,MACE,GACE,EACA,EACA,EACA,EACA,CAAC,EACF,CACM,IAAT,MACW,IAAT,MACA,GACE,EACA,EACA,EACA,EACA,CAAC,EACF,EAIT,EAAG,CAID,GAHA,EAAY,EAAa,GAAoB,EAAW,CAAG,OAC3D,EACE,EAAU,UAAY,EAAU,SAAS,aAAa,CAEzC,IAAb,UACa,IAAZ,SAA6C,EAAU,OAArB,OAEnC,IAAI,EAAoB,WACjB,GAAmB,EAAU,CACpC,GAAI,GACF,EAAoB,OACjB,CACH,EAAoB,GACpB,IAAI,EAAkB,QAGvB,EAAqB,EAAU,SAC9B,CAAC,GACW,EAAmB,aAAa,GAA5C,SACgB,EAAU,OAAzB,YAA6C,EAAU,OAAtB,QAC9B,GACA,GAAgB,EAAW,YAAY,GACtC,EAAoB,IACpB,EAAoB,GAC7B,GACE,CACC,GAAoB,EAAkB,EAAc,EAAW,CAChE,CACA,GACE,EACA,EACA,EACA,EACD,CACD,MAAM,EAER,GAAmB,EAAgB,EAAc,EAAW,EAAW,CACxD,IAAf,YACE,GACa,EAAU,OAAvB,UACQ,EAAW,cAAc,OAAjC,MACA,GAAgB,EAAW,SAAU,EAAU,MAAM,CAGzD,OADA,EAAkB,EAAa,GAAoB,EAAW,CAAG,OACzD,EAAR,CACE,IAAK,WAED,GAAmB,EAAgB,EACxB,EAAgB,kBAA3B,UAEC,GAAgB,EACd,GAAoB,EACpB,GAAgB,MACrB,MACF,IAAK,WACH,GAAgB,GAAoB,GAAgB,KACpD,MACF,IAAK,YACH,GAAY,CAAC,EACb,MACF,IAAK,cACL,IAAK,UACL,IAAK,UACH,GAAY,CAAC,EACb,GAAqB,EAAe,EAAa,EAAkB,CACnE,MACF,IAAK,kBACH,GAAI,GAA0B,MAChC,IAAK,UACL,IAAK,QACH,GAAqB,EAAe,EAAa,EAAkB,CAEvE,IAAI,EACJ,GAAI,GACF,EAAG,CACD,OAAQ,EAAR,CACE,IAAK,mBACH,IAAI,EAAY,qBAChB,MAAM,EACR,IAAK,iBACH,EAAY,mBACZ,MAAM,EACR,IAAK,oBACH,EAAY,sBACZ,MAAM,EAEV,EAAY,IAAK,QAGnB,GACI,GAAyB,EAAc,EAAY,GAClD,EAAY,oBACC,IAAd,WACQ,EAAY,UAApB,MACC,EAAY,sBACnB,IACG,IACU,EAAY,SAArB,OACC,IAAwC,IAAzB,qBACW,IAAvB,oBACA,KACC,EAAe,IAAS,GACvB,GAAO,EACR,GAAY,UAAW,GAAO,GAAK,MAAQ,GAAK,YAChD,GAAc,CAAC,IACrB,EAAkB,GAA4B,EAAY,EAAU,CACrE,EAAI,EAAgB,SAChB,EAAY,IAAI,GAChB,EACA,EACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CAAE,MAAO,EAAW,UAAW,EAAiB,CAAC,CACpE,EACK,EAAU,KAAO,GAChB,EAAe,GAAuB,EAAY,CAC3C,IAAT,OAA0B,EAAU,KAAO,OAEhD,EAAe,GACZ,GAA0B,EAAc,EAAY,CACpD,EAA4B,EAAc,EAAY,IAEzD,EAAY,GAA4B,EAAY,gBAAgB,CACnE,EAAI,EAAU,SACV,EAAkB,IAAI,GACtB,gBACA,cACA,KACA,EACA,EACD,CACD,EAAc,KAAK,CACjB,MAAO,EACP,UAAW,EACZ,CAAC,CACD,EAAgB,KAAO,IAC9B,GACE,EACA,EACA,EACA,EACA,EACD,CAEH,GAAqB,EAAe,EAAiB,EACrD,CAEJ,SAAS,GAAuB,EAAU,EAAU,EAAe,CACjE,MAAO,CACK,WACA,WACK,gBAChB,CAEH,SAAS,GAA4B,EAAa,EAAW,CAC3D,IACE,IAAI,EAAc,EAAY,UAAW,EAAY,EAAE,CAC9C,IAAT,MAEA,CACA,IAAI,EAAa,EACf,EAAY,EAAW,UAczB,GAbA,EAAa,EAAW,IACjB,IAAN,GAA2B,IAAP,IAA4B,IAAP,IAC/B,IAAT,OACE,EAAa,GAAY,EAAa,EAAY,CAC5C,GAAR,MACE,EAAU,QACR,GAAuB,EAAa,EAAY,EAAU,CAC3D,CACF,EAAa,GAAY,EAAa,EAAU,CACzC,GAAR,MACE,EAAU,KACR,GAAuB,EAAa,EAAY,EAAU,CAC3D,EACK,EAAY,MAAlB,EAAuB,OAAO,EAClC,EAAc,EAAY,OAE5B,MAAO,EAAE,CAEX,SAAS,GAAU,EAAM,CACvB,GAAa,IAAT,KAAe,OAAO,KAC1B,EAAG,GAAO,EAAK,aACR,GAAc,EAAK,MAAX,GAAyB,EAAK,MAAZ,IACjC,OAAO,GAAc,KAEvB,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,IACE,IAAI,EAAmB,EAAM,WAAY,EAAY,EAAE,CAC9C,IAAT,MAAmB,IAAW,GAE9B,CACA,IAAI,EAAa,EACf,EAAY,EAAW,UACvB,EAAY,EAAW,UAEzB,GADA,EAAa,EAAW,IACX,IAAT,MAAsB,IAAc,EAAQ,MACzC,IAAN,GAA2B,IAAP,IAA4B,IAAP,IAC/B,IAAT,OACE,EAAY,EACd,GACM,EAAY,GAAY,EAAQ,EAAiB,CAC3C,GAAR,MACE,EAAU,QACR,GAAuB,EAAQ,EAAW,EAAU,CACrD,EACH,IACE,EAAY,GAAY,EAAQ,EAAiB,CAC3C,GAAR,MACE,EAAU,KACR,GAAuB,EAAQ,EAAW,EAAU,CACrD,GACT,EAAS,EAAO,OAEZ,EAAU,SAAhB,GACE,EAAc,KAAK,CAAS,QAAkB,YAAW,CAAC,CAE9D,IAAI,GAA2B,SAC7B,GAAuC,iBACzC,SAAS,GAAkC,EAAQ,CACjD,OAAqB,OAAO,GAApB,SAA6B,EAAS,GAAK,GAChD,QAAQ,GAA0B;EAAK,CACvC,QAAQ,GAAsC,GAAG,CAEtD,SAAS,GAAsB,EAAY,EAAY,CAErD,MADA,GAAa,GAAkC,EAAW,CACnD,GAAkC,EAAW,GAAK,EAE3D,SAAS,EAAQ,EAAY,EAAK,EAAK,EAAO,EAAO,EAAW,CAC9D,OAAQ,EAAR,CACE,IAAK,WACU,OAAO,GAApB,SACe,IAAX,QACgB,IAAf,YAA6B,IAAP,IACvB,GAAe,EAAY,EAAM,EACnB,OAAO,GAApB,UAA0C,OAAO,GAApB,WACnB,IAAX,QACA,GAAe,EAAY,GAAK,EAAM,CAC1C,MACF,IAAK,YACH,GAA0B,EAAY,QAAS,EAAM,CACrD,MACF,IAAK,WACH,GAA0B,EAAY,WAAY,EAAM,CACxD,MACF,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACH,GAA0B,EAAY,EAAK,EAAM,CACjD,MACF,IAAK,QACH,GAAkB,EAAY,EAAO,EAAU,CAC/C,MACF,IAAK,OACH,GAAiB,IAAb,SAAkB,CACpB,GAA0B,EAAY,OAAQ,EAAM,CACpD,MAEJ,IAAK,MACL,IAAK,OACH,GAAW,IAAP,KAAyB,IAAR,KAA0B,IAAX,QAAiB,CACnD,EAAW,gBAAgB,EAAI,CAC/B,MAEF,GACU,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACc,OAAO,GAArB,UACA,CACA,EAAW,gBAAgB,EAAI,CAC/B,MAEF,EAAQ,GAAY,GAAK,EAAM,CAC/B,EAAW,aAAa,EAAK,EAAM,CACnC,MACF,IAAK,SACL,IAAK,aACH,GAAmB,OAAO,GAAtB,WAA6B,CAC/B,EAAW,aACT,EACA,uRACD,CACD,WAEe,OAAO,GAAtB,aACoB,IAAjB,cACgB,IAAZ,SACC,EAAQ,EAAY,EAAK,OAAQ,EAAM,KAAM,EAAO,KAAK,CAC3D,EACE,EACA,EACA,cACA,EAAM,YACN,EACA,KACD,CACD,EACE,EACA,EACA,aACA,EAAM,WACN,EACA,KACD,CACD,EACE,EACA,EACA,aACA,EAAM,WACN,EACA,KACD,GACA,EAAQ,EAAY,EAAK,UAAW,EAAM,QAAS,EAAO,KAAK,CAChE,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,CAC7D,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,GACrE,GACU,GAAR,MACa,OAAO,GAApB,UACc,OAAO,GAArB,UACA,CACA,EAAW,gBAAgB,EAAI,CAC/B,MAEF,EAAQ,GAAY,GAAK,EAAM,CAC/B,EAAW,aAAa,EAAK,EAAM,CACnC,MACF,IAAK,UACK,GAAR,OAAkB,EAAW,QAAU,IACvC,MACF,IAAK,WACK,GAAR,MAAiB,EAA0B,SAAU,EAAW,CAChE,MACF,IAAK,cACK,GAAR,MAAiB,EAA0B,YAAa,EAAW,CACnE,MACF,IAAK,0BACH,GAAY,GAAR,KAAe,CACjB,GAAiB,OAAO,GAApB,UAA6B,EAAE,WAAY,GAC7C,MAAM,MAAM,EAAuB,GAAG,CAAC,CAEzC,GADA,EAAM,EAAM,OACA,GAAR,KAAa,CACf,GAAY,EAAM,UAAd,KAAwB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACnE,EAAW,UAAY,GAG3B,MACF,IAAK,WACH,EAAW,SACT,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC1C,MACF,IAAK,QACH,EAAW,MACT,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC1C,MACF,IAAK,iCACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,YACL,IAAK,MACH,MACF,IAAK,YACH,MACF,IAAK,YACH,GACU,GAAR,MACe,OAAO,GAAtB,YACc,OAAO,GAArB,WACa,OAAO,GAApB,SACA,CACA,EAAW,gBAAgB,aAAa,CACxC,MAEF,EAAM,GAAY,GAAK,EAAM,CAC7B,EAAW,eACT,+BACA,aACA,EACD,CACD,MACF,IAAK,kBACL,IAAK,aACL,IAAK,YACL,IAAK,QACL,IAAK,cACL,IAAK,4BACL,IAAK,YACL,IAAK,gBACK,GAAR,MAAgC,OAAO,GAAtB,YAA4C,OAAO,GAApB,SAC5C,EAAW,aAAa,EAAK,GAAK,EAAM,CACxC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,QACL,IAAK,kBACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,0BACL,IAAK,wBACL,IAAK,iBACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,aACL,IAAK,OACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,YACH,GAAwB,OAAO,GAAtB,YAA4C,OAAO,GAApB,SACpC,EAAW,aAAa,EAAK,GAAG,CAChC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,UACL,IAAK,WACH,CAAC,IAAM,EACH,EAAW,aAAa,EAAK,GAAG,CAChC,CAAC,IAAM,GACG,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACA,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACrC,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,CAAC,MAAM,EAAM,EACb,GAAK,EACD,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,UACL,IAAK,QACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,MAAM,EAAM,CACR,EAAW,gBAAgB,EAAI,CAC/B,EAAW,aAAa,EAAK,EAAM,CACvC,MACF,IAAK,UACH,EAA0B,eAAgB,EAAW,CACrD,EAA0B,SAAU,EAAW,CAC/C,GAAqB,EAAY,UAAW,EAAM,CAClD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,aACH,GACE,EACA,+BACA,cACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,WACH,GACE,EACA,uCACA,YACA,EACD,CACD,MACF,IAAK,KACH,GAAqB,EAAY,KAAM,EAAM,CAC7C,MACF,IAAK,YACL,IAAK,cACH,MACF,SAEI,EAAE,EAAI,EAAI,SACD,EAAI,KAAZ,KAA0B,EAAI,KAAZ,KACV,EAAI,KAAZ,KAA0B,EAAI,KAAZ,OAElB,EAAM,GAAQ,IAAI,EAAI,EAAI,EACzB,GAAqB,EAAY,EAAK,EAAM,GAGtD,SAAS,GAAuB,EAAY,EAAK,EAAK,EAAO,EAAO,EAAW,CAC7E,OAAQ,EAAR,CACE,IAAK,QACH,GAAkB,EAAY,EAAO,EAAU,CAC/C,MACF,IAAK,0BACH,GAAY,GAAR,KAAe,CACjB,GAAiB,OAAO,GAApB,UAA6B,EAAE,WAAY,GAC7C,MAAM,MAAM,EAAuB,GAAG,CAAC,CAEzC,GADA,EAAM,EAAM,OACA,GAAR,KAAa,CACf,GAAY,EAAM,UAAd,KAAwB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACnE,EAAW,UAAY,GAG3B,MACF,IAAK,WACU,OAAO,GAApB,SACI,GAAe,EAAY,EAAM,EACnB,OAAO,GAApB,UAA0C,OAAO,GAApB,WAC9B,GAAe,EAAY,GAAK,EAAM,CAC1C,MACF,IAAK,WACK,GAAR,MAAiB,EAA0B,SAAU,EAAW,CAChE,MACF,IAAK,cACK,GAAR,MAAiB,EAA0B,YAAa,EAAW,CACnE,MACF,IAAK,UACK,GAAR,OAAkB,EAAW,QAAU,IACvC,MACF,IAAK,iCACL,IAAK,2BACL,IAAK,YACL,IAAK,MACH,MACF,IAAK,YACL,IAAK,cACH,MACF,QACE,GAAI,CAAC,GAA6B,eAAe,EAAI,CACnD,EAAG,CACD,GACU,EAAI,KAAZ,KACQ,EAAI,KAAZ,MACE,EAAQ,EAAI,SAAS,UAAU,CAChC,EAAM,EAAI,MAAM,EAAG,EAAQ,EAAI,OAAS,EAAI,IAAK,GAAE,CACnD,EAAY,EAAW,KAAqB,KAC5C,EAAoB,GAAR,KAAqC,KAAjB,EAAU,GAC5B,OAAO,GAAtB,YACE,EAAW,oBAAoB,EAAK,EAAW,EAAM,CACxC,OAAO,GAAtB,YACA,CACe,OAAO,GAAtB,YACW,IAAT,OACC,KAAO,EACH,EAAW,GAAO,KACnB,EAAW,aAAa,EAAI,EAC5B,EAAW,gBAAgB,EAAI,EACrC,EAAW,iBAAiB,EAAK,EAAO,EAAM,CAC9C,MAAM,EAER,KAAO,EACF,EAAW,GAAO,EACnB,CAAC,IAAM,EACL,EAAW,aAAa,EAAK,GAAG,CAChC,GAAqB,EAAY,EAAK,EAAM,GAI5D,SAAS,GAAqB,EAAY,EAAK,EAAO,CACpD,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACH,MACF,IAAK,MACH,EAA0B,QAAS,EAAW,CAC9C,EAA0B,OAAQ,EAAW,CAC7C,IAAI,EAAS,CAAC,EACZ,EAAY,CAAC,EACb,EACF,IAAK,KAAW,EACd,GAAI,EAAM,eAAe,EAAQ,CAAE,CACjC,IAAI,EAAY,EAAM,GACtB,GAAY,GAAR,KACF,OAAQ,EAAR,CACE,IAAK,MACH,EAAS,CAAC,EACV,MACF,IAAK,SACH,EAAY,CAAC,EACb,MACF,IAAK,WACL,IAAK,0BACH,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,QACE,EAAQ,EAAY,EAAK,EAAS,EAAW,EAAO,KAAK,EAGnE,GACE,EAAQ,EAAY,EAAK,SAAU,EAAM,OAAQ,EAAO,KAAK,CAC/D,GAAU,EAAQ,EAAY,EAAK,MAAO,EAAM,IAAK,EAAO,KAAK,CACjE,OACF,IAAK,QACH,EAA0B,UAAW,EAAW,CAChD,IAAI,EAAgB,EAAU,EAAY,EAAY,KACpD,EAAU,KACV,EAAiB,KACnB,IAAK,KAAU,EACb,GAAI,EAAM,eAAe,EAAO,CAAE,CAChC,IAAI,EAAgB,EAAM,GAC1B,GAAY,GAAR,KACF,OAAQ,EAAR,CACE,IAAK,OACH,EAAY,EACZ,MACF,IAAK,OACH,EAAY,EACZ,MACF,IAAK,UACH,EAAU,EACV,MACF,IAAK,iBACH,EAAiB,EACjB,MACF,IAAK,QACH,EAAU,EACV,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,EAAQ,EAAY,EAAK,EAAQ,EAAe,EAAO,KAAK,EAGtE,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAAC,EACF,CACD,OACF,IAAK,SAGH,IAAK,KAFL,EAA0B,UAAW,EAAW,CAChD,EAAS,EAAY,EAAU,KACb,EAChB,GACE,EAAM,eAAe,EAAU,GAC7B,EAAe,EAAM,GAAqB,GAAR,MAEpC,OAAQ,EAAR,CACE,IAAK,QACH,EAAU,EACV,MACF,IAAK,eACH,EAAY,EACZ,MACF,IAAK,WACH,EAAS,EACX,QACE,EAAQ,EAAY,EAAK,EAAW,EAAc,EAAO,KAAK,CAEtE,EAAM,EACN,EAAQ,EACR,EAAW,SAAW,CAAC,CAAC,EAChB,GAAR,KAEY,GAAR,MAAiB,GAAc,EAAY,CAAC,CAAC,EAAQ,EAAO,CAAC,EAAE,CAD/D,GAAc,EAAY,CAAC,CAAC,EAAQ,EAAK,CAAC,EAAE,CAEhD,OACF,IAAK,WAGH,IAAK,KAFL,EAA0B,UAAW,EAAW,CAChD,EAAU,EAAY,EAAS,KACb,EAChB,GACE,EAAM,eAAe,EAAU,GAC7B,EAAe,EAAM,GAAqB,GAAR,MAEpC,OAAQ,EAAR,CACE,IAAK,QACH,EAAS,EACT,MACF,IAAK,eACH,EAAY,EACZ,MACF,IAAK,WACH,EAAU,EACV,MACF,IAAK,0BACH,GAAY,GAAR,KAAsB,MAAM,MAAM,EAAuB,GAAG,CAAC,CACjE,MACF,QACE,EAAQ,EAAY,EAAK,EAAW,EAAc,EAAO,KAAK,CAEtE,GAAa,EAAY,EAAQ,EAAW,EAAQ,CACpD,OACF,IAAK,SACH,IAAK,KAAW,EACd,GACE,EAAM,eAAe,EAAQ,GAC3B,EAAS,EAAM,GAAmB,GAAR,MAE5B,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SACT,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACF,MACF,QACE,EAAQ,EAAY,EAAK,EAAS,EAAQ,EAAO,KAAK,CAE9D,OACF,IAAK,SACH,EAA0B,eAAgB,EAAW,CACrD,EAA0B,SAAU,EAAW,CAC/C,EAA0B,SAAU,EAAW,CAC/C,EAA0B,QAAS,EAAW,CAC9C,MACF,IAAK,SACL,IAAK,SACH,EAA0B,OAAQ,EAAW,CAC7C,MACF,IAAK,QACL,IAAK,QACH,IAAK,EAAS,EAAG,EAAS,GAAgB,OAAQ,IAChD,EAA0B,GAAgB,GAAS,EAAW,CAChE,MACF,IAAK,QACH,EAA0B,QAAS,EAAW,CAC9C,EAA0B,OAAQ,EAAW,CAC7C,MACF,IAAK,UACH,EAA0B,SAAU,EAAW,CAC/C,MACF,IAAK,QACL,IAAK,SACL,IAAK,OACH,EAA0B,QAAS,EAAW,CAC5C,EAA0B,OAAQ,EAAW,CACjD,IAAK,OACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,MACL,IAAK,WACH,IAAK,KAAkB,EACrB,GACE,EAAM,eAAe,EAAe,GAClC,EAAS,EAAM,GAA0B,GAAR,MAEnC,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,0BACH,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,QACE,EAAQ,EAAY,EAAK,EAAgB,EAAQ,EAAO,KAAK,CAErE,OACF,QACE,GAAI,GAAgB,EAAI,CAAE,CACxB,IAAK,KAAiB,EACpB,EAAM,eAAe,EAAc,GAC/B,EAAS,EAAM,GACN,IAAX,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACA,IAAK,GACN,EACP,QAGN,IAAK,KAAgB,EACnB,EAAM,eAAe,EAAa,GAC9B,EAAS,EAAM,GACT,GAAR,MACE,EAAQ,EAAY,EAAK,EAAc,EAAQ,EAAO,KAAK,EAEnE,SAAS,GAAiB,EAAY,EAAK,EAAW,EAAW,CAC/D,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACH,MACF,IAAK,QACH,IAAI,EAAO,KACT,EAAO,KACP,EAAQ,KACR,EAAe,KACf,EAAmB,KACnB,EAAU,KACV,EAAiB,KACnB,IAAK,KAAW,EAAW,CACzB,IAAI,EAAW,EAAU,GACzB,GAAI,EAAU,eAAe,EAAQ,EAAY,GAAR,KACvC,OAAQ,EAAR,CACE,IAAK,UACH,MACF,IAAK,QACH,MACF,IAAK,eACH,EAAmB,EACrB,QACE,EAAU,eAAe,EAAQ,EAC/B,EAAQ,EAAY,EAAK,EAAS,KAAM,EAAW,EAAS,EAGtE,IAAK,IAAI,KAAe,EAAW,CACjC,IAAI,EAAU,EAAU,GAExB,GADA,EAAW,EAAU,GAEnB,EAAU,eAAe,EAAY,GAC5B,GAAR,MAA2B,GAAR,MAEpB,OAAQ,EAAR,CACE,IAAK,OACH,EAAO,EACP,MACF,IAAK,OACH,EAAO,EACP,MACF,IAAK,UACH,EAAU,EACV,MACF,IAAK,iBACH,EAAiB,EACjB,MACF,IAAK,QACH,EAAQ,EACR,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,IAAY,GACV,EACE,EACA,EACA,EACA,EACA,EACA,EACD,EAGX,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACD,OACF,IAAK,SAEH,IAAK,IADL,GAAU,EAAQ,EAAe,EAAc,KAClC,EACX,GACI,EAAmB,EAAU,GAC/B,EAAU,eAAe,EAAK,EAAY,GAAR,KAElC,OAAQ,EAAR,CACE,IAAK,QACH,MACF,IAAK,WACH,EAAU,EACZ,QACE,EAAU,eAAe,EAAK,EAC5B,EACE,EACA,EACA,EACA,KACA,EACA,EACD,CAEX,IAAK,KAAQ,EACX,GACI,EAAO,EAAU,GAClB,EAAmB,EAAU,GAC9B,EAAU,eAAe,EAAK,GACnB,GAAR,MAAwB,GAAR,MAEnB,OAAQ,EAAR,CACE,IAAK,QACH,EAAc,EACd,MACF,IAAK,eACH,EAAe,EACf,MACF,IAAK,WACH,EAAQ,EACV,QACE,IAAS,GACP,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAEX,EAAM,EACN,EAAY,EACZ,EAAY,EACJ,GAAR,KAEI,CAAC,CAAC,GAAc,CAAC,CAAC,IACT,GAAR,KAEG,GAAc,EAAY,CAAC,CAAC,EAAW,EAAY,EAAE,CAAG,GAAI,CAAC,EAAE,CAD/D,GAAc,EAAY,CAAC,CAAC,EAAW,EAAK,CAAC,EAAE,EAHnD,GAAc,EAAY,CAAC,CAAC,EAAW,EAAa,CAAC,EAAE,CAK3D,OACF,IAAK,WAEH,IAAK,IADL,GAAU,EAAc,KACH,EACnB,GACI,EAAO,EAAU,GACnB,EAAU,eAAe,EAAa,EAC5B,GAAR,MACA,CAAC,EAAU,eAAe,EAAa,CAEzC,OAAQ,EAAR,CACE,IAAK,QACH,MACF,IAAK,WACH,MACF,QACE,EAAQ,EAAY,EAAK,EAAc,KAAM,EAAW,EAAK,CAErE,IAAK,KAAS,EACZ,GACI,EAAO,EAAU,GAClB,EAAO,EAAU,GAClB,EAAU,eAAe,EAAM,GAAa,GAAR,MAAwB,GAAR,MAEpD,OAAQ,EAAR,CACE,IAAK,QACH,EAAc,EACd,MACF,IAAK,eACH,EAAU,EACV,MACF,IAAK,WACH,MACF,IAAK,0BACH,GAAY,GAAR,KAAc,MAAM,MAAM,EAAuB,GAAG,CAAC,CACzD,MACF,QACE,IAAS,GACP,EAAQ,EAAY,EAAK,EAAO,EAAM,EAAW,EAAK,CAEhE,GAAe,EAAY,EAAa,EAAQ,CAChD,OACF,IAAK,SACH,IAAK,IAAI,KAAe,EACtB,GACI,EAAc,EAAU,GAC1B,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,CAExC,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SAAW,CAAC,EACvB,MACF,QACE,EACE,EACA,EACA,EACA,KACA,EACA,EACD,CAET,IAAK,KAAoB,EACvB,GACI,EAAc,EAAU,GACzB,EAAU,EAAU,GACrB,EAAU,eAAe,EAAiB,EACxC,IAAgB,IACP,GAAR,MAA+B,GAAR,MAE1B,OAAQ,EAAR,CACE,IAAK,WACH,EAAW,SACT,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACF,MACF,QACE,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAET,OACF,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,QACL,IAAK,KACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,MACL,IAAK,WACH,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,EACtC,EAAQ,EAAY,EAAK,EAAa,KAAM,EAAW,EAAY,CACzE,IAAK,KAAW,EACd,GACI,EAAc,EAAU,GACzB,EAAU,EAAU,GACrB,EAAU,eAAe,EAAQ,EAC/B,IAAgB,IACP,GAAR,MAA+B,GAAR,MAE1B,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,0BACH,GAAY,GAAR,KACF,MAAM,MAAM,EAAuB,IAAK,EAAI,CAAC,CAC/C,MACF,QACE,EACE,EACA,EACA,EACA,EACA,EACA,EACD,CAET,OACF,QACE,GAAI,GAAgB,EAAI,CAAE,CACxB,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EACxB,IAAX,IAAK,IACL,CAAC,EAAU,eAAe,EAAY,EACtC,GACE,EACA,EACA,EACA,IAAK,GACL,EACA,EACD,CACP,IAAK,KAAkB,EACpB,EAAc,EAAU,GACtB,EAAU,EAAU,GACrB,CAAC,EAAU,eAAe,EAAe,EACvC,IAAgB,GACJ,IAAX,IAAK,IAAgC,IAAX,IAAK,IAChC,GACE,EACA,EACA,EACA,EACA,EACA,EACD,CACP,QAGN,IAAK,IAAI,KAAe,EACrB,EAAc,EAAU,GACvB,EAAU,eAAe,EAAY,EAC3B,GAAR,MACA,CAAC,EAAU,eAAe,EAAY,EACtC,EAAQ,EAAY,EAAK,EAAa,KAAM,EAAW,EAAY,CACzE,IAAK,KAAY,EACd,EAAc,EAAU,GACtB,EAAU,EAAU,GACrB,CAAC,EAAU,eAAe,EAAS,EACjC,IAAgB,GACP,GAAR,MAA+B,GAAR,MACxB,EAAQ,EAAY,EAAK,EAAU,EAAa,EAAW,EAAQ,CAE3E,SAAS,GAAuB,EAAe,CAC7C,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACH,MAAO,CAAC,EACV,QACE,MAAO,CAAC,GAGd,SAAS,IAAoB,CAC3B,GAAmB,OAAO,YAAY,kBAAlC,WAAoD,CACtD,IACE,IAAI,EAAQ,EACV,EAAO,EACP,EAAkB,YAAY,iBAAiB,WAAW,CAC1D,EAAI,EACN,EAAI,EAAgB,OACpB,IACA,CACA,IAAI,EAAQ,EAAgB,GAC1B,EAAe,EAAM,aACrB,EAAgB,EAAM,cACtB,EAAW,EAAM,SACnB,GAAI,GAAgB,GAAY,GAAuB,EAAc,CAAE,CAGrE,IAFA,EAAgB,EAChB,EAAW,EAAM,YACZ,GAAK,EAAG,EAAI,EAAgB,OAAQ,IAAK,CAC5C,IAAI,EAAe,EAAgB,GACjC,EAAmB,EAAa,UAClC,GAAI,EAAmB,EAAU,MACjC,IAAI,EAAsB,EAAa,aACrC,EAAuB,EAAa,cACtC,GACE,GAAuB,EAAqB,GAC1C,EAAe,EAAa,YAC7B,GACC,GACC,EAAe,EACZ,GACC,EAAW,IACX,EAAe,KAK1B,GAHA,EAAE,EACF,GAAS,GAAK,EAAe,IAAmB,EAAM,SAAW,KACjE,IACI,GAAK,EAAO,OAGpB,GAAI,EAAI,EAAO,OAAO,EAAO,EAAQ,IAEvC,OAAO,UAAU,aACb,EAAQ,UAAU,WAAW,SAAwB,OAAO,GAApB,UACxC,EACA,EAEN,IAAI,GAAgB,KAClB,GAAuB,KACzB,SAAS,GAAkC,EAAsB,CAC/D,OAAa,EAAqB,WAA3B,EACH,EACA,EAAqB,cAE3B,SAAS,GAAkB,EAAc,CACvC,OAAQ,EAAR,CACE,IAAK,6BACH,MAAO,GACT,IAAK,qCACH,MAAO,GACT,QACE,MAAO,IAGb,SAAS,GAAwB,EAAiB,EAAM,CACtD,GAAU,IAAN,EACF,OAAQ,EAAR,CACE,IAAK,MACH,MAAO,GACT,IAAK,OACH,MAAO,GACT,QACE,MAAO,GAEb,OAAa,IAAN,GAA6C,IAApB,gBAC5B,EACA,EAEN,SAAS,GAAqB,EAAM,EAAO,CACzC,OACiB,IAAf,YACe,IAAf,YACa,OAAO,EAAM,UAA1B,UACa,OAAO,EAAM,UAA1B,UACa,OAAO,EAAM,UAA1B,UACc,OAAO,EAAM,yBAA1B,UACU,EAAM,0BAAf,MACQ,EAAM,wBAAwB,QAAtC,KAGN,IAAI,GAAiC,KACrC,SAAS,IAA+B,CACtC,IAAI,EAAQ,OAAO,MAOnB,OANI,GAAwB,EAAM,OAArB,WACP,IAAU,GAAuC,CAAC,GACtD,GAAiC,EAC1B,CAAC,IAEV,GAAiC,KAC1B,CAAC,GAEV,IAAI,GAAiC,OAAO,YAAtB,WAAmC,WAAa,IAAK,GACzE,GAA+B,OAAO,cAAtB,WAAqC,aAAe,IAAK,GACzE,GAA8B,OAAO,SAAtB,WAAgC,QAAU,IAAK,GAC9D,GACiB,OAAO,gBAAtB,WACI,eACuB,KAAvB,OAOE,GANA,SAAU,EAAU,CAClB,OAAO,GACJ,QAAQ,KAAK,CACb,KAAK,EAAS,CACd,MAAM,GAAsB,EAG3C,SAAS,GAAsB,EAAO,CACpC,WAAW,UAAY,CACrB,MAAM,GACN,CAEJ,SAAS,GAAiB,EAAM,CAC9B,OAAkB,IAAX,OAET,SAAS,GAAuB,EAAgB,EAAmB,CACjE,IAAI,EAAO,EACT,EAAQ,EACV,EAAG,CACD,IAAI,EAAW,EAAK,YAEpB,GADA,EAAe,YAAY,EAAK,CAC5B,GAAkB,EAAS,WAAf,EACd,GAAM,EAAO,EAAS,KAAgB,IAAT,MAA0B,IAAT,KAAgB,CAC5D,GAAU,IAAN,EAAa,CACf,EAAe,YAAY,EAAS,CACpC,GAAiB,EAAkB,CACnC,OAEF,YAEQ,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,IAEA,YACkB,IAAX,OACP,GAAyB,EAAe,cAAc,gBAAgB,SACpD,IAAX,OAAiB,CACxB,EAAO,EAAe,cAAc,KACpC,GAAyB,EAAK,CAC9B,IAAK,IAAI,EAAgB,EAAK,WAAY,GAAiB,CACzD,IAAI,EAAoB,EAAc,YACpC,EAAW,EAAc,SAC3B,EAAc,KACC,IAAb,UACY,IAAZ,SACY,IAAX,QACkB,EAAc,IAAI,aAAa,GAAhD,cACF,EAAK,YAAY,EAAc,CACjC,EAAgB,QAGP,IAAX,QACE,GAAyB,EAAe,cAAc,KAAK,CACjE,EAAO,QACA,GACT,GAAiB,EAAkB,CAErC,SAAS,GAA+B,EAAkB,EAAU,CAClE,IAAI,EAAO,EACX,EAAmB,EACnB,EAAG,CACD,IAAI,EAAW,EAAK,YAWpB,GAVM,EAAK,WAAX,EACI,GACI,EAAK,gBAAkB,EAAK,MAAM,QACnC,EAAK,MAAM,QAAU,SACpB,EAAK,MAAM,QAAU,EAAK,iBAAmB,GACxC,EAAK,aAAa,QAAQ,GAAjC,IAAqC,EAAK,gBAAgB,QAAQ,EAC9D,EAAK,WAAX,IACC,GACK,EAAK,aAAe,EAAK,UAAa,EAAK,UAAY,IACxD,EAAK,UAAY,EAAK,cAAgB,IAC3C,GAAkB,EAAS,WAAf,EACd,GAAM,EAAO,EAAS,KAAgB,IAAT,KAC3B,IAAU,IAAN,EAAwB,MACvB,SAEI,IAAR,KAAyB,IAAT,MAA0B,IAAT,MAA0B,IAAT,MACjD,IACN,EAAO,QACA,GAEX,SAAS,GAAwB,EAAW,CAC1C,IAAI,EAAW,EAAU,WAEzB,IADA,GAAmB,EAAS,WAAhB,KAA6B,EAAW,EAAS,aACtD,GAAY,CACjB,IAAI,EAAO,EAEX,OADA,EAAW,EAAS,YACZ,EAAK,SAAb,CACE,IAAK,OACL,IAAK,OACL,IAAK,OACH,GAAwB,EAAK,CAC7B,GAAsB,EAAK,CAC3B,SACF,IAAK,SACL,IAAK,QACH,SACF,IAAK,OACH,GAAqB,EAAK,IAAI,aAAa,GAAvC,aAAyC,SAEjD,EAAU,YAAY,EAAK,EAG/B,SAAS,GAAmB,EAAU,EAAM,EAAO,EAAmB,CACpE,KAAa,EAAS,WAAf,GAA2B,CAChC,IAAI,EAAW,EACf,GAAI,EAAS,SAAS,aAAa,GAAK,EAAK,aAAa,KAEtD,CAAC,IACY,EAAS,WAArB,SAA8C,EAAS,OAAtB,UAElC,cACO,CAAC,EACV,GAAgB,IAAZ,SAAiC,EAAS,OAAtB,SAA4B,CAClD,IAAI,EAAe,EAAS,MAAjB,KAAwB,KAAO,GAAK,EAAS,KACxD,GACe,EAAS,OAAtB,UACA,EAAS,aAAa,OAAO,GAAK,EAElC,OAAO,OACJ,OAAO,UACP,CAAC,EAAS,IACjB,OAAQ,EAAR,CACE,IAAK,OACH,GAAI,CAAC,EAAS,aAAa,WAAW,CAAE,MACxC,OAAO,EACT,IAAK,UACH,EAAO,EAAS,aAAa,MAAM,CACd,IAAjB,cAAyB,EAAS,aAAa,kBAAkB,EAGnE,IAAS,EAAS,KAClB,EAAS,aAAa,OAAO,IAClB,EAAS,MAAjB,MAAgC,EAAS,OAAhB,GACtB,KACA,EAAS,OACf,EAAS,aAAa,cAAc,IACzB,EAAS,aAAjB,KAA+B,KAAO,EAAS,cAClD,EAAS,aAAa,QAAQ,IACnB,EAAS,OAAjB,KAAyB,KAAO,EAAS,OAE5C,MACF,OAAO,EACT,IAAK,QACH,GAAI,EAAS,aAAa,kBAAkB,CAAE,MAC9C,OAAO,EACT,IAAK,SAEH,GADA,EAAO,EAAS,aAAa,MAAM,EAEhC,KAAkB,EAAS,KAAjB,KAAuB,KAAO,EAAS,MAChD,EAAS,aAAa,OAAO,IAClB,EAAS,MAAjB,KAAwB,KAAO,EAAS,OAC3C,EAAS,aAAa,cAAc,IACzB,EAAS,aAAjB,KAA+B,KAAO,EAAS,eACpD,GACA,EAAS,aAAa,QAAQ,EAC9B,CAAC,EAAS,aAAa,WAAW,CAElC,MACF,OAAO,EACT,QACE,OAAO,EAGb,GADA,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,KAAmB,MAEzB,OAAO,KAET,SAAS,GAAuB,EAAU,EAAM,EAAmB,CACjE,GAAW,IAAP,GAAa,OAAO,KACxB,KAAa,EAAS,WAAf,GASL,IAPS,EAAS,WAAf,GACa,EAAS,WAArB,SACa,EAAS,OAAtB,WACF,CAAC,IAGH,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,MAAmB,OAAO,KAEhC,OAAO,EAET,SAAS,GAA4B,EAAU,EAAmB,CAChE,KAAa,EAAS,WAAf,GASL,IAPS,EAAS,WAAf,GACa,EAAS,WAArB,SACa,EAAS,OAAtB,WACF,CAAC,IAGH,EAAW,GAAkB,EAAS,YAAY,CACrC,IAAT,MAAmB,OAAO,KAEhC,OAAO,EAET,SAAS,GAA0B,EAAU,CAC3C,OAAgB,EAAS,OAAlB,MAAmC,EAAS,OAAlB,KAEnC,SAAS,GAA2B,EAAU,CAC5C,OACW,EAAS,OAAlB,MACU,EAAS,OAAlB,MAAwC,EAAS,cAAc,aAArC,UAG/B,SAAS,GAA8B,EAAU,EAAU,CACzD,IAAI,EAAgB,EAAS,cAC7B,GAAa,EAAS,OAAlB,KAAwB,EAAS,YAAc,UACjC,EAAS,OAAlB,MAAwC,EAAc,aAA5B,UACjC,GAAU,KACP,CACH,IAAI,EAAW,UAAY,CACzB,GAAU,CACV,EAAc,oBAAoB,mBAAoB,EAAS,EAEjE,EAAc,iBAAiB,mBAAoB,EAAS,CAC5D,EAAS,YAAc,GAG3B,SAAS,GAAkB,EAAM,CAC/B,KAAe,GAAR,KAAc,EAAO,EAAK,YAAa,CAC5C,IAAI,EAAW,EAAK,SACpB,GAAU,IAAN,GAAwB,IAAN,EAAgB,MACtC,GAAU,IAAN,EAAgB,CAElB,GADA,EAAW,EAAK,KAEN,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,KACS,IAAT,MACQ,IAAR,IAEA,MACF,GAAa,IAAT,MAA8B,IAAT,KAAmB,OAAO,MAGvD,OAAO,EAET,IAAI,GAA8C,KAClD,SAAS,GAAgD,EAAmB,CAC1E,EAAoB,EAAkB,YACtC,IAAK,IAAI,EAAQ,EAAG,GAAqB,CACvC,GAAU,EAAkB,WAAxB,EAAkC,CACpC,IAAI,EAAO,EAAkB,KAC7B,GAAa,IAAT,MAA0B,IAAT,KAAe,CAClC,GAAU,IAAN,EACF,OAAO,GAAkB,EAAkB,YAAY,CACzD,SAES,IAAR,KACU,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,KACA,IAEN,EAAoB,EAAkB,YAExC,OAAO,KAET,SAAS,GAA2B,EAAgB,CAClD,EAAiB,EAAe,gBAChC,IAAK,IAAI,EAAQ,EAAG,GAAkB,CACpC,GAAU,EAAe,WAArB,EAA+B,CACjC,IAAI,EAAO,EAAe,KAC1B,GACU,IAAR,KACS,IAAT,MACS,IAAT,MACS,IAAT,MACQ,IAAR,IACA,CACA,GAAU,IAAN,EAAa,OAAO,EACxB,SACe,IAAT,MAA0B,IAAT,MAAkB,IAE7C,EAAiB,EAAe,gBAElC,OAAO,KAET,SAAS,GAAyB,EAAM,EAAO,EAAuB,CAEpE,OADA,EAAQ,GAAkC,EAAsB,CACxD,EAAR,CACE,IAAK,OAEH,GADA,EAAO,EAAM,gBACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,IAAK,OAEH,GADA,EAAO,EAAM,KACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,IAAK,OAEH,GADA,EAAO,EAAM,KACT,CAAC,EAAM,MAAM,MAAM,EAAuB,IAAI,CAAC,CACnD,OAAO,EACT,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,EAG9C,SAAS,GAAyB,EAAU,CAC1C,IAAK,IAAI,EAAa,EAAS,WAAY,EAAW,QACpD,EAAS,oBAAoB,EAAW,GAAG,CAC7C,GAAsB,EAAS,CAEjC,IAAI,GAAkB,IAAI,IACxB,GAAiB,IAAI,IACvB,SAAS,GAAiB,EAAW,CACnC,OAAsB,OAAO,EAAU,aAAhC,WACH,EAAU,aAAa,CACjB,EAAU,WAAhB,EACE,EACA,EAAU,cAElB,IAAI,GAAqB,EAAwB,EACjD,EAAwB,EAAI,CAC1B,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACJ,CACD,SAAS,IAAgB,CACvB,IAAI,EAAuB,GAAmB,GAAG,CAC/C,EAAe,IAAiB,CAClC,OAAO,GAAwB,EAEjC,SAAS,GAAiB,EAAM,CAC9B,IAAI,EAAW,GAAoB,EAAK,CAC/B,IAAT,MAA2B,EAAS,MAAf,GAAiC,EAAS,OAApB,OACvC,GAAmB,EAAS,CAC5B,GAAmB,EAAE,EAAK,CAEhC,IAAI,GAAiC,OAAO,SAAvB,IAAkC,KAAO,SAC9D,SAAS,GAAa,EAAK,EAAM,EAAa,CAC5C,IAAI,EAAgB,GACpB,GAAI,GAA8B,OAAO,GAApB,UAA4B,EAAM,CACrD,IAAI,EACF,GAA+C,EAAK,CACtD,EACE,aAAe,EAAM,YAAc,EAAqB,KAC7C,OAAO,GAApB,WACG,GAAsB,iBAAmB,EAAc,MAC1D,GAAe,IAAI,EAAmB,GACnC,GAAe,IAAI,EAAmB,CACtC,EAAM,CAAO,MAAkB,cAAmB,OAAM,CAChD,EAAc,cAAc,EAAmB,GAAxD,OACI,EAAO,EAAc,cAAc,OAAO,CAC5C,GAAqB,EAAM,OAAQ,EAAI,CACvC,EAAoB,EAAK,CACzB,EAAc,KAAK,YAAY,EAAK,IAG5C,SAAS,GAAY,EAAM,CACzB,GAAmB,EAAE,EAAK,CAC1B,GAAa,eAAgB,EAAM,KAAK,CAE1C,SAAS,GAAW,EAAM,EAAa,CACrC,GAAmB,EAAE,EAAM,EAAY,CACvC,GAAa,aAAc,EAAM,EAAY,CAE/C,SAAS,GAAQ,EAAM,EAAI,EAAS,CAClC,GAAmB,EAAE,EAAM,EAAI,EAAQ,CACvC,IAAI,EAAgB,GACpB,GAAI,GAAiB,GAAQ,EAAI,CAC/B,IAAI,EACF,2BACA,GAA+C,EAAG,CAClD,KACU,IAAZ,SACI,GAAW,EAAQ,aACf,GACA,iBACA,GACE,EAAQ,YACT,CACD,KACW,OAAO,EAAQ,YAA5B,WACG,GACC,gBACA,GACE,EAAQ,WACT,CACD,OACH,GACC,UACA,GAA+C,EAAK,CACpD,KAKR,IAAI,EAAM,EACV,OAAQ,EAAR,CACE,IAAK,QACH,EAAM,GAAY,EAAK,CACvB,MACF,IAAK,SACH,EAAM,GAAa,EAAK,CAE5B,GAAgB,IAAI,EAAI,GACpB,EAAO,EACP,CACE,IAAK,UACL,KACc,IAAZ,SAAkB,GAAW,EAAQ,YAAc,IAAK,GAAI,EAC1D,KACL,CACD,EACD,CACD,GAAgB,IAAI,EAAK,EAAK,CACrB,EAAc,cAAc,EAAgB,GAArD,MACe,IAAZ,SACC,EAAc,cAAc,GAA6B,EAAI,CAAC,EAClD,IAAb,UACC,EAAc,cAAc,GAAyB,EAAI,CAAC,GAC1D,EAAK,EAAc,cAAc,OAAO,CAC1C,GAAqB,EAAI,OAAQ,EAAK,CACtC,EAAoB,EAAG,CACvB,EAAc,KAAK,YAAY,EAAG,IAG1C,SAAS,GAAc,EAAM,EAAS,CACpC,GAAmB,EAAE,EAAM,EAAQ,CACnC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAM,CACzB,IAAI,EAAK,GAAwB,OAAO,EAAQ,IAA5B,SAAiC,EAAQ,GAAK,SAChE,EACE,iCACA,GAA+C,EAAG,CAClD,YACA,GAA+C,EAAK,CACpD,KACF,EAAM,EACR,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,SACH,EAAM,GAAa,EAAK,CAE5B,GACE,CAAC,GAAgB,IAAI,EAAI,GACvB,EAAO,EAAO,CAAE,IAAK,gBAAuB,OAAM,CAAE,EAAQ,CAC9D,GAAgB,IAAI,EAAK,EAAK,CACrB,EAAc,cAAc,EAAgB,GAArD,MACA,CACA,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,SACH,GAAI,EAAc,cAAc,GAAyB,EAAI,CAAC,CAC5D,OAEN,EAAK,EAAc,cAAc,OAAO,CACxC,GAAqB,EAAI,OAAQ,EAAK,CACtC,EAAoB,EAAG,CACvB,EAAc,KAAK,YAAY,EAAG,GAIxC,SAAS,GAAa,EAAM,EAAY,EAAS,CAC/C,GAAmB,EAAE,EAAM,EAAY,EAAQ,CAC/C,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAM,CACzB,IAAI,EAAS,GAAqB,EAAc,CAAC,gBAC/C,EAAM,GAAY,EAAK,CACzB,IAA2B,UAC3B,IAAI,EAAW,EAAO,IAAI,EAAI,CAC9B,GAAI,CAAC,EAAU,CACb,IAAI,EAAQ,CAAE,QAAS,EAAG,QAAS,KAAM,CACzC,GACG,EAAW,EAAc,cACxB,GAA6B,EAAI,CAClC,CAED,EAAM,QAAU,MACb,CACH,EAAO,EACL,CAAE,IAAK,aAAoB,OAAM,kBAAmB,EAAY,CAChE,EACD,EACA,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA+B,EAAM,EAAQ,CAC/C,IAAI,EAAQ,EAAW,EAAc,cAAc,OAAO,CAC1D,EAAoB,EAAK,CACzB,GAAqB,EAAM,OAAQ,EAAK,CACxC,EAAK,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CAC/C,EAAK,OAAS,EACd,EAAK,QAAU,GACf,CACF,EAAK,iBAAiB,OAAQ,UAAY,CACxC,EAAM,SAAW,GACjB,CACF,EAAK,iBAAiB,QAAS,UAAY,CACzC,EAAM,SAAW,GACjB,CACF,EAAM,SAAW,EACjB,GAAiB,EAAU,EAAY,EAAc,CAEvD,EAAW,CACT,KAAM,aACN,SAAU,EACV,MAAO,EACA,QACR,CACD,EAAO,IAAI,EAAK,EAAS,GAI/B,SAAS,GAAc,EAAK,EAAS,CACnC,GAAmB,EAAE,EAAK,EAAQ,CAClC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAK,CACxB,IAAI,EAAU,GAAqB,EAAc,CAAC,iBAChD,EAAM,GAAa,EAAI,CACvB,EAAW,EAAQ,IAAI,EAAI,CAC7B,IACI,EAAW,EAAc,cAAc,GAAyB,EAAI,CAAC,CACvE,IACI,EAAM,EAAO,CAAO,MAAK,MAAO,CAAC,EAAG,CAAE,EAAQ,EAC/C,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA2B,EAAK,EAAQ,CACzC,EAAW,EAAc,cAAc,SAAS,CACjD,EAAoB,EAAS,CAC7B,GAAqB,EAAU,OAAQ,EAAI,CAC3C,EAAc,KAAK,YAAY,EAAS,EACzC,EAAW,CACV,KAAM,SACN,SAAU,EACV,MAAO,EACP,MAAO,KACR,CACD,EAAQ,IAAI,EAAK,EAAS,GAGhC,SAAS,GAAoB,EAAK,EAAS,CACzC,GAAmB,EAAE,EAAK,EAAQ,CAClC,IAAI,EAAgB,GACpB,GAAI,GAAiB,EAAK,CACxB,IAAI,EAAU,GAAqB,EAAc,CAAC,iBAChD,EAAM,GAAa,EAAI,CACvB,EAAW,EAAQ,IAAI,EAAI,CAC7B,IACI,EAAW,EAAc,cAAc,GAAyB,EAAI,CAAC,CACvE,IACI,EAAM,EAAO,CAAO,MAAK,MAAO,CAAC,EAAG,KAAM,SAAU,CAAE,EAAQ,EAC/D,EAAU,GAAgB,IAAI,EAAI,GACjC,GAA2B,EAAK,EAAQ,CACzC,EAAW,EAAc,cAAc,SAAS,CACjD,EAAoB,EAAS,CAC7B,GAAqB,EAAU,OAAQ,EAAI,CAC3C,EAAc,KAAK,YAAY,EAAS,EACzC,EAAW,CACV,KAAM,SACN,SAAU,EACV,MAAO,EACP,MAAO,KACR,CACD,EAAQ,IAAI,EAAK,EAAS,GAGhC,SAAS,GAAY,EAAM,EAAc,EAAc,EAAiB,CACtE,IAAI,GAA4B,EAC9B,GAAwB,SACtB,GAAiB,EAAyB,CAC1C,KACJ,GAAI,CAAC,EAA0B,MAAM,MAAM,EAAuB,IAAI,CAAC,CACvE,OAAQ,EAAR,CACE,IAAK,OACL,IAAK,QACH,OAAO,KACT,IAAK,QACH,OAAoB,OAAO,EAAa,YAAjC,UACQ,OAAO,EAAa,MAAjC,UACI,EAAe,GAAY,EAAa,KAAK,CAC9C,EAAe,GACd,EACD,CAAC,gBACD,EAAkB,EAAa,IAAI,EAAa,CACjD,IACI,EAAkB,CAClB,KAAM,QACN,SAAU,KACV,MAAO,EACP,MAAO,KACR,CACD,EAAa,IAAI,EAAc,EAAgB,EACjD,GACA,CAAE,KAAM,OAAQ,SAAU,KAAM,MAAO,EAAG,MAAO,KAAM,CAC7D,IAAK,OACH,GACmB,EAAa,MAA9B,cACa,OAAO,EAAa,MAAjC,UACa,OAAO,EAAa,YAAjC,SACA,CACA,EAAO,GAAY,EAAa,KAAK,CACrC,IAAI,EAAa,GACb,EACD,CAAC,gBACF,EAAe,EAAW,IAAI,EAAK,CAoCrC,GAnCA,IACI,EACA,EAAyB,eAAiB,EAC3C,EAAe,CACd,KAAM,aACN,SAAU,KACV,MAAO,EACP,MAAO,CAAE,QAAS,EAAG,QAAS,KAAM,CACrC,CACD,EAAW,IAAI,EAAM,EAAa,EACjC,EAAa,EAAyB,cACrC,GAA6B,EAAK,CACnC,GACC,CAAC,EAAW,KACV,EAAa,SAAW,EACzB,EAAa,MAAM,QAAU,GAChC,GAAgB,IAAI,EAAK,GACrB,EAAe,CACf,IAAK,UACL,GAAI,QACJ,KAAM,EAAa,KACnB,YAAa,EAAa,YAC1B,UAAW,EAAa,UACxB,MAAO,EAAa,MACpB,SAAU,EAAa,SACvB,eAAgB,EAAa,eAC9B,CACD,GAAgB,IAAI,EAAM,EAAa,CACvC,GACE,GACE,EACA,EACA,EACA,EAAa,MACd,GACH,GAAyB,IAAT,KAClB,MAAM,MAAM,EAAuB,IAAK,GAAG,CAAC,CAC9C,OAAO,EAET,GAAI,GAAyB,IAAT,KAClB,MAAM,MAAM,EAAuB,IAAK,GAAG,CAAC,CAC9C,OAAO,KACT,IAAK,SACH,MACG,GAAe,EAAa,MAC5B,EAAe,EAAa,IAChB,OAAO,GAApB,UACA,GACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACM,EAAe,GAAa,EAAa,CAC1C,EAAe,GACd,EACD,CAAC,iBACD,EAAkB,EAAa,IAAI,EAAa,CACjD,IACI,EAAkB,CAClB,KAAM,SACN,SAAU,KACV,MAAO,EACP,MAAO,KACR,CACD,EAAa,IAAI,EAAc,EAAgB,EACjD,GACA,CAAE,KAAM,OAAQ,SAAU,KAAM,MAAO,EAAG,MAAO,KAAM,CAE/D,QACE,MAAM,MAAM,EAAuB,IAAK,EAAK,CAAC,EAGpD,SAAS,GAAY,EAAM,CACzB,MAAO,SAAW,GAA+C,EAAK,CAAG,IAE3E,SAAS,GAA6B,EAAK,CACzC,MAAO,0BAA4B,EAAM,IAE3C,SAAS,GAA4B,EAAU,CAC7C,OAAO,EAAO,EAAE,CAAE,EAAU,CAC1B,kBAAmB,EAAS,WAC5B,WAAY,KACb,CAAC,CAEJ,SAAS,GAAkB,EAAe,EAAK,EAAc,EAAO,CAClE,EAAc,cAAc,mCAAqC,EAAM,IAAI,CACtE,EAAM,QAAU,GACf,EAAM,EAAc,cAAc,OAAO,CAC1C,EAAM,QAAU,EACjB,EAAI,iBAAiB,OAAQ,UAAY,CACvC,MAAQ,GAAM,SAAW,GACzB,CACF,EAAI,iBAAiB,QAAS,UAAY,CACxC,MAAQ,GAAM,SAAW,GACzB,CACF,GAAqB,EAAK,OAAQ,EAAa,CAC/C,EAAoB,EAAI,CACxB,EAAc,KAAK,YAAY,EAAI,EAEzC,SAAS,GAAa,EAAK,CACzB,MAAO,SAAW,GAA+C,EAAI,CAAG,KAE1E,SAAS,GAAyB,EAAK,CACrC,MAAO,gBAAkB,EAE3B,SAAS,GAAgB,EAAe,EAAU,EAAO,CAEvD,GADA,EAAS,QACI,EAAS,WAAlB,KACF,OAAQ,EAAS,KAAjB,CACE,IAAK,QACH,IAAI,EAAW,EAAc,cAC3B,qBACE,GAA+C,EAAM,KAAK,CAC1D,KACH,CACD,GAAI,EACF,MACG,GAAS,SAAW,EACrB,EAAoB,EAAS,CAC7B,EAEJ,IAAI,EAAa,EAAO,EAAE,CAAE,EAAO,CACjC,YAAa,EAAM,KACnB,kBAAmB,EAAM,WACzB,KAAM,KACN,WAAY,KACb,CAAC,CAOF,MANA,IAAY,EAAc,eAAiB,GAAe,cACxD,QACD,CACD,EAAoB,EAAS,CAC7B,GAAqB,EAAU,QAAS,EAAW,CACnD,GAAiB,EAAU,EAAM,WAAY,EAAc,CACnD,EAAS,SAAW,EAC9B,IAAK,aACH,EAAa,GAAY,EAAM,KAAK,CACpC,IAAI,EAAe,EAAc,cAC/B,GAA6B,EAAW,CACzC,CACD,GAAI,EACF,MACG,GAAS,MAAM,SAAW,EAC1B,EAAS,SAAW,EACrB,EAAoB,EAAa,CACjC,EAEJ,EAAW,GAA4B,EAAM,EAC5C,EAAa,GAAgB,IAAI,EAAW,GAC3C,GAA+B,EAAU,EAAW,CACtD,GACE,EAAc,eAAiB,GAC/B,cAAc,OAAO,CACvB,EAAoB,EAAa,CACjC,IAAI,EAAe,EAQnB,MAPA,GAAa,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CACvD,EAAa,OAAS,EACtB,EAAa,QAAU,GACvB,CACF,GAAqB,EAAc,OAAQ,EAAS,CACpD,EAAS,MAAM,SAAW,EAC1B,GAAiB,EAAc,EAAM,WAAY,EAAc,CACvD,EAAS,SAAW,EAC9B,IAAK,SAqBH,MApBA,GAAe,GAAa,EAAM,IAAI,EAEnC,EAAa,EAAc,cAC1B,GAAyB,EAAa,CACvC,GAGE,EAAS,SAAW,EACrB,EAAoB,EAAW,CAC/B,IAEJ,EAAW,GACN,EAAa,GAAgB,IAAI,EAAa,IAChD,EAAW,EAAO,EAAE,CAAE,EAAM,CAC3B,GAA2B,EAAU,EAAW,EACpD,EAAgB,EAAc,eAAiB,EAC/C,EAAa,EAAc,cAAc,SAAS,CAClD,EAAoB,EAAW,CAC/B,GAAqB,EAAY,OAAQ,EAAS,CAClD,EAAc,KAAK,YAAY,EAAW,CAClC,EAAS,SAAW,GAC9B,IAAK,OACH,OAAO,KACT,QACE,MAAM,MAAM,EAAuB,IAAK,EAAS,KAAK,CAAC,MAG1C,EAAS,OAA1B,cACE,EAAO,EAAS,MAAM,QAAU,KAC9B,EAAW,EAAS,SACrB,EAAS,MAAM,SAAW,EAC3B,GAAiB,EAAU,EAAM,WAAY,EAAc,EAC/D,OAAO,EAAS,SAElB,SAAS,GAAiB,EAAU,EAAY,EAAM,CACpD,IACE,IAAI,EAAQ,EAAK,iBACb,iEACD,CACD,EAAO,EAAM,OAAS,EAAM,EAAM,OAAS,GAAK,KAChD,EAAQ,EACR,EAAI,EACN,EAAI,EAAM,OACV,IACA,CACA,IAAI,EAAO,EAAM,GACjB,GAAI,EAAK,QAAQ,aAAe,EAAY,EAAQ,UAC3C,IAAU,EAAM,MAE3B,EACI,EAAM,WAAW,aAAa,EAAU,EAAM,YAAY,EACxD,EAAmB,EAAK,WAAX,EAAsB,EAAK,KAAO,EACjD,EAAW,aAAa,EAAU,EAAW,WAAW,EAE9D,SAAS,GAA+B,EAAiB,EAAc,CAElE,EAAgB,cAAc,EAAa,YAE3C,EAAgB,iBAAiB,EAAa,eACf,EAAgB,QAAQ,EAAa,MAEzE,SAAS,GAA2B,EAAa,EAAc,CAE1D,EAAY,cAAc,EAAa,YAEvC,EAAY,iBAAiB,EAAa,eAE1C,EAAY,YAAY,EAAa,UAE1C,IAAI,GAAY,KAChB,SAAS,GAA4B,EAAM,EAAc,EAAe,CACtE,GAAa,KAAT,KAAoB,CACtB,IAAI,EAAQ,IAAI,IACZ,EAAU,GAAY,IAAI,IAC9B,EAAO,IAAI,EAAe,EAAM,MAE/B,EAAS,GACP,EAAQ,EAAO,IAAI,EAAc,CAClC,IAAW,EAAQ,IAAI,IAAQ,EAAO,IAAI,EAAe,EAAM,EACnE,GAAI,EAAM,IAAI,EAAK,CAAE,OAAO,EAG5B,IAFA,EAAM,IAAI,EAAM,KAAK,CACrB,EAAgB,EAAc,qBAAqB,EAAK,CACnD,EAAS,EAAG,EAAS,EAAc,OAAQ,IAAU,CACxD,IAAI,EAAO,EAAc,GACzB,GACE,EACE,EAAK,KACL,EAAK,KACO,IAAX,QAAoC,EAAK,aAAa,MAAM,GAAzC,eAEW,EAAK,eAAtC,6BACA,CACA,IAAI,EAAU,EAAK,aAAa,EAAa,EAAI,GACjD,EAAU,EAAO,EACjB,IAAI,EAAW,EAAM,IAAI,EAAQ,CACjC,EAAW,EAAS,KAAK,EAAK,CAAG,EAAM,IAAI,EAAS,CAAC,EAAK,CAAC,EAG/D,OAAO,EAET,SAAS,GAAe,EAAe,EAAM,EAAU,CACrD,EAAgB,EAAc,eAAiB,EAC/C,EAAc,KAAK,aACjB,EACY,IAAZ,QAAmB,EAAc,cAAc,eAAe,CAAG,KAClE,CAEH,SAAS,GAAoB,EAAM,EAAO,EAAa,CACrD,GAAU,IAAN,GAA6B,EAAM,UAAd,KAAwB,MAAO,CAAC,EACzD,OAAQ,EAAR,CACE,IAAK,OACL,IAAK,QACH,MAAO,CAAC,EACV,IAAK,QACH,GACe,OAAO,EAAM,YAA1B,UACa,OAAO,EAAM,MAA1B,UACO,EAAM,OAAb,GAEA,MACF,MAAO,CAAC,EACV,IAAK,OACH,GACe,OAAO,EAAM,KAA1B,UACa,OAAO,EAAM,MAA1B,UACO,EAAM,OAAb,IACA,EAAM,QACN,EAAM,QAEN,MACF,OAAQ,EAAM,IAAd,CACE,IAAK,aACH,MACG,GAAO,EAAM,SACD,OAAO,EAAM,YAA1B,UAAgD,GAAR,KAE5C,QACE,MAAO,CAAC,EAEd,IAAK,SACH,GACE,EAAM,OACS,OAAO,EAAM,OAA5B,YACa,OAAO,EAAM,OAA1B,UACA,CAAC,EAAM,QACP,CAAC,EAAM,SACP,EAAM,KACO,OAAO,EAAM,KAA1B,SAEA,MAAO,CAAC,EAEd,MAAO,CAAC,EAEV,SAAS,GAAgB,EAAU,CACjC,MAAO,EAAiB,EAAS,OAA1B,cAAkC,EAAO,EAAS,MAAM,QAAU,IAI3E,SAAS,GAAgB,EAAO,EAAe,EAAU,EAAO,CAC9D,GACmB,EAAS,OAA1B,eACc,OAAO,EAAM,OAA1B,UACC,CAAC,IAAM,WAAW,EAAM,MAAM,CAAC,UACjC,EAAO,EAAS,MAAM,QAAU,GAChC,CACA,GAAa,EAAS,WAAlB,KAA4B,CAC9B,IAAI,EAAM,GAAY,EAAM,KAAK,CAC/B,EAAW,EAAc,cACvB,GAA6B,EAAI,CAClC,CACH,GAAI,EAAU,CACZ,EAAgB,EAAS,GAEV,OAAO,GAApB,UADO,GAEQ,OAAO,EAAc,MAApC,aACC,EAAM,QACN,EAAQ,GAAY,KAAK,EAAM,CAChC,EAAc,KAAK,EAAO,EAAM,EAClC,EAAS,MAAM,SAAW,EAC1B,EAAS,SAAW,EACpB,EAAoB,EAAS,CAC7B,OAEF,EAAW,EAAc,eAAiB,EAC1C,EAAQ,GAA4B,EAAM,EACzC,EAAM,GAAgB,IAAI,EAAI,GAC7B,GAA+B,EAAO,EAAI,CAC5C,EAAW,EAAS,cAAc,OAAO,CACzC,EAAoB,EAAS,CAC7B,IAAI,EAAe,EACnB,EAAa,GAAK,IAAI,QAAQ,SAAU,EAAS,EAAQ,CACvD,EAAa,OAAS,EACtB,EAAa,QAAU,GACvB,CACF,GAAqB,EAAU,OAAQ,EAAM,CAC7C,EAAS,SAAW,EAEb,EAAM,cAAf,OAA+B,EAAM,YAAc,IAAI,KACvD,EAAM,YAAY,IAAI,EAAU,EAAc,EAC7C,EAAgB,EAAS,MAAM,UAC9B,EAAO,EAAS,MAAM,QAAU,KAC/B,EAAM,QACN,EAAW,GAAY,KAAK,EAAM,CACnC,EAAc,iBAAiB,OAAQ,EAAS,CAChD,EAAc,iBAAiB,QAAS,EAAS,GAGvD,IAAI,GAA4B,EAChC,SAAS,GAAuB,EAAO,EAAe,CAIpD,OAHA,EAAM,aACE,EAAM,QAAZ,GACA,GAA2B,EAAO,EAAM,YAAY,CAC/C,EAAI,EAAM,OAAS,EAAI,EAAM,SAChC,SAAU,EAAQ,CAChB,IAAI,EAAkB,WAAW,UAAY,CAG3C,GAFA,EAAM,aACJ,GAA2B,EAAO,EAAM,YAAY,CAClD,EAAM,UAAW,CACnB,IAAI,EAAY,EAAM,UACtB,EAAM,UAAY,KAClB,GAAW,GAEZ,IAAM,EAAc,CACvB,EAAI,EAAM,UACF,KAAN,IACC,GAA4B,MAAQ,IAAmB,EAC1D,IAAI,EAAW,WACb,UAAY,CAEV,GADA,EAAM,iBAAmB,CAAC,EAElB,EAAM,QAAZ,IACC,EAAM,aACL,GAA2B,EAAO,EAAM,YAAY,CACtD,EAAM,WACN,CACA,IAAI,EAAY,EAAM,UACtB,EAAM,UAAY,KAClB,GAAW,IAGd,EAAM,SAAW,GAA4B,GAAK,KACjD,EACH,CAED,MADA,GAAM,UAAY,EACX,UAAY,CACjB,EAAM,UAAY,KAClB,aAAa,EAAgB,CAC7B,aAAa,EAAS,GAG1B,KAEN,SAAS,IAAc,CAErB,GADA,KAAK,QACK,KAAK,QAAX,IAA2B,KAAK,WAAX,GAAuB,CAAC,KAAK,sBAChD,KAAK,YAAa,GAA2B,KAAM,KAAK,YAAY,SAC/D,KAAK,UAAW,CACvB,IAAI,EAAY,KAAK,UACrB,KAAK,UAAY,KACjB,GAAW,GAGjB,IAAI,GAAoB,KACxB,SAAS,GAA2B,EAAO,EAAW,CACpD,EAAM,YAAc,KACX,EAAM,YAAf,OACG,EAAM,QACN,GAAoB,IAAI,IACzB,EAAU,QAAQ,GAA0B,EAAM,CACjD,GAAoB,KACrB,GAAY,KAAK,EAAM,EAE3B,SAAS,GAAyB,EAAM,EAAU,CAChD,GAAI,EAAE,EAAS,MAAM,QAAU,GAAI,CACjC,IAAI,EAAc,GAAkB,IAAI,EAAK,CAC7C,GAAI,EAAa,IAAI,EAAO,EAAY,IAAI,KAAK,KAC5C,CACH,EAAc,IAAI,IAClB,GAAkB,IAAI,EAAM,EAAY,CACxC,IACE,IAAI,EAAQ,EAAK,iBACb,+CACD,CACD,EAAI,EACN,EAAI,EAAM,OACV,IACA,CACA,IAAI,EAAO,EAAM,IAEJ,EAAK,WAAhB,QACc,EAAK,aAAa,QAAQ,GAAxC,aAEA,EAAY,IAAI,EAAK,QAAQ,WAAY,EAAK,CAAG,EAAO,GAE5D,GAAQ,EAAY,IAAI,KAAM,EAAK,CAErC,EAAQ,EAAS,SACjB,EAAO,EAAM,aAAa,kBAAkB,CAC5C,EAAI,EAAY,IAAI,EAAK,EAAI,EAC7B,IAAM,GAAQ,EAAY,IAAI,KAAM,EAAM,CAC1C,EAAY,IAAI,EAAM,EAAM,CAC5B,KAAK,QACL,EAAO,GAAY,KAAK,KAAK,CAC7B,EAAM,iBAAiB,OAAQ,EAAK,CACpC,EAAM,iBAAiB,QAAS,EAAK,CACrC,EACI,EAAE,WAAW,aAAa,EAAO,EAAE,YAAY,EAC7C,EAAa,EAAK,WAAX,EAAsB,EAAK,KAAO,EAC3C,EAAK,aAAa,EAAO,EAAK,WAAW,EAC7C,EAAS,MAAM,SAAW,GAG9B,IAAI,GAAwB,CAC1B,SAAU,EACV,SAAU,KACV,SAAU,KACV,cAAe,EACf,eAAgB,EAChB,aAAc,EACf,CACD,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,KAAK,IAAM,EACX,KAAK,cAAgB,EACrB,KAAK,UAAY,KAAK,QAAU,KAAK,gBAAkB,KACvD,KAAK,cAAgB,GACrB,KAAK,aACH,KAAK,KACL,KAAK,eACL,KAAK,QACL,KAAK,oBACH,KACJ,KAAK,iBAAmB,EACxB,KAAK,gBAAkB,GAAc,GAAG,CACxC,KAAK,eACH,KAAK,oBACL,KAAK,2BACL,KAAK,aACL,KAAK,UACL,KAAK,YACL,KAAK,eACL,KAAK,aACH,EACJ,KAAK,cAAgB,GAAc,EAAE,CACrC,KAAK,cAAgB,GAAc,KAAK,CACxC,KAAK,iBAAmB,EACxB,KAAK,gBAAkB,EACvB,KAAK,cAAgB,EACrB,KAAK,mBAAqB,EAC1B,KAAK,YAAc,KACnB,KAAK,iBAAmB,EACxB,KAAK,UAAY,EACjB,KAAK,sBAAwB,IAAI,IAEnC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CA2BA,MA1BA,GAAgB,IAAI,GAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACD,EAAM,EACN,CAAC,IAAM,IAAiB,GAAO,IAC/B,EAAe,GAAqB,EAAG,KAAM,KAAM,EAAI,CACvD,EAAc,QAAU,EACxB,EAAa,UAAY,EACzB,EAAM,IAAa,CACnB,EAAI,WACJ,EAAc,YAAc,EAC5B,EAAI,WACJ,EAAa,cAAgB,CAC3B,QAAS,EACT,aAAc,EACd,MAAO,EACR,CACD,GAAsB,EAAa,CAC5B,EAET,SAAS,GAAqB,EAAiB,CAG7C,OAFK,GACL,EAAkB,GACX,GAFsB,GAI/B,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,CACA,EAAkB,GAAqB,EAAgB,CAC9C,EAAU,UAAnB,KACK,EAAU,QAAU,EACpB,EAAU,eAAiB,EAChC,EAAY,GAAa,EAAK,CAC9B,EAAU,QAAU,CAAW,UAAS,CACxC,EAAsB,IAAX,IAAK,GAAiB,KAAO,EAC/B,IAAT,OAAsB,EAAU,SAAW,GAC3C,EAAU,GAAc,EAAW,EAAW,EAAK,CAC1C,IAAT,OACG,GAAsB,EAAS,EAAW,EAAK,CAChD,GAAoB,EAAS,EAAW,EAAK,EAEjD,SAAS,GAAkB,EAAO,EAAW,CAE3C,GADA,EAAQ,EAAM,cACD,IAAT,MAA2B,EAAM,aAAf,KAA2B,CAC/C,IAAI,EAAI,EAAM,UACd,EAAM,UAAkB,IAAN,GAAW,EAAI,EAAY,EAAI,GAGrD,SAAS,GAA2B,EAAO,EAAW,CACpD,GAAkB,EAAO,EAAU,EAClC,EAAQ,EAAM,YAAc,GAAkB,EAAO,EAAU,CAElE,SAAS,GAA2B,EAAO,CACzC,GAAW,EAAM,MAAb,IAA2B,EAAM,MAAb,GAAkB,CACxC,IAAI,EAAO,GAA+B,EAAO,SAAS,CACjD,IAAT,MAAiB,GAAsB,EAAM,EAAO,SAAS,CAC7D,GAA2B,EAAO,SAAS,EAG/C,SAAS,GAAkC,EAAO,CAChD,GAAW,EAAM,MAAb,IAA2B,EAAM,MAAb,GAAkB,CACxC,IAAI,EAAO,IAAmB,CAC9B,EAAO,GAAgC,EAAK,CAC5C,IAAI,EAAO,GAA+B,EAAO,EAAK,CAC7C,IAAT,MAAiB,GAAsB,EAAM,EAAO,EAAK,CACzD,GAA2B,EAAO,EAAK,EAG3C,IAAI,GAAW,CAAC,EAChB,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,IAAI,EAAiB,EAAqB,EAC1C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,GAAI,CACD,EAAwB,EAAI,EAC3B,GAAc,EAAc,EAAkB,EAAW,EAAY,QAC/D,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,GAGhC,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,IAAI,EAAiB,EAAqB,EAC1C,EAAqB,EAAI,KACzB,IAAI,EAAmB,EAAwB,EAC/C,GAAI,CACD,EAAwB,EAAI,EAC3B,GAAc,EAAc,EAAkB,EAAW,EAAY,QAC/D,CACP,EAAwB,EAAI,EAC1B,EAAqB,EAAI,GAGhC,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAI,GAAU,CACZ,IAAI,EAAY,GAA0B,EAAY,CACtD,GAAa,IAAT,KACF,GACE,EACA,EACA,EACA,GACA,EACD,CACC,GAAuB,EAAc,EAAY,SAEnD,GACE,EACA,EACA,EACA,EACA,EACD,CAED,EAAY,iBAAiB,SAE5B,GAAuB,EAAc,EAAY,CAClD,EAAmB,GACjB,GAAK,GAAyB,QAAQ,EAAa,CACrD,CACA,KAAgB,IAAT,MAAsB,CAC3B,IAAI,EAAQ,GAAoB,EAAU,CAC1C,GAAa,IAAT,KACF,OAAQ,EAAM,IAAd,CACE,IAAK,GAEH,GADA,EAAQ,EAAM,UACV,EAAM,QAAQ,cAAc,aAAc,CAC5C,IAAI,EAAQ,GAAwB,EAAM,aAAa,CACvD,GAAU,IAAN,EAAa,CACf,IAAI,EAAO,EAEX,IADA,EAAK,cAAgB,EAChB,EAAK,gBAAkB,EAAG,GAAS,CACtC,IAAI,EAAO,GAAM,GAAK,GAAM,EAAM,CAClC,EAAK,cAAc,IAAM,EACzB,GAAS,CAAC,EAEZ,GAAsB,EAAM,CAC5B,EAAO,EAAmB,KACtB,GAAqC,IAAK,CAAG,IAC/C,GAA8B,EAAG,CAAC,EAAE,GAG1C,MACF,IAAK,IACL,IAAK,IACF,EAAO,GAA+B,EAAO,EAAE,CACrC,IAAT,MAAiB,GAAsB,EAAM,EAAO,EAAE,CACtD,IAAiB,CACjB,GAA2B,EAAO,EAAE,CAW5C,GATA,EAAQ,GAA0B,EAAY,CACrC,IAAT,MACE,GACE,EACA,EACA,EACA,GACA,EACD,CACC,IAAU,EAAW,MACzB,EAAY,EAEL,IAAT,MAAsB,EAAY,iBAAiB,MAEnD,GACE,EACA,EACA,EACA,KACA,EACD,EAGP,SAAS,GAA0B,EAAa,CAE9C,MADA,GAAc,GAAe,EAAY,CAClC,GAA2B,EAAY,CAEhD,IAAI,GAAoB,KACxB,SAAS,GAA2B,EAAY,CAG9C,GAFA,GAAoB,KACpB,EAAa,GAA2B,EAAW,CACtC,IAAT,KAAqB,CACvB,IAAI,EAAiB,EAAuB,EAAW,CACvD,GAAa,IAAT,KAAyB,EAAa,SACrC,CACH,IAAI,EAAM,EAAe,IACzB,GAAW,IAAP,GAAY,CAEd,GADA,EAAa,EAA6B,EAAe,CAC5C,IAAT,KAAqB,OAAO,EAChC,EAAa,aACG,IAAP,GAAY,CAErB,GADA,EAAa,EAA6B,EAAe,CAC5C,IAAT,KAAqB,OAAO,EAChC,EAAa,aACE,IAAN,EAAW,CACpB,GAAI,EAAe,UAAU,QAAQ,cAAc,aACjD,OAAa,EAAe,MAArB,EACH,EAAe,UAAU,cACzB,KACN,EAAa,UACR,IAAmB,IAAe,EAAa,OAI1D,MADA,IAAoB,EACb,KAET,SAAS,GAAiB,EAAc,CACtC,OAAQ,EAAR,CACE,IAAK,eACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,OACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,SACL,IAAK,kBACL,IAAK,YACL,IAAK,mBACL,IAAK,iBACL,IAAK,oBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,mBACL,IAAK,QACL,IAAK,aACL,IAAK,WACL,IAAK,SACL,IAAK,cACH,MAAO,GACT,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACH,MAAO,GACT,IAAK,UACH,OAAQ,IAAyB,CAAjC,CACE,KAAK,GACH,MAAO,GACT,KAAK,GACH,MAAO,GACT,KAAK,GACL,KAAK,GACH,MAAO,IACT,KAAK,GACH,MAAO,WACT,QACE,MAAO,IAEb,QACE,MAAO,KAGb,IAAI,GAA4B,CAAC,EAC/B,GAAc,KACd,GAAa,KACb,GAAc,KACd,GAAiB,IAAI,IACrB,GAAwB,IAAI,IAC5B,GAAiC,EAAE,CACnC,GACE,sPAAsP,MACpP,IACD,CACL,SAAS,GAAuB,EAAc,EAAa,CACzD,OAAQ,EAAR,CACE,IAAK,UACL,IAAK,WACH,GAAc,KACd,MACF,IAAK,YACL,IAAK,YACH,GAAa,KACb,MACF,IAAK,YACL,IAAK,WACH,GAAc,KACd,MACF,IAAK,cACL,IAAK,aACH,GAAe,OAAO,EAAY,UAAU,CAC5C,MACF,IAAK,oBACL,IAAK,qBACH,GAAsB,OAAO,EAAY,UAAU,EAGzD,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,CAuBA,OArBW,IAAT,MACA,EAAoB,cAAgB,GAGjC,EAAsB,CACV,YACG,eACI,mBACL,cACb,iBAAkB,CAAC,EAAgB,CACpC,CACQ,IAAT,OACI,EAAY,GAAoB,EAAU,CACnC,IAAT,MAAsB,GAA2B,EAAU,EAC7D,IAEJ,EAAoB,kBAAoB,EACxC,EAAY,EAAoB,iBACvB,IAAT,MACS,EAAU,QAAQ,EAAgB,GAAzC,IACA,EAAU,KAAK,EAAgB,CAC1B,GAET,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,OAAQ,EAAR,CACE,IAAK,UACH,MACG,IAAc,GACb,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,YACH,MACG,IAAa,GACZ,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,YACH,MACG,IAAc,GACb,GACA,EACA,EACA,EACA,EACA,EACD,CACD,CAAC,EAEL,IAAK,cACH,IAAI,EAAY,EAAY,UAY5B,OAXA,GAAe,IACb,EACA,GACE,GAAe,IAAI,EAAU,EAAI,KACjC,EACA,EACA,EACA,EACA,EACD,CACF,CACM,CAAC,EACV,IAAK,oBACH,MACG,GAAY,EAAY,UACzB,GAAsB,IACpB,EACA,GACE,GAAsB,IAAI,EAAU,EAAI,KACxC,EACA,EACA,EACA,EACA,EACD,CACF,CACD,CAAC,EAGP,MAAO,CAAC,EAEV,SAAS,GAA+B,EAAc,CACpD,IAAI,EAAa,GAA2B,EAAa,OAAO,CAChE,GAAa,IAAT,KAAqB,CACvB,IAAI,EAAiB,EAAuB,EAAW,CACvD,GAAa,IAAT,SACI,EAAa,EAAe,IAAa,IAAP,OAElC,EAAa,EAA6B,EAAe,CAClD,IAAT,KACA,CACA,EAAa,UAAY,EACzB,GAAgB,EAAa,SAAU,UAAY,CACjD,GAAkC,EAAe,EACjD,CACF,gBAEc,IAAP,OAEL,EAAa,EAA6B,EAAe,CAClD,IAAT,KACA,CACA,EAAa,UAAY,EACzB,GAAgB,EAAa,SAAU,UAAY,CACjD,GAAkC,EAAe,EACjD,CACF,gBAGI,IAAN,GACA,EAAe,UAAU,QAAQ,cAAc,aAC/C,CACA,EAAa,UACL,EAAe,MAArB,EACI,EAAe,UAAU,cACzB,KACN,SAGN,EAAa,UAAY,KAE3B,SAAS,GAAmC,EAAa,CACvD,GAAa,EAAY,YAArB,KAAgC,MAAO,CAAC,EAC5C,IACE,IAAI,EAAmB,EAAY,iBACnC,EAAI,EAAiB,QAErB,CACA,IAAI,EAAgB,GAA0B,EAAY,YAAY,CACtE,GAAa,IAAT,KAAwB,CAC1B,EAAgB,EAAY,YAC5B,IAAI,EAAmB,IAAI,EAAc,YACvC,EAAc,KACd,EACD,CACD,GAAwB,EACxB,EAAc,OAAO,cAAc,EAAiB,CACpD,GAAwB,UAExB,MACG,GAAmB,GAAoB,EAAc,CAC7C,IAAT,MACE,GAA2B,EAAiB,CAC7C,EAAY,UAAY,EACzB,CAAC,EAEL,EAAiB,OAAO,CAE1B,MAAO,CAAC,EAEV,SAAS,GAAwC,EAAa,EAAK,EAAK,CACtE,GAAmC,EAAY,EAAI,EAAI,OAAO,EAAI,CAEpE,SAAS,IAAwB,CAC/B,GAA4B,CAAC,EACpB,KAAT,MACE,GAAmC,GAAY,GAC9C,GAAc,MACR,KAAT,MACE,GAAmC,GAAW,GAC7C,GAAa,MACP,KAAT,MACE,GAAmC,GAAY,GAC9C,GAAc,MACjB,GAAe,QAAQ,GAAwC,CAC/D,GAAsB,QAAQ,GAAwC,CAExE,SAAS,GAA4B,EAAa,EAAW,CAC3D,EAAY,YAAc,IACtB,EAAY,UAAY,KAC1B,KACI,GAA4B,CAAC,EAC/B,EAAU,0BACR,EAAU,wBACV,GACD,GAEP,IAAI,GAA2B,KAC/B,SAAS,GAA4B,EAAoB,CACvD,KAA6B,IACzB,GAA2B,EAC7B,EAAU,0BACR,EAAU,wBACV,UAAY,CACV,KAA6B,IAC1B,GAA2B,MAC9B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAmB,OAAQ,GAAK,EAAG,CACrD,IAAI,EAAO,EAAmB,GAC5B,EAAoB,EAAmB,EAAI,GAC3C,EAAW,EAAmB,EAAI,GACpC,GAAmB,OAAO,GAAtB,WACF,IAAa,GAA2B,GAAqB,EAAK,GAA9D,KACF,SACG,MACP,IAAI,EAAW,GAAoB,EAAK,CAC/B,IAAT,OACG,EAAmB,OAAO,EAAG,EAAE,CAC/B,GAAK,EACN,GACE,EACA,CACE,QAAS,CAAC,EACV,KAAM,EACN,OAAQ,EAAK,OACb,OAAQ,EACT,CACD,EACA,EACD,IAGR,EAEL,SAAS,GAAiB,EAAW,CACnC,SAAS,EAAQ,EAAa,CAC5B,OAAO,GAA4B,EAAa,EAAU,CAEnD,KAAT,MAAwB,GAA4B,GAAa,EAAU,CAClE,KAAT,MAAuB,GAA4B,GAAY,EAAU,CAChE,KAAT,MAAwB,GAA4B,GAAa,EAAU,CAC3E,GAAe,QAAQ,EAAQ,CAC/B,GAAsB,QAAQ,EAAQ,CACtC,IAAK,IAAI,EAAI,EAAG,EAAI,GAA+B,OAAQ,IAAK,CAC9D,IAAI,EAAe,GAA+B,GAClD,EAAa,YAAc,IAAc,EAAa,UAAY,MAEpE,KAEE,EAAI,GAA+B,SACjC,EAAI,GAA+B,GAAc,EAAE,YAAX,OAG1C,GAA+B,EAAE,CACtB,EAAE,YAAX,MAAwB,GAA+B,OAAO,CAElE,GADA,GAAK,EAAU,eAAiB,GAAW,kBAC/B,GAAR,KACF,IAAK,EAAe,EAAG,EAAe,EAAE,OAAQ,GAAgB,EAAG,CACjE,IAAI,EAAO,EAAE,GACX,EAAoB,EAAE,EAAe,GACrC,EAAY,EAAK,KAAqB,KACxC,GAAmB,OAAO,GAAtB,WACF,GAAa,GAA4B,EAAE,SACpC,EAAW,CAClB,IAAI,EAAS,KACb,GAAI,GAAqB,EAAkB,aAAa,aAAa,KAE/D,EAAO,EACR,EAAY,EAAkB,KAAqB,KAEpD,EAAS,EAAU,mBAEN,GAA2B,EAAK,GAAzC,KAA2C,cAE9C,EAAS,EAAU,OACT,OAAO,GAAtB,WACK,EAAE,EAAe,GAAK,GACtB,EAAE,OAAO,EAAc,EAAE,CAAG,GAAgB,GACjD,GAA4B,EAAE,GAItC,SAAS,IAAsC,CAC7C,SAAS,EAAe,EAAO,CAC7B,EAAM,cACmB,EAAM,OAA7B,oBACA,EAAM,UAAU,CACd,QAAS,UAAY,CACnB,OAAO,IAAI,QAAQ,SAAU,EAAS,CACpC,MAAQ,GAAiB,GACzB,EAEJ,WAAY,SACZ,OAAQ,SACT,CAAC,CAEN,SAAS,GAAyB,CACvB,IAAT,OAA4B,GAAgB,CAAG,EAAiB,MAChE,GAAe,WAAW,EAAqB,GAAG,CAEpD,SAAS,GAAsB,CAC7B,GAAI,CAAC,GAAe,CAAC,WAAW,WAAY,CAC1C,IAAI,EAAe,WAAW,aAC9B,GACU,EAAa,KAArB,MACA,WAAW,SAAS,EAAa,IAAK,CACpC,MAAO,EAAa,UAAU,CAC9B,KAAM,mBACN,QAAS,UACV,CAAC,EAGR,GAAiB,OAAO,YAApB,SAAgC,CAClC,IAAI,EAAc,CAAC,EACjB,EAAiB,KAKnB,OAJA,WAAW,iBAAiB,WAAY,EAAe,CACvD,WAAW,iBAAiB,kBAAmB,EAAuB,CACtE,WAAW,iBAAiB,gBAAiB,EAAuB,CACpE,WAAW,EAAqB,IAAI,CAC7B,UAAY,CACjB,EAAc,CAAC,EACf,WAAW,oBAAoB,WAAY,EAAe,CAC1D,WAAW,oBAAoB,kBAAmB,EAAuB,CACzE,WAAW,oBAAoB,gBAAiB,EAAuB,CAC9D,IAAT,OAA4B,GAAgB,CAAG,EAAiB,QAItE,SAAS,GAAa,EAAc,CAClC,KAAK,cAAgB,EAEvB,GAAsB,UAAU,OAAS,GAAa,UAAU,OAC9D,SAAU,EAAU,CAClB,IAAI,EAAO,KAAK,cAChB,GAAa,IAAT,KAAe,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC3D,IAAI,EAAU,EAAK,QAEnB,GAAoB,EADX,IACwB,CAAE,EAAU,EAAM,KAAM,KAAK,EAElE,GAAsB,UAAU,QAAU,GAAa,UAAU,QAC/D,UAAY,CACV,IAAI,EAAO,KAAK,cAChB,GAAa,IAAT,KAAe,CACjB,KAAK,cAAgB,KACrB,IAAI,EAAY,EAAK,cACrB,GAAoB,EAAK,QAAS,EAAG,KAAM,EAAM,KAAM,KAAK,CAC5D,IAAiB,CACjB,EAAU,IAAgC,OAGhD,SAAS,GAAsB,EAAc,CAC3C,KAAK,cAAgB,EAEvB,GAAsB,UAAU,2BAA6B,SAAU,EAAQ,CAC7E,GAAI,EAAQ,CACV,IAAI,EAAiB,IAAuB,CAC5C,EAAS,CAAE,UAAW,KAAc,SAAQ,SAAU,EAAgB,CACtE,IACE,IAAI,EAAI,EACR,EAAI,GAA+B,QAC7B,IAAN,GACA,EAAiB,GAA+B,GAAG,SACnD,KAEF,GAA+B,OAAO,EAAG,EAAG,EAAO,CAC7C,IAAN,GAAW,GAA+B,EAAO,GAGrD,IAAI,GAAmD,EAAM,QAC7D,GAEE,KADA,SAGA,MAAM,MACJ,EACE,IACA,GACA,SACD,CACF,CACH,EAAwB,YAAc,SAAU,EAAoB,CAClE,IAAI,EAAQ,EAAmB,gBAC/B,GAAe,IAAX,IAAK,GAIP,MAHmB,OAAO,EAAmB,QAAzC,WACI,MAAM,EAAuB,IAAI,CAAC,EAC1C,EAAqB,OAAO,KAAK,EAAmB,CAAC,KAAK,IAAI,CACxD,MAAM,EAAuB,IAAK,EAAmB,CAAC,EAS9D,MAPA,GAAqB,EAA8B,EAAM,CACzD,EACW,IAAT,KAEI,KADA,EAAyB,EAAmB,CAElD,EACW,IAAT,KAA8B,KAAO,EAAmB,UACnD,GAET,IAAI,GAA+B,CACjC,WAAY,EACZ,QAAS,SACT,oBAAqB,YACrB,qBAAsB,EACtB,kBAAmB,SACpB,CACD,GAAoB,OAAO,+BAAvB,IAAuD,CACzD,IAAI,GAA0B,+BAC9B,GACE,CAAC,GAAwB,YACzB,GAAwB,cAExB,GAAI,CACD,GAAa,GAAwB,OACpC,GACD,CACE,GAAe,QACN,GAElB,EAAQ,WAAa,SAAU,EAAW,EAAS,CACjD,GAAI,CAAC,EAAiB,EAAU,CAAE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1E,IAAI,EAAe,CAAC,EAClB,EAAmB,GACnB,EAAkB,GAClB,EAAgB,GAChB,EAAqB,GA2BvB,OA1BS,GAAT,OAEG,CAAC,IAAM,EAAQ,sBAAwB,EAAe,CAAC,GAC7C,EAAQ,mBAAnB,IAAK,KACF,EAAmB,EAAQ,kBACnB,EAAQ,kBAAnB,IAAK,KACF,EAAkB,EAAQ,iBAClB,EAAQ,gBAAnB,IAAK,KAAgC,EAAgB,EAAQ,eAClD,EAAQ,qBAAnB,IAAK,KACF,EAAqB,EAAQ,qBAClC,EAAU,GACR,EACA,EACA,CAAC,EACD,KACA,KACA,EACA,EACA,KACA,EACA,EACA,EACA,GACD,CACD,EAAU,IAAgC,EAAQ,QAClD,GAA2B,EAAU,CAC9B,IAAI,GAAa,EAAQ,mBC5nflC,SAAS,GAAW,CAGhB,YAAO,+BAAmC,KAC1C,OAAO,+BAA+B,UAAa,YAcrD,GAAI,CAEF,+BAA+B,SAAS,EAAS,OAC1C,EAAK,CAGZ,QAAQ,MAAM,EAAI,EAOpB,GAAU,CACV,EAAO,gBClCL,GAAW,EASf,SAAgB,GAAkB,EAAS,YAAa,CACtD,IAAM,EAAS,WAAW,OAC1B,GAAI,OAAO,GAAQ,YAAe,WAChC,MAAO,GAAG,EAAO,GAAG,EAAO,YAAY,GAEzC,GAAI,OAAO,GAAQ,iBAAoB,WAAY,CACjD,IAAM,EAAS,IAAI,YAAY,EAAE,CAEjC,OADA,EAAO,gBAAgB,EAAO,CACvB,GAAG,EAAO,GAAG,MAAM,KAAK,EAAS,GAAU,EAAM,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CAAC,KAAK,GAAG,GAGjG,MADA,IAAY,GAAW,IAAO,EACvB,GAAG,EAAO,GAAG,KAAK,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,GAAS,SAAS,GAAG,CAAC,GAAG,KAAK,QAAQ,CAClF,SAAS,GAAG,CACZ,MAAM,EAAE,GCwBb,IAAa,GAA6B,2BAE7B,GAA0B,OAAO,OAAO,CACnD,aAAc,sCACd,KAAM,8BACP,CAAC,CAGW,GAAwB,wBAExB,GAA6B,+BAE7B,GAAkB,OAAO,OAAO,CAC3C,OAAQ,SACR,QAAS,UACT,QAAS,UACT,SAAU,WACV,KAAM,OACN,QAAS,UACT,MAAO,QACR,CAAC,CAEuC,OAAO,OAAO,CAAC,UAAW,YAAY,CAAC,CAEhF,IAAa,GAAiC,OAAO,OAAO,CAC1D,WACA,cACA,eACA,aACA,cACA,eACA,gBACA,iBACD,CAAC,CAEW,GAAmC,OAAO,OAAO,CAC5D,GAAG,GACH,eAAgB,iBAChB,cACA,gBACA,uBACA,yBACA,aACA,uBAAwB,qBAAsB,wBAC9C,wBAAyB,uBAAwB,wBACjD,8BAA+B,8BAA+B,8BAC9D,uBACA,aAAc,aAAc,YAAa,iBAAkB,gBAAiB,cAAe,mBAC3F,gBACA,kBACA,iBACA,aACA,eACA,gBACA,gBACA,eACA,iBACA,iBACA,eACA,YAAa,aAAc,aAAc,WAAY,cAAe,WAAY,WAAY,YAAa,iBAAkB,iBAAkB,qBAC9I,CAAC,CAIW,GAA4B,OAAO,OAAO,CACrD,GAAG,GACH,kBACA,kBACA,gBACD,CAAC,CAEW,GAAsB,sBACtB,GAAwB,yBAE/B,GAAgB,IAAI,IAAI,GAA0B,CAElD,GAA+B,IAAI,IAAI,CAC3C,+CACA,oCACA,oCACA,iDACA,2CACA,iEACA,4CACA,6CACA,0CACA,wDACA,kDACD,CAAC,CAEF,SAAgB,GAA4B,EAAgB,CAC1D,GAAI,OAAO,GAAU,SAAU,MAAO,GACtC,IAAM,EAAO,EAAM,MAAM,CAMzB,MADA,GAJI,IAAS,IACT,GAA6B,IAAI,EAAK,EACtC,oDAAoD,KAAK,EAAK,EAC9D,sDAAsD,KAAK,EAAK,EAChE,yBAAyB,KAAK,EAAK,EAIzC,SAAS,GAAsB,EAAc,EAA8B,EAA0B,CACnG,IAAM,EAAkB,EAAE,CAC1B,IAAK,IAAM,IAAS,CAAC,EAAU,EAAK,CAAE,CACpC,GAAI,OAAO,GAAU,SAAU,SAC/B,IAAM,EAAO,EAAM,MAAM,CACrB,CAAC,GAAQ,EAAM,SAAS,EAAK,EACjC,EAAM,KAAK,EAAK,CAElB,IAAM,EAAO,EAAM,OAAQ,GAAS,CAAC,GAA4B,EAAK,CAAC,CACjE,EAAS,EAAK,OAAS,EAAI,EAAO,EACxC,OAAO,EAAO,OAAS,EAAI,GAAG,EAAK,IAAI,EAAO,KAAK,MAAM,GAAK,OAAO,GAAQ,uBAAuB,CAGtG,IAAa,GAAb,cAAwC,KAAM,CAK5C,YAAY,EAAc,EAA8B,EAA0B,EAAkC,EAAE,CAAE,CACtH,MAAM,GAAsB,EAAM,EAAU,EAAK,CAAC,CAClD,KAAK,KAAO,qBACZ,KAAK,KAAO,EACZ,KAAK,SAAW,EAChB,KAAK,KAAO,EACZ,KAAK,OAAS,IAIlB,SAAgB,GAAe,EAAc,EAA8B,EAA0B,EAAkC,EAAE,CAAE,CACzI,OAAO,IAAI,GAAmB,EAAM,EAAU,EAAM,EAAO,CAG7D,SAAgB,GAAuB,EAAgB,EAAe,CACpE,GAAI,OAAO,GAAU,UAAY,EAAM,MAAM,GAAK,GAChD,MAAM,GACJ,8BACA,GAAG,EAAM,2BACT,uBAAuB,EAAM,GAC7B,CAAE,QAAO,CACV,CAEH,OAAO,EAGT,SAAgB,GAAuB,EAAgB,EAAe,CACpE,GAAsB,OAAO,GAAU,WAAnC,GAA+C,MAAM,QAAQ,EAAM,CACrE,MAAM,GACJ,8BACA,GAAG,EAAM,kBACT,yBAAyB,EAAM,GAC/B,CAAE,QAAO,CACV,CAEH,OAAO,EAeT,SAAgB,GAAuB,EAAa,CAElD,OADI,IAAU,OAAkB,EACzB,KAAK,MAAM,KAAK,UAAU,EAAM,CAAC,CAG1C,SAAgB,GAAc,EAAe,EAAgB,CAG3D,OAFI,IAAS,EAAc,GACvB,GAAQ,MAAQ,GAAS,KAAa,IAAS,EAC5C,KAAK,UAAU,EAAK,GAAK,KAAK,UAAU,EAAM,CAGvD,SAAS,GAAgB,EAAyB,CAChD,GAAI,MAAM,QAAQ,EAAM,CAAE,OAAO,EAAM,IAAI,GAAgB,CAC3D,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,OAAO,EAChD,IAAM,EAAgC,EAAE,CACxC,IAAK,GAAM,CAAC,EAAK,KAAW,OAAO,QAAQ,EAAM,CAC3C,SAAQ,WAAa,IAAQ,iBAAmB,IAAQ,eAAiB,IAAQ,gBACrF,IAAI,IAAQ,UAAY,GAAU,OAAO,GAAW,UAAY,CAAC,MAAM,QAAQ,EAAO,CAAE,CAClF,YAAa,GAAU,EAAO,UAAY,SAAW,EAAK,OAAS,CAAE,QAAS,EAAO,QAAS,EAClG,SAEF,EAAK,GAAO,GAAgB,EAAO,CAErC,OAAO,EAQT,SAAgB,GAAuB,EAA0C,CAC/E,GAAI,CAAC,EAAO,MAAO,GACnB,GAAM,CAAE,SAAU,EAAW,GAAG,GAAS,EACzC,OAAO,KAAK,UAAU,GAAgB,EAAK,CAAC,CAG9C,SAAgB,GAAuB,EAAmB,EAAgC,EAAE,CAAE,CAAE,WAAU,QAAO,aAAyE,EAAE,CAAE,CAC5L,GAAI,CAAC,GAAc,IAAI,EAAU,CAC/B,MAAM,GACJ,mCACA,oDACA,wEACA,CAAE,YAAW,CACd,CAEH,IAAM,EAA4B,CAChC,WAAY,GACZ,YACA,SAAU,GAAuB,EAAU,WAAW,CACtD,UAAW,IAAc,OAAY,GAAkB,UAAU,CAAG,GAAuB,EAAW,YAAY,CAClH,KAAM,GAAuB,EAAM,OAAO,CAC3C,CAED,OADI,IAAU,SAAW,EAAQ,MAAQ,GAAuB,EAAO,QAAQ,EACxE,OAAO,OAAO,EAAQ,CCtQ/B,SAAgB,GAA2B,EAA8B,EAAsD,CAC7H,IAAM,EAAa,IAAI,gBACnB,EACE,MAAgB,CACpB,EAAW,OAAO,CAClB,KAAe,CACf,EAAc,QAEV,MAAc,CACb,EAAU,EAAO,aAAa,CAAC,EAAE,GAAS,EAMjD,MAJA,GAAc,EAAO,UAAU,EAAM,CAEjC,EAAW,OAAO,QAAS,GAAS,CACnC,GAAO,CACL,CAAE,OAAQ,EAAW,OAAQ,UAAS,CAI/C,SAAgB,GAA2B,EAAgE,CACzG,GAAI,CAAC,GAAU,OAAO,EAAO,WAAc,WACzC,MAAO,CAAE,gBAAmB,KAAM,kBAAuB,GAAI,SAAU,GAAI,CAE7E,IAAI,EAAkC,KAClC,EAAmC,KACnC,EAAuB,GACrB,EAAY,IAAI,IAClB,EACA,EAAa,EACX,MAAa,CACjB,IACA,KAAwB,CACxB,EAAuB,QAEnB,MAAc,CAClB,IAAM,EAAU,EAAE,EACZ,EAAU,GAAyB,CAEvC,GADI,IAAY,GAAc,CAAC,GAC3B,IAAa,OAAS,EAAK,UAAY,IAAM,EAAS,UAAY,GAAI,OAC1E,EAAW,EACX,IAAM,EAAc,GAAuB,EAAK,CAC5C,OAAgB,EAEpB,CADA,EAAuB,EACvB,EAAY,EACZ,IAAK,IAAM,KAAY,EAAW,GAAU,GAE9C,EAAuB,EAAO,UAAU,EAAO,OAAW,IACrD,EAAO,YAAY,CAAC,KAAK,EAAO,CAAC,UAAY,GAAG,EAEvD,MAAO,CACL,gBAAmB,EACnB,UAAU,EAAsB,CAG9B,OAFA,EAAU,IAAI,EAAS,CACnB,EAAU,OAAS,GAAG,GAAO,KACpB,CACN,EAAU,OAAO,EAAS,EAC3B,EAAU,OAAS,GAAG,GAAM,GAGpC,SAAU,CAAE,GAAM,CAAE,EAAU,OAAO,CAAE,EAAW,KAAM,EAAY,KAAM,EAAuB,IAClG,aCjEH,eAAqF,kCAIrF,eACE,yDAGF,qDAGE,oCAGF,wBAEE,GADA,KACA,qBADA,EACA,qBAGA,GADA,UACA,kBACE,2BACA,SAOF,OALA,mBACA,oBACA,oBACA,kBACA,kBACA,EAGF,6BACE,qBACA,8DACA,4DACA,uCACA,oCACA,qBAEA,sYAcA,0DAIA,kDAGA,SAGF,yCACE,uBACA,+CAEA,+CAKA,OADA,gEACA,oCAGF,oOAiBE,uCAEE,+CAEA,IAEF,kDAQF,eAEA,eACE,+FAIA,OADA,cACA,CACE,cAIJ,oBACE,YACA,oBAEI,eCtFN,IAAM,GAAY,qBACZ,GAAkB,mBAClB,GAAa,uBACb,GAAa,IACb,GAAqB,KACrB,GAAqB,IAEvB,EAAU,GACV,GAAQ,GACR,GACA,GACA,GAAY,GACZ,GAAS,EACP,GAAuB,EAAE,CACzB,GAAW,IAAI,IACf,GAA0B,IAAI,IAChC,GAAQ,EACR,GAAU,EACV,GAAiB,EACjB,GAAc,EACd,GAAwB,EAExB,EAA8C,KAC5C,GAAmC,EAAE,CACvC,GAA8B,KAC9B,GAA+C,KAC/C,GAA6C,KAC7C,GAA4C,KAEhD,SAAS,IAAM,CACb,OAAO,OAAO,YAAgB,KAAe,OAAO,YAAY,KAAQ,WACpE,YAAY,KAAK,CACjB,KAAK,KAAK,CAGhB,SAAS,IAAO,CACd,OAAO,KAAK,OAAO,IAAK,CAAG,IAAU,IAAI,CAAG,IAG9C,SAAS,IAA6B,CACpC,GAAI,CACF,GAAI,OAAO,WAAW,UAAU,QAAW,SAAU,CACnD,IAAM,EAAS,IAAI,gBAAgB,WAAW,SAAS,OAAO,CAC9D,GAAI,EAAO,IAAI,GAAgB,GAAK,KAAO,EAAO,IAAI,GAAgB,GAAK,OAAQ,MAAO,SAEtF,EAGR,GAAI,CACF,IAAM,EAAS,WAAW,cAAc,QAAQ,GAAU,CAC1D,GAAI,IAAW,KAAO,IAAW,OAAQ,MAAO,QAC1C,EAGR,MAAO,GAGT,SAAS,GAAK,EAAc,EAAQ,EAAG,CACrC,GAAS,IAAI,GAAO,GAAS,IAAI,EAAK,EAAI,GAAK,EAAM,CAGvD,SAAS,GAAY,EAAc,EAAQ,EAAG,CAC5C,GAAI,CAAC,EAAsB,OAC3B,IAAM,EAAM,EAAqB,SACjC,EAAI,IAAI,GAAO,EAAI,IAAI,EAAK,EAAI,GAAK,EAAM,CAG7C,SAAS,GAAiB,EAAmB,EAAY,EAAY,GAAc,CACjF,IAAI,EAAS,EAAU,IAAI,EAAU,CAChC,IACH,EAAS,EAAE,CACX,EAAU,IAAI,EAAW,EAAO,EAE9B,EAAO,QAAU,IAAoB,EAAO,OAAO,CACvD,EAAO,KAAK,EAAG,CAGjB,SAAS,GAAW,EAA2B,EAAW,CAGxD,OAFI,EAAO,SAAW,EAAU,EAEzB,EADO,KAAK,IAAI,EAAO,OAAS,EAAG,KAAK,IAAI,EAAG,KAAK,MAAO,EAAI,IAAO,EAAO,OAAO,CAAC,CAC9E,EAGhB,SAAS,GAAmB,EAA4B,CACtD,GAAI,CAAC,GAAS,OAAQ,OAAO,KAC7B,IAAM,EAAS,CAAC,GAAG,EAAQ,CAAC,MAAM,EAAG,IAAM,EAAI,EAAE,CAC3C,EAAM,EAAO,QAAQ,EAAK,IAAU,EAAM,EAAO,EAAE,CACzD,MAAO,CACL,EAAG,EAAO,OACV,IAAK,KAAK,MAAO,EAAM,EAAO,OAAU,IAAI,CAAG,IAC/C,IAAK,KAAK,MAAM,GAAW,EAAQ,GAAG,CAAG,IAAI,CAAG,IAChD,IAAK,KAAK,MAAM,GAAW,EAAQ,GAAG,CAAG,IAAI,CAAG,IAChD,IAAK,KAAK,MAAM,EAAO,EAAO,OAAS,GAAK,IAAI,CAAG,IACnD,IAAK,KAAK,MAAM,EAAM,IAAI,CAAG,IAC9B,CAGH,SAAS,GAAyB,EAA4B,CAG5D,OAFc,GAAmB,EAC5B,EAAc,KAIrB,SAAS,GAAU,EAAmB,CAAE,cAAc,IAAU,EAAE,CAAE,CAC7D,IACD,IACF,EAAqB,OAAO,KAAK,EAAM,CACnC,EAAqB,OAAO,OAAS,KACvC,EAAqB,OAAO,OAAO,EAAG,EAAqB,OAAO,OAAS,GAAmB,CAC9F,GAAY,2BAA2B,GAGtC,IACH,GAAO,KAAK,EAAM,CACd,GAAO,OAAS,IAAY,GAAO,OAAO,EAAG,GAAO,OAAS,GAAW,GAIhF,SAAgB,IAAqB,CACnC,OAAO,EAOT,SAAgB,GAAU,EAAe,EAAe,EAAkB,EAAE,CAAE,CAC5E,GAAI,CAAC,EAAS,OACd,IAAM,EAAQ,CAAE,EAAG,IAAM,CAAE,QAAO,QAAO,GAAG,EAAM,CAClD,GAAK,GAAG,EAAM,GAAG,IAAQ,CACzB,GAAY,GAAG,EAAM,GAAG,IAAQ,CAChC,GAAU,EAAM,EACA,GAAwB,IAAU,WAAa,IAAU,SAC1D,OAAO,QAAY,KAAe,OAAO,QAAQ,OAAU,YACxE,QAAQ,MAAM,GAAY,EAAO,EAAO,EAAK,CAIjD,SAAgB,GAAa,EAAmB,EAAoB,EAAmB,EAAE,CAAE,CACpF,KAEL,IADA,GAAiB,EAAW,EAAY,GAAa,CACjD,IACF,GAAiB,EAAW,EAAY,EAAqB,aAAa,CACtE,GAAc,EAAqB,UAAY,KAAI,EAAqB,SAAW,GACnF,EAAM,YAAc,gBAAgB,CACtC,GAAY,yBAAyB,CACrC,IAAM,EAAI,EAAqB,YAAc,EACzC,GAAK,EAAqB,aAAe,KAAI,EAAqB,YAAc,GAGxF,GAAK,OAAO,IAAY,CACxB,GAAY,OAAO,IAAY,CAC3B,EAAa,KACf,GAAK,YAAY,IAAY,CAC7B,GAAY,YAAY,IAAY,EAEtC,GAAU,CACR,EAAG,IAAM,CACT,MAAO,MACP,MAAO,EACP,GAAI,KAAK,MAAM,EAAa,IAAI,CAAG,IACnC,GAAG,EACJ,CAAC,EAGJ,SAAS,GAAgB,EAAgB,CACvC,IAAM,EAAU,GAA0B,EAAM,CAChD,GAAI,CAAC,GAAW,OAAO,GAAY,SAAU,OAAO,KACpD,IAAM,EAAM,OAAO,EAAQ,SAAY,SAAW,EAAQ,QAAQ,aAAa,CAAG,OAAO,EAAM,CACzF,EAAU,EAAQ,SAAW,OAAO,EAAQ,SAAY,SAAW,CAAE,GAAG,GAA0B,EAAQ,QAAQ,CAAE,CAAG,EAAE,CAC/H,MAAO,CACL,MACA,GAAI,EAAQ,IAAM,OAClB,UAAW,OAAO,EAAQ,WAAc,SAAW,EAAQ,UAAY,OACvE,UACA,SAAU,EAAQ,SAClB,YAAa,OAAO,EAAQ,oBAAuB,WACpD,CAGH,SAAS,IAAqB,CACxB,MAAC,GAAwB,CAAC,IAAW,MACrC,OAAO,WAAW,kBAAqB,aACzC,GAAsB,IAAI,iBAAkB,GAAY,CACjD,KACL,KAAK,IAAM,KAAU,EACnB,GAAY,eAAe,CAC3B,EAAqB,iBAAmB,EACpC,EAAO,OAAS,cAClB,GAAY,gBAAgB,CAC5B,EAAqB,oBAAsB,EAAO,WAAW,OAAS,EAAO,aAAa,QAExF,EAAO,OAAS,cAAc,GAAY,iBAAiB,CAE7D,EAAqB,gBAAkB,IAAO,GAChD,GAAU,CACR,EAAG,IAAM,CACT,MAAO,MACP,MAAO,iBACP,QAAS,EAAqB,gBAC9B,eAAgB,EAAqB,mBACtC,CAAC,GAEJ,CACF,GAAoB,QAAQ,GAAS,CACnC,QAAS,GACT,UAAW,GACX,WAAY,GACZ,gBAAiB,CAAC,QAAS,QAAS,SAAU,6BAA6B,CAC5E,CAAC,EAEA,OAAO,WAAW,qBAAwB,YAAY,CACxD,GAAI,CACF,GAAiB,IAAI,oBAAqB,GAAS,CAC5C,KACL,IAAK,IAAM,KAAS,EAAK,YAAY,CAAE,CACrC,GAAY,aAAa,CACzB,IAAM,EAAK,EAAM,SACjB,EAAqB,gBAAgB,KAAK,EAAG,CACzC,EAAK,IACP,GAAY,kBAAkB,CAC9B,GAAU,CACR,EAAG,IAAM,CACT,MAAO,MACP,MAAO,SACP,WAAY,KAAK,MAAM,EAAK,IAAI,CAAG,IACnC,KAAM,EAAM,KACb,CAAC,IAGN,CACF,GAAe,QAAQ,CAAE,KAAM,SAAU,SAAU,GAAM,CAAC,MACpD,EAGR,GAAI,CACF,GAAgB,IAAI,oBAAqB,GAAS,CAC3C,KACL,IAAK,IAAM,KAAS,EAAK,YAAY,CACnC,GAAY,YAAY,CACpB,EAAM,SAAW,IACnB,GAAY,iBAAiB,CAC7B,GAAU,CACR,EAAG,IAAM,CACT,MAAO,MACP,MAAO,QACP,WAAY,KAAK,MAAM,EAAM,SAAW,IAAI,CAAG,IAChD,CAAC,GAGN,CACF,GAAc,QAAQ,CAAE,KAAM,QAAS,SAAU,GAAM,CAAC,MAClD,IAMZ,SAAS,IAAqB,CAC5B,IAAqB,YAAY,CACjC,GAAsB,KACtB,IAAgB,YAAY,CAC5B,GAAiB,KACjB,IAAe,YAAY,CAC3B,GAAgB,KAGlB,SAAS,GAAkB,EAA4B,CACrD,IAAM,EAAkB,EAAE,CAE1B,IADqB,EAAQ,YAAc,GAAK,KAC7B,EAAG,OAAO,EAC7B,IAAM,EAAO,EAAQ,SAAS,uBAAyB,EACjD,EAAS,EAAQ,SAAS,iBAAmB,EAC7C,EAAO,EAAQ,SAAS,qBAAuB,EAC/C,EAAY,EAAQ,SAAS,sBAAwB,EACrD,EAAY,EAAQ,SAAS,iBAAmB,EAmBtD,OAjBI,EAAS,GAAK,EAAO,GAAK,KAAK,IAAI,EAAS,EAAK,CAAG,EAAS,IAAO,EAAS,EAAO,IACtF,EAAM,KAAK,0GAA0G,CAEnH,EAAY,GAAK,KAAK,IAAI,EAAY,EAAK,CAAG,EAAY,KAC5D,EAAM,KAAK,+GAA+G,CAExH,EAAY,EAAS,IAAM,EAAS,IACtC,EAAM,KAAK,2FAA2F,EAEpF,EAAQ,QACV,KAAO,GAAK,GAAK,EAAS,IAC1C,EAAM,KAAK,oGAAoG,EAE9F,EAAQ,SAAS,oBAAsB,GACzC,GACf,EAAM,KAAK,uGAAuG,CAE7G,EAGT,SAAS,GAAuB,EAAgB,EAAmB,EAAE,CAAwB,CAC3F,GAAI,CAAC,EAAsB,OAAO,KAClC,IAAM,EAAU,EAChB,EAAuB,KACvB,IAAoB,CAEpB,IAAM,EAAa,KAAK,OAAO,IAAK,CAAG,EAAQ,eAAiB,IAAI,CAAG,IACjE,EAAa,OAAO,YAAY,CAAC,GAAG,EAAQ,SAAS,SAAS,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC,KAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CACvG,EAA2C,EAAE,CACnD,IAAK,GAAM,CAAC,EAAW,KAAY,EAAQ,aAAa,SAAS,CAC/D,EAAI,GAAa,GAAmB,EAAQ,CAE9C,IAAM,EAAU,CACd,GAAI,EAAQ,GACZ,SACA,aACA,WAAY,EAAQ,WACpB,SAAU,IAAM,CAChB,KAAM,CAAE,GAAG,EAAQ,KAAM,GAAG,EAAO,CACnC,SAAU,EACV,MACA,OAAQ,GAAyB,EAAQ,gBAAgB,CACzD,IAAK,CACH,gBAAiB,EAAQ,gBACzB,qBAAsB,EAAQ,mBAC9B,cAAe,EAAQ,gBAAgB,OACvC,mBAAoB,EAAQ,mBAC5B,sBAAuB,EAAQ,sBAC/B,sBAAuB,EAAQ,sBAChC,CACD,MAAO,CACL,mBAAoB,EAAQ,YAC5B,SAAU,KAAK,OAAO,EAAQ,UAAY,GAAK,IAAI,CAAG,IACvD,CACD,aAAc,CACZ,UAAW,EAAW,qBAAuB,EAC7C,YAAa,EAAW,uBAAyB,EAClD,CACD,MAAO,EAAE,CACV,CACD,EAAQ,MAAQ,GAAkB,EAAQ,CAE1C,IAAM,EAAS,CACb,GAAG,EACH,OAAQ,EAAQ,OACjB,CAkBD,OAjBA,GAAgB,KAAK,EAAO,CAE5B,GAAU,UAAW,cAAe,CAClC,GAAI,EAAQ,GACZ,SACA,aACA,SAAU,EACV,MACA,OAAQ,EAAQ,OAChB,IAAK,EAAQ,IACb,aAAc,EAAQ,aACtB,MAAO,EAAQ,MAChB,CAAC,CAEE,OAAO,QAAY,KAAe,OAAO,QAAQ,MAAS,YAC5D,QAAQ,KAAK,GAAG,GAAW,0BAA0B,EAAO,GAAI,EAAQ,CAEnE,EAGT,SAAgB,GAAoB,EAAkB,EAAE,CAAE,CACxD,GAAI,CAAC,EAAS,OACV,GAAsB,GAAuB,aAAa,CAC9D,IAAM,EAAK,OAAO,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAG,GAAG,GACzD,EAAuB,CACrB,KACA,cAAe,IAAK,CACpB,WAAY,IAAM,CAClB,OACA,SAAU,IAAI,IACd,aAAc,IAAI,IAClB,OAAQ,EAAE,CACV,gBAAiB,EAAE,CACnB,gBAAiB,EAAE,CACnB,gBAAiB,EACjB,mBAAoB,EACpB,mBAAoB,EACpB,sBAAuB,EACvB,sBAAuB,EACvB,YAAa,EACb,SAAU,EACV,YAAa,EACd,CACD,GAAwB,EACxB,IAAoB,CACpB,GAAU,UAAW,gBAAiB,CAAE,KAAI,GAAG,EAAM,CAAC,CAGxD,SAAgB,GAAkB,EAAgB,EAAmB,EAAE,CAAE,CAEvE,MADI,CAAC,GAAW,CAAC,EAA6B,KACvC,GAAuB,EAAQ,EAAM,CAG9C,SAAgB,GAA0B,EAA6C,CACjF,CAAC,GAAW,CAAC,IACjB,GAAU,EACV,GAAU,QAAS,WAAY,CAAE,QAAS,GAAgB,EAAY,CAAE,CAAC,EAG3E,SAAgB,GAAoB,EAAuB,CACzD,GAAI,CAAC,EAAS,OACd,GAAK,mBAAmB,CACxB,GAAY,mBAAmB,CAC/B,IAAM,EAAU,CACd,cAAe,GAAO,cACtB,cAAe,GAAO,SAAS,cAC/B,eAAgB,EAAQ,GAAO,SAAS,YACzC,CACD,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,aAAc,GAAG,EAAS,CAAC,CAG3E,SAAgB,GAAmE,EAAc,CAC/F,GAAI,CAAC,EAAQ,OAAO,EACpB,IAAM,EAAe,EACrB,GAAI,EAAa,0BAA2B,OAAO,EACnD,IAAM,EAAe,EAAO,MAAM,KAAK,EAAO,CAC9C,GAAI,OAAO,GAAiB,WAAY,OAAO,EAkC/C,GAjCA,EAAa,0BAA4B,GACzC,EAAO,MAAqB,EAAmB,EAAgC,EAAE,CAAE,EAAgC,EAAE,GAAiB,CACpI,GAAI,CAAC,EAAS,OAAO,EAAgB,EAAW,EAAM,EAAQ,CAC1D,GAAwB,IAAc,kBACxC,EAAqB,YAAc,EAAqB,YAAc,GAAK,GAE7E,IAAM,EAAU,IAAK,CACf,EAAS,EAAgB,EAAW,EAAM,EAAQ,CACxD,OAAO,QAAQ,QAAQ,EAAO,CAC3B,KAAM,IACD,GAAwB,IAAc,kBACxC,EAAqB,WAAa,KAAK,IAAI,GAAI,EAAqB,YAAc,GAAK,EAAE,EAE3F,GAAa,EAAW,IAAK,CAAG,EAAS,CACvC,GAAI,GACJ,cAAe,GAAM,cACrB,UAAW,GAA0B,EAAK,MAAM,CAAC,KAClD,CAAC,CACK,GACP,CACD,MAAO,GAAU,CAUhB,MATI,GAAwB,IAAc,kBACxC,EAAqB,WAAa,KAAK,IAAI,GAAI,EAAqB,YAAc,GAAK,EAAE,EAE3F,GAAa,EAAW,IAAK,CAAG,EAAS,CACvC,GAAI,GACJ,QAAS,GAAO,SAAW,OAAO,EAAM,CACxC,cAAe,GAAM,cACrB,UAAW,GAA0B,EAAK,MAAM,CAAC,KAClD,CAAC,CACI,GACN,EAEF,OAAO,EAAO,WAAc,WAAY,CAC1C,IAAM,EAAoB,EAAO,UAAU,KAAK,EAAO,CACvD,EAAO,UAAa,GAClB,EAAmB,IACjB,GAAoB,EAAM,CACnB,EAAS,EAAM,EACtB,CAEN,OAAO,EAGT,SAAS,IAAkB,CACzB,GAAI,IAAS,OAAO,WAAW,uBAA0B,WAAY,OACrE,GAAU,IAAK,CACf,IAAM,MAAa,CACjB,GAAI,CAAC,EAAS,CACZ,GAAQ,EACR,OAEF,IAAM,EAAI,IAAK,CACT,EAAM,EAAI,GAChB,GAAU,EACN,EAAM,KAAa,GAAc,GACjC,EAAM,KACR,IAAkB,EACd,GACF,IAAyB,EACzB,GAAY,kBAAkB,CAC9B,GAAU,CACR,EAAG,IAAM,CACT,MAAO,OACP,MAAO,aACP,MAAO,KAAK,MAAM,EAAM,IAAI,CAAG,IAC/B,QAAS,GACV,CAAC,EACO,EAAM,IACf,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,OAAQ,MAAO,aAAc,MAAO,KAAK,MAAM,EAAM,IAAI,CAAG,IAAK,CAAC,EAGpG,GAAQ,WAAW,sBAAsB,EAAK,EAEhD,GAAQ,WAAW,sBAAsB,EAAK,CAGhD,SAAS,IAAwB,CAC3B,UAAO,WAAW,qBAAwB,WAC9C,GAAI,CACF,IAAM,EAAW,IAAI,oBAAqB,GAAS,CACjD,IAAK,IAAM,KAAS,EAAK,YAAY,CAC/B,EAAM,SAAW,KACrB,GAAK,iBAAiB,CACtB,GAAY,iBAAiB,CAC7B,GAAU,CACR,EAAG,IAAM,CACT,MAAO,OACP,MAAO,YACP,KAAM,EAAM,KACZ,WAAY,KAAK,MAAM,EAAM,SAAW,IAAI,CAAG,IAC/C,QAAS,EAAQ,EAClB,CAAC,GAEJ,CACF,EAAS,QAAQ,CAAE,WAAY,CAAC,WAAW,CAAE,CAAC,CAC9C,GAAmB,OACb,GAKV,SAAS,GAAa,EAAoB,CACxC,IAAM,EAAa,OAAO,YAAY,CAAC,GAAG,GAAS,SAAS,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC,KAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAC/F,EAA2C,EAAE,CACnD,IAAK,GAAM,CAAC,EAAW,KAAY,GAAa,SAAS,CACvD,EAAI,GAAa,GAAmB,EAAQ,CAE9C,IAAM,EAAQ,EAAE,CACV,EAAO,GAAgB,GAAgB,OAAS,GAItD,OAHI,GAAM,OAAO,QACf,EAAM,KAAK,iBAAiB,EAAK,OAAO,IAAI,EAAK,WAAW,QAAQ,EAAK,MAAM,KAAK,IAAI,GAAG,CAEtF,CACL,aACA,WAAY,KAAK,MAAM,EAAa,IAAI,CAAG,IAC3C,SAAU,EACV,MACA,KAAM,CACJ,mBAAoB,GACpB,cAAe,KAAK,MAAM,GAAc,IAAI,CAAG,IAChD,CACD,oBAAqB,GAAgB,OACrC,QACD,CAGH,SAAgB,IAAqB,CACnC,IAAM,EAAa,IAAU,IAAK,CAAG,IAAU,IAAO,EACtD,MAAO,CACL,KAAM,4BACN,QAAS,EACT,YAAa,IAAI,MAAM,CAAC,aAAa,CACrC,QAAS,GAAa,EAAW,CACjC,gBAAiB,GAAgB,KAAK,CAAE,OAAQ,EAAI,GAAG,KAAW,EAAK,CACvE,oBAAqB,GACrB,UACD,CAGH,SAAgB,IAAoB,CAClC,OAAO,KAAK,UAAU,IAAoB,CAAE,KAAM,EAAE,CAGtD,SAAgB,IAAyB,CACvC,GAAI,CAAC,IAAS,CAAC,EAAS,MAAO,GAC/B,GAAI,GAAc,MAAO,GACzB,GAAY,MAAM,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAG,GAAG,GACzD,GAAS,IAAK,CACd,GAAU,OAAQ,UAAW,CAC3B,KAAM,WAAW,SAAW,GAAG,WAAW,SAAS,SAAS,WAAW,SAAS,WAAa,OAC7F,UAAW,WAAW,WAAW,UAClC,CAAC,CACF,IAAiB,CACjB,IAAuB,CACvB,IAAM,EAAM,CACV,YAAe,EACf,OAAQ,GACR,KAAM,GACN,SAAU,GACV,OAAQ,GACR,MAAO,GACP,mBACA,kBAAqB,GAAsB,IAAM,KACjD,uBAA0B,GAAgB,GAAgB,OAAS,IAAM,KACzE,oBAAuB,GACxB,CAQD,MAPA,YAAW,mBAAqB,EAChC,GAAe,EACX,OAAO,QAAY,KAAe,OAAO,QAAQ,MAAS,YAC5D,QAAQ,KACN,GAAG,GAAW,gFACf,CAEI,GAGT,SAAgB,IAA+B,CAC7C,GAAI,OAAO,WAAW,UAAa,SAAU,UAAa,GAC1D,GAAI,GAAO,MAAU,MAAM,kEAAkE,CAC7F,GAAQ,GACR,EAAU,IAA4B,CACtC,IAAwB,CACxB,IAAI,EAAW,GACf,UAAa,CACP,IACJ,EAAW,GACX,GAAQ,GACR,EAAU,GACN,IAAO,WAAW,uBAAuB,GAAM,CACnD,GAAQ,EACR,IAAkB,YAAY,CAC9B,GAAmB,OACnB,IAAoB,CACpB,GAAU,KACV,EAAuB,KACvB,GAAO,OAAS,EAChB,GAAgB,OAAS,EACzB,GAAS,OAAO,CAChB,GAAa,OAAO,CACpB,GAAU,GAAiB,GAAc,GAAwB,GAAS,EAC1E,GAAY,GACR,WAAW,qBAAuB,IAAc,OAAO,WAAW,mBACtE,GAAe,SAKnB,SAAgB,GAAgB,CAAE,UAAU,IAAU,EAAE,CAAE,CACxD,GAAI,CAAC,GAAO,MAAO,GACnB,GAAI,EACF,GAAI,CACF,WAAW,cAAc,QAAQ,GAAW,IAAI,MAC1C,EAMV,OAFI,GAAW,WAAW,mBAA2B,IACrD,EAAU,GACH,IAAwB,EAGjC,SAAS,IAAsB,CAE7B,MAAO,sBADO,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,QAAS,IAC3B,CAAM,MAIrC,SAAgB,IAA2B,CACzC,IAAiB,CACjB,IAAM,EAAO,IAAmB,CAChC,GAAU,SAAU,WAAY,CAC9B,MAAO,EAAK,OACZ,gBAAiB,GAAgB,OAClC,CAAC,CACF,IAAM,EAAM,WAAW,SACvB,GAAI,GAAK,cAAe,CACtB,IAAM,EAAO,IAAI,KAAK,CAAC,EAAK,CAAE,CAAE,KAAM,2BAA4B,CAAC,CAC7D,EAAM,IAAI,gBAAgB,EAAK,CAC/B,EAAS,EAAI,cAAc,IAAI,CACrC,EAAO,KAAO,EACd,EAAO,SAAW,IAAqB,CACvC,EAAO,IAAM,WACb,EAAO,OAAO,CACd,IAAI,gBAAgB,EAAI,CAE1B,OAAO,EAGT,SAAgB,GAAiB,EAAyC,CAAE,WAAU,SAAiD,EAAE,CAAE,CACzI,GAAI,CAAC,EAAS,OACd,GAAU,QAAS,SAAU,CAC3B,WACA,QACA,QAAS,GAAgB,EAAQ,CACjC,mBAAoB,GAAgB,WAAW,UAAU,mBAAmB,CAC7E,CAAC,CACF,IAAM,EACJ,GAAS,SAAS,eAAe,GAAK,SAClC,EACA,GAAS,gBAAgB,SAAS,CACpC,CAAC,GAAU,EAAO,2BACtB,EAAO,yBAA2B,GAClC,GAAU,SAAU,QAAS,CAC3B,MAAO,EAAO,MACd,OAAQ,EAAO,OACf,YAAa,EAAO,YACpB,aAAc,EAAO,aACtB,CAAC,CACE,OAAO,WAAW,gBAAmB,YAavC,IAZqB,mBAAqB,CACxC,IAAM,EAAU,CACd,MAAO,EAAO,MACd,OAAQ,EAAO,OACf,YAAa,EAAO,YACpB,aAAc,EAAO,aACrB,QAAS,EAAQ,EAClB,CACD,GAAK,gBAAgB,CACrB,GAAY,gBAAgB,CAC5B,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,SAAU,MAAO,SAAU,GAAG,EAAS,CAAC,EAExE,CAAS,QAAQ,EAAO,EAI5B,SAAgB,GAAsB,EAAqB,CAAE,WAAU,WAAyD,CACzH,IACL,GAAU,QAAS,cAAe,CAChC,WACA,OAAQ,GAAO,OACf,UAAW,GAAO,UAClB,YAAa,GAAO,YACpB,QAAS,GAAO,QAChB,OAAQ,GAAgB,GAAO,OAAO,CACtC,aAAc,GAAgB,EAAQ,CACtC,kBAAmB,GAAgB,WAAW,UAAU,mBAAmB,CAC5E,CAAC,CACE,GACF,GAAoB,CAClB,QAAS,cACT,OAAQ,GAAgB,GAAO,OAAO,CACtC,aAAc,GAAgB,EAAQ,CACvC,CAAC,EAIN,SAAgB,GAAoB,EAAqB,CAAE,WAAuC,EAAE,CAAE,CAC/F,IACL,GAAU,QAAS,YAAa,CAC9B,UAAW,GAAO,UAClB,aAAc,GAAgB,EAAQ,CACvC,CAAC,CACF,GAAkB,YAAY,EAGhC,SAAgB,GAA0B,CAAE,SAAQ,WAAuD,CACpG,IACL,GAAU,QAAS,mBAAoB,CACrC,SACA,QAAS,GAAgB,EAAQ,CAClC,CAAC,CACG,GAAQ,GAAkB,mBAAmB,EAGpD,SAAgB,GAAuB,EAAgB,CAChD,IACL,GAAU,QAAS,QAAS,CAAE,SAAQ,CAAC,CACnC,GAAsB,GAAkB,QAAS,CAAE,YAAa,EAAQ,CAAC,EAS/E,SAAgB,GAAsB,EAAqB,CAAE,aAAY,YAAyE,CAChJ,GAAI,CAAC,EAAS,OACd,GAAK,qBAAqB,CAC1B,GAAY,qBAAqB,CAC7B,GAAY,GAAsB,aAAe,IAC/C,IAAsB,EAAqB,YAAc,GAE/D,IAAM,EAAU,CACd,UAAW,GAAO,UAClB,UAAW,GAAO,UAClB,aACA,WACD,CACG,EACF,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,eAAgB,GAAG,EAAS,CAAC,EACjE,GAAS,IAAI,qBAAqB,EAAI,GAAK,IAAO,GAC5D,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,sBAAuB,GAAG,EAAS,CAAC,CAoBtF,SAAgB,GAAiB,EAAkB,EAAE,CAAE,CAChD,IACL,GAAK,eAAe,CACpB,GAAY,eAAe,CACvB,GAAwB,OAAO,EAAK,YAAe,UACrD,EAAqB,gBAAgB,KAAK,EAAK,WAAW,CAExD,EACF,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,SAAU,GAAG,EAAM,CAAC,EACxD,GAAS,IAAI,eAAe,EAAI,GAAK,IAAO,GACtD,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,gBAAiB,GAAG,EAAM,CAAC,EAI7E,SAAgB,GAAiB,EAAkB,EAAE,CAAE,CAChD,IACL,GAAK,qBAAqB,CAC1B,GAAY,qBAAqB,CAC7B,GACF,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,eAAgB,GAAG,EAAM,CAAC,EAI5E,SAAgB,GAAwB,EAAe,EAAkB,EAAkB,CACpF,IACL,GAAY,4BAA4B,CACxC,GAAK,4BAA4B,CACjC,GAAU,QAAS,sBAAuB,CACxC,QACA,WACA,QAAS,GAAgB,EAAQ,CAClC,CAAC,EAGJ,SAAgB,GAAwB,EAAoE,EAAE,CAAE,CACzG,IACL,GAAK,6BAA6B,CAClC,GAAY,6BAA6B,CACrC,IACF,EAAqB,oBAAsB,EAC3C,EAAqB,uBAAyB,EAAM,SAAW,EAC/D,EAAqB,uBAAyB,EAAM,WAAa,GAE/D,GACF,GAAU,CAAE,EAAG,IAAM,CAAE,MAAO,QAAS,MAAO,uBAAwB,GAAG,EAAO,CAAC,ECt2BrF,IAAM,GAAa,+BAGN,GAAoB,QACpB,GAAqB,OAAO,OAAO,CAAC,WAAY,OAAQ,UAAU,CAAC,CAEhF,SAAgB,GAAuB,EAA0C,CAE/E,MADI,CAAC,GAAS,OAAO,GAAU,SAAiB,KACzC,CACL,KAAM,OAAO,EAAM,MAAS,SAAW,EAAM,KAAO,KACpD,KAAM,OAAO,EAAM,MAAS,SAAW,EAAM,KAAO,KACrD,CAGH,SAAgB,GAAuB,EAA0C,CAC/E,OAAO,GAAO,OAAS,GAGzB,SAAgB,GAAmB,EAA0C,CAC3E,OAAO,GAAS,MAAQ,GAAmB,SAAS,EAAM,KAAK,CA4BjE,SAAgB,GAAmC,EAA0C,CAC3F,GAAI,GAAO,eAAe,OAAQ,OAAO,EAAM,cAAc,OAC7D,IAAM,EAAU,GAAO,QAEvB,OADI,GAAS,QAAU,CAAC,GAAmB,EAAQ,MAAM,CAAS,EAAQ,OACnE,KAGT,SAAgB,GAAqB,EAA0D,EAAoD,CACjJ,IAAM,EAAM,IAAI,IACV,EAAO,GAA+C,CACtD,GAAO,QAAQ,UAAY,MAC/B,EAAI,IAAI,OAAO,EAAM,OAAO,SAAS,CAAC,EAExC,EAAI,EAAc,CAClB,IAAK,IAAM,KAAS,MAAM,QAAQ,EAAS,CAAG,EAAW,EAAE,CACrD,GAAuB,GAAO,MAAM,EAAE,EAAI,EAAM,CAEtD,OAAO,EAIT,SAAgB,GAAgB,EAAe,EAAgC,EAAE,CAAE,CAAE,QAAQ,QAAkD,EAAE,CAAE,CACjJ,IAAM,EAAS,OAAO,QAAY,IAAc,OAAY,QAAQ,GAChE,OAAO,GAAW,YAAY,EAAO,GAAY,EAAO,EAAK,CACjE,GAAI,CACF,GAAU,gBAAiB,EAAO,EAAK,MACjC,GAKV,SAAS,GAAO,EAA0C,EAAmD,CAC3G,MAAO,GAAQ,GAAS,EAAM,SAAS,EAAM,KAAK,EAAI,OAAO,EAAM,MAAS,UAAY,EAAM,OAAS,IAGzG,SAAS,GAAoB,EAA6C,CACxE,IAAM,EAAY,GAAqB,GAAU,SAAU,GAAU,cAAc,CACnF,OAAQ,MAAM,QAAQ,GAAU,SAAS,CAAG,EAAS,SAAW,EAAE,EAAE,OAAQ,GAG1E,EAFI,CAAC,GAAO,OAAS,EAAM,QAAQ,UAAY,MAC3C,GAAuB,EAAM,MAAM,EACnC,EAAU,IAAI,OAAO,EAAM,OAAO,SAAS,CAAC,EAEhD,CAGJ,SAAS,GAAkB,EAA6C,EAAc,CACpF,IAAM,EAAQ,GAAU,cACpB,MAAC,GAAS,OAAO,GAAU,UAAY,GAAQ,MACnD,OAAO,aAAiB,IAAM,EAAM,IAAI,EAAK,CAAG,EAAM,GAQxD,SAAgB,GAA+B,EAA6C,EAA0B,CACpH,IAAM,EAAW,MAAM,QAAQ,EAAM,CAAG,EAAQ,EAAE,CAClD,GAAI,EAAS,SAAW,EAAG,CACzB,IAAM,EAAQ,GAAU,aAAa,MACrC,OAAO,OAAO,GAAO,MAAS,UAAY,EAAM,OAAS,GAAK,EAAQ,OAExE,IAAM,EAAS,GAAoB,EAAS,CAW5C,MAAO,CATL,GAAU,aAAa,MACvB,GAAU,aAAa,SAAS,MAChC,GAAG,EAAS,QAAS,GAAS,CAC5B,GAAkB,EAAU,EAAK,EAAE,MACnC,GAAkB,EAAU,EAAK,EAAE,SAAS,MAC7C,CAAC,CACF,GAAG,CAAC,GAAG,EAAO,CAAC,SAAS,CAAC,IAAK,GAAU,EAAM,MAAM,CACpD,GAAU,YAAY,MAEjB,CAAW,KAAM,GAAU,GAAO,EAAO,EAAS,CAAC,CAG5D,SAAgB,GAA+B,EAA6C,EAA0B,CACpH,GAAI,OAAO,GAAS,UAAY,IAAS,GAAI,OAG7C,IAAM,EAAO,GAAoB,EAAS,CAAC,OAAO,GAAS,EAAM,OAAO,OAAS,EAAK,CAIhF,GAHU,GAAU,aAAa,OAAO,OAAS,EACnD,EAAS,YACT,OAAO,OAAO,GAAU,eAAiB,EAAE,CAAC,CAAC,KAAK,GAAS,GAAO,OAAO,OAAS,EAAK,GAChE,SAAS,OACpC,OAAO,EAAK,KAAK,GAAS,GAAa,EAAM,OAAO,WAAa,EAAU,UACtE,EAAM,OAAO,aAAe,EAAU,WAAW,EAAI,EAAK,GAGjE,SAAS,GAAoB,EAAkD,CAC7E,OAAO,GAAW,OAAO,cAAc,EAAQ,SAAS,CAAG,EAAQ,SAAW,EAQhF,SAAgB,GAA6B,EAA0C,EAAiD,CACtI,GAAI,OAAO,GAAW,WACpB,MAAU,UAAU,+CAA+C,CAErE,IAAM,EAAS,GAA2B,EAAO,CAC7C,EAAe,EACf,EAAS,GACP,EAAc,EAAO,cAAgB,CACzC,IAAM,EAAW,EAAO,aAAa,CACrC,GAAI,CAAC,EAAU,OACf,IAAM,EAAU,EAAS,YACnB,EAAW,GAAoB,EAAQ,CAC7C,GAAI,CAAC,EAAQ,CACX,EAAS,GACT,EAAe,EACf,GAAgB,wBAAyB,CACvC,UAAW,GAAS,WAAa,KACjC,SAAU,EACV,MAAO,GAAuB,GAAS,MAAM,CAC9C,CAAC,CACF,OAEE,CAAC,GAAW,GAAY,IAC5B,EAAe,EACf,GAAgB,wBAAyB,CACvC,UAAW,EAAQ,UACnB,SAAU,EAAQ,SAClB,MAAO,GAAuB,EAAQ,MAAM,CAC5C,WAAY,EAAQ,EAAQ,SAAS,OACrC,gBAAiB,EAAQ,SAAS,QAAQ,UAAY,KACvD,CAAC,CACF,EAAO,EAAQ,GACf,CACF,UAAa,CACX,GAAa,CACb,EAAO,SAAS,ECnLpB,SAAgB,GAAuB,EAA6B,EAAE,CAAE,EAA6C,CACnH,OAAO,EAAO,cACT,EAAO,qBACN,GAAK,MAAM,8BAA+B,GAAM,EAAI,QAI5D,SAAgB,GAAuB,EAAc,EAA6B,EAAE,CAAoB,CACtG,IAAM,MAAa,GAAuB,EAAQ,EAAI,CACtD,MAAO,CACL,IAAI,kBAAmB,CACrB,OAAO,GAAM,EAAE,kBAEjB,cAAc,EAAO,CACnB,OAAO,GAAM,EAAE,gBAAgB,EAAM,EAEvC,OAAO,EAAO,CACZ,OAAO,GAAM,EAAE,SAAS,EAAM,EAEhC,OAAO,EAAO,CACZ,OAAO,GAAM,EAAE,SAAS,EAAM,EAEjC,CC3BH,SAAgB,GAAc,EAAsB,EAAwB,CAC1E,IAAM,EAAS,EAAQ,WACjB,EAAO,EAAQ,YACf,EAAa,CAAC,QAAS,SAAU,aAAc,8BACnD,2BAA4B,4BAA6B,6BAA6B,CACrF,IAAK,GAA8C,CAAC,EAAM,EAAQ,eAAe,EAAK,CAAC,CAAC,CACvF,EAAW,GACf,UAAa,CACP,QACJ,EAAW,GAEP,EAAQ,aAAe,GAC3B,KAAK,GAAM,CAAC,EAAM,KAAU,EACtB,GAAS,KAAM,EAAQ,kBAAkB,EAAK,CAC7C,EAAQ,eAAe,EAAM,EAAM,CAEtC,EACE,EAAO,aAAc,EAAO,aAAa,EAAS,GAAM,aAAe,EAAS,EAAO,KAAK,CACvF,WAAY,GAAQ,EAAO,OAAO,EAAQ,CAC9C,EAAQ,UAAU,GAM7B,SAAgB,GAAe,EAAgC,CAC7D,OAAO,GAAU,6BAAgC,EAAI,KAGvD,SAAgB,GAAa,EAA2C,EAAyC,CAAE,UAAU,IAAU,EAAE,CAAE,CAUzI,MATI,CAAC,GAAa,CAAC,GAAW,EAAQ,aAAe,GAGjD,EAAU,cAAgB,GAAc,GACxC,GAAW,OAAO,EAAU,iBAAoB,YAClD,EAAU,gBAAgB,EAAQ,CAC3B,KAET,EAAU,SAAS,EAAQ,CACpB,IAOT,SAAgB,GAAuB,CACrC,WACA,eACA,aACA,UAAU,GACV,UACA,OAAO,IACiO,EAAE,CAAE,CAC5O,IAAI,EAAU,GACV,EACE,MAAgB,CAAE,GAAW,SAAS,CAAE,EAAY,QACpD,MAAa,CACjB,GAAI,EAAS,OACb,IAAM,EAAY,KAAgB,CAClC,GAAI,CAAC,GAAa,EAAU,cAAgB,GAAO,CAAE,GAAS,CAAE,OAChE,IAAM,EAAU,KAAc,CACzB,IACD,IAAc,EAAU,YAAc,GAAa,EAAU,UAAY,IAAU,GAAS,CAC5F,EAAQ,aAAe,IAC3B,CAAgB,GAAY,CAAE,YAAW,UAAS,QAAS,GAAc,EAAS,EAAU,CAAE,CACzF,GAAa,EAAW,EAAS,CAAE,UAAS,CAAC,EAClD,IAAU,EAAS,EAAU,IAE/B,GAAM,CACN,IAAM,EAAO,GAAU,iBAAmB,GAAU,KAC9C,EAAW,GAAU,aAAa,kBAAoB,WAAW,iBACjE,EAAM,GAAU,aAAe,WACjC,EACA,EAAM,EAKV,GAJI,GAAQ,OAAO,GAAa,aAC9B,EAAW,IAAI,EAAS,EAAK,CAC7B,EAAS,QAAQ,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,CAAC,EAExD,GAAQ,OAAO,EAAI,uBAA0B,WAAY,CAC3D,IAAM,MAAa,CACb,IACJ,GAAM,CACN,EAAM,EAAI,sBAAsB,EAAK,GAEvC,EAAM,EAAI,sBAAsB,EAAK,CAEvC,UAAa,CACX,EAAU,GACV,GAAU,YAAY,CAClB,GAAK,EAAI,uBAAuB,EAAI,CACxC,GAAS,EAIb,SAAgB,GAAgB,CAAE,WAAU,SAA0D,EAAE,CAAE,CACxG,IAAI,EAAU,GACR,EAAM,GAAU,aAAe,WAC/B,EAAW,GAAU,aAAa,kBAAoB,WAAW,iBACnE,EACA,EAAM,EACJ,MAAa,CACb,IACJ,EAAU,GACV,GAAU,YAAY,CAClB,GAAK,EAAI,uBAAuB,EAAI,GAEpC,MAAa,CACb,GACA,KAAS,EAAE,GAAM,EAGvB,GADA,GAAM,CACF,EAAS,OAAO,EACpB,IAAM,EAAO,GAAU,iBAAmB,GAAU,KAKpD,GAJI,GAAQ,OAAO,GAAa,aAC9B,EAAW,IAAI,EAAS,EAAK,CAC7B,EAAS,QAAQ,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,CAAC,EAExD,OAAO,EAAI,uBAA0B,WAAY,CACnD,IAAM,MAAa,CACb,IACJ,GAAM,CACN,EAAM,EAAI,sBAAsB,EAAK,GAEvC,EAAM,EAAI,sBAAsB,EAAK,CAEvC,OAAO,EC3HT,IAAM,EAAsB,IAG5B,SAAgB,EAA8B,CAC5C,MACA,UACA,SACA,aAAa,GACwH,EAAE,CAAE,CACzI,GAAI,CAAC,GAAO,OAAO,EAAI,eAAkB,YAAc,CAAC,GAAW,CAAC,GAAQ,UAAY,CAAC,OAAO,cAAc,EAAO,WAAW,CAC9H,UAAa,GAEf,IAAM,EAAO,EACb,GAAI,CAAC,GAAQ,OAAO,eAAmB,IACrC,UAAa,GAGf,IAAI,EAAY,EACZ,EAAa,EACb,EACA,EAAW,GACT,EAAa,IAAI,gBAEjB,MAAc,CAClB,GAAI,EAAU,OACd,IAAM,EAAM,KAAK,IAAI,EAAG,EAAQ,eAAe,aAAa,kBAAoB,EAAE,CAC5E,EAAQ,KAAK,MAAM,EAAK,YAAc,EAAI,CAC1C,EAAS,KAAK,MAAM,EAAK,aAAe,EAAI,CAC9C,QAAS,GAAK,GAAU,IACxB,MAAU,GAAa,IAAW,GACtC,IAAI,EAAO,QAAU,GAAS,EAAO,SAAW,EAAQ,CACtD,EAAY,EACZ,EAAa,EACb,OAEG,QAAQ,SAAS,CACnB,SAAW,CAAC,GAAY,EAAI,cAAc,CACzC,+BACA,SAAU,OAAO,EAAO,SAAS,CACjC,iBAAkB,EAAO,WACzB,QACA,SACA,OAAQ,EAAW,OACpB,CAAC,CAAC,CACF,SAAW,CACN,IACJ,EAAY,EACZ,EAAa,IACb,CACD,UAAY,GAGX,GAGA,MAAiB,CACrB,aAAa,EAAM,CACnB,EAAQ,WAAW,EAAO,EAAW,EAGjC,EAAW,IAAI,eAAe,EAAS,CAI7C,OAHA,EAAS,QAAQ,EAAK,CACtB,GAAU,KAEG,CACX,EAAW,GACX,EAAW,OAAO,CAClB,aAAa,EAAM,CACnB,EAAS,YAAY,EAKzB,IAAa,GAAiC,EClExC,GAAkB,QAClB,GAAkB,IAAI,QAE5B,SAAS,GAAoB,EAAc,EAAkB,EAA4D,CACvH,OAAO,OAAO,OAAO,CACnB,GAAI,GACJ,MAAO,OAAO,OAAO,CAAE,OAAM,WAAU,OAAM,CAAC,CAC/C,CAAC,CAGJ,SAAS,GAAY,EAA4C,CAC/D,OAAO,GAAc,mBAAqB,GAAkB,GAAkB,QAGhF,SAAS,GAAa,EAA0C,CAC9D,OAAuB,OAAO,GAAS,YAAhC,GAA4C,YAAa,GAAQ,OAAO,EAAK,SAAY,UAAY,EAAK,QAAQ,aAAa,GAAK,SAG7I,SAAS,GAAiB,EAAoC,CAE5D,MADI,CAAC,GAAQ,OAAO,GAAS,UAAY,GAAa,EAAK,CAAS,GAC5D,oBAAqB,GAAQ,OAAO,EAAK,iBAAoB,YAAgB,WAAY,GAAQ,OAAO,EAAK,QAAW,WAGlI,SAAS,GAAc,EAAsB,CAE3C,OADI,GAAa,EAAQ,CAAS,EAC3B,OAAO,GAAS,eAAkB,WAAa,EAAQ,cAAc,SAAS,CAAG,KAG1F,SAAS,GAAqB,EAAsB,EAAwB,CAAE,SAAQ,kBAA6E,EAAE,CAAE,CAErK,GADI,GAAS,KAAO,aAAe,GAAS,KAAO,OAEjD,GAAkB,MAClB,GAAQ,UAAY,MACpB,OAAO,EAAe,GAAK,OAAO,EAAO,SAAS,CAElD,MAAO,GAET,IAAM,EAAS,GAAS,SAAS,mBACjC,GAAI,IAAW,iBAAmB,IAAW,gBAAiB,MAAO,GACrE,GAAI,OAAO,GAAS,SAAY,WAAY,MAAO,GACnD,IAAM,EAAW,EAAQ,QAAQ,4CAA4C,CAG7E,MADA,EADI,CAAC,GACD,IAAc,GAAY,GAAW,WAAW,EAAS,EAI/D,SAAS,GAAwB,EAA6B,CACvD,GAAS,OACd,OAAO,OAAO,EAAQ,MAAO,CAC3B,MAAO,OACP,OAAQ,OACR,SAAU,OACV,UAAW,OACX,UAAW,OACX,SAAU,WACV,SAAU,SACV,KAAM,WACN,SAAU,IACV,UAAW,IACX,QAAS,QACV,CAAC,CAOJ,SAAgB,GAA6B,EAA4C,EAAmD,CACtI,MAAC,GAAgB,OAAO,GAAiB,UAC7C,MAAO,CACL,IAAI,kBAAmB,CACrB,OAAO,EAAa,kBAEtB,IAAI,OAAQ,CACV,OAAO,GAAS,EAAa,OAE/B,cAAc,EAAO,CACnB,OAAO,EAAa,gBAAgB,EAAM,EAE5C,OAAO,EAAO,CACZ,OAAO,EAAa,SAAS,CAAE,GAAG,EAAO,QAAO,CAAC,EAEnD,OAAO,EAAO,CACZ,OAAO,EAAa,SAAS,EAAM,EAEtC,CAkBH,SAAgB,GAA4B,CAC1C,eACA,SACA,YACA,SACA,QACA,iBACA,OACyB,EAAE,CAAwB,CACnD,GAAI,IAAW,QAAa,GAAa,EAAU,CACjD,MAAU,UAAU,6EAA6E,CAEnG,GAAI,CAAC,GAAiB,EAAU,CAC9B,MAAU,UAAU,+DAA+D,CAErF,GAAI,CAAC,GAAW,OAAO,EAAO,UAAa,UAAY,OAAO,EAAO,UAAa,SAChF,OAAO,GACL,kCACA,oCACA,+EACD,CAEH,GAAI,GAAY,EAAa,GAAK,GAChC,OAAO,GACL,mCACA,gEACA,oGACD,CAEH,GAAI,CAAC,GAAgB,OAAO,EAAa,eAAkB,WACzD,OAAO,GACL,mCACA,gEACA,4FACD,CAEH,IAAM,EAAe,GAAS,EAAa,MAC3C,GAAI,CAAC,GAAc,SAAW,CAAC,GAAc,SAC3C,OAAO,GACL,iCACA,qCACA,4DACD,CAEH,IAAM,EAAY,GAAgB,IAAI,EAAU,CAChD,GAAI,IAAc,QAAa,IAAc,EAC3C,OAAO,GACL,4BACA,sDACA,uDACD,CAGH,IAAM,MAAuB,GAC3B,mCACA,iDACA,iGACD,CACK,MAAqB,GACzB,mCACA,gEACA,oGACD,CAEK,MAAuB,CAC3B,IAAM,EAAU,EAAa,cAAe,CAClC,SACR,SAAU,EAAU,cACrB,CAAC,CACF,OAAO,GAAW,OAAO,GAAY,UAAY,YAAa,GAAW,OAAO,EAAQ,SAAY,SAAW,EAAyB,MAGpI,EAAkB,GAAsE,CAC5F,GAAgB,IAAI,EAAW,EAAa,CAC5C,EAAU,QAAQ,oBAAsB,EAAa,QACrD,EAAU,QAAQ,mBAAqB,EAAa,SACpD,EAAU,QAAQ,oBAAsB,OAAO,EAAO,SAAS,CAC/D,IAAM,EAAW,GAAuB,CACtC,SAAU,EAAU,cACpB,iBAAoB,EACpB,eAAkB,EAClB,QAAS,GACV,CAAC,CACF,GAAwB,EAAQ,CAChC,IAAM,EAAa,GAAc,EAAQ,CACzC,GAAwB,EAAW,CACnC,IAAM,EAAe,OAAO,cAAc,EAAO,WAAW,CACxD,CAAE,SAAU,OAAO,EAAO,SAAS,CAAE,WAAY,EAAO,WAAY,CACpE,KACE,EAAe,GAAgB,EACjC,EAA8B,CAAE,MAAK,QAAS,EAAW,OAAQ,EAAc,CAAC,KAC1E,GACN,GAAY,UACd,EAAW,QAAQ,oBAAsB,OAAO,EAAO,SAAS,CAChE,EAAW,QAAQ,oBAAsB,EAAa,QACtD,EAAW,QAAQ,mBAAqB,EAAa,UAEvD,GAAgB,yBAA0B,CACxC,SAAU,EAAa,SACvB,QAAS,EAAa,QACtB,SAAU,OAAO,EAAO,SAAS,CACjC,WAAY,EAAQ,SAAW,KAChC,CAAC,CACF,IAAM,MAAyB,CAE7B,GAAU,CACV,GAAc,CAGV,EAAQ,aAAe,IACrB,OAAO,EAAU,aAAgB,WAAY,EAAU,YAAY,EAAQ,CAC1E,EAAU,mBAAmB,EAEhC,GAAgB,IAAI,EAAU,GAAK,GAAc,GAAgB,OAAO,EAAU,CACtF,OAAO,EAAU,QAAQ,oBACzB,OAAO,EAAU,QAAQ,mBACzB,OAAO,EAAU,QAAQ,qBAEvB,EACJ,GAAI,CACF,EAAa,OAAO,EAAa,QAAW,WACxC,QAAQ,QAAQ,EAAa,OAAO,CAAU,SAAiC,QAAS,EAAS,MAAO,EAAc,CAAC,CAAC,CACxH,QAAQ,SAAS,OACd,EAAO,CAEd,MADA,GAAkB,CACZ,EAER,MAAO,CACL,GAAI,GACJ,QAAS,SAAY,CACnB,GAAkB,CAElB,MAAM,MADe,MACL,EAEnB,EAGG,EAAQ,GAAgB,CAC9B,GAAI,EAEF,OADI,GAAqB,EAAO,EAAW,CAAE,SAAQ,iBAAgB,CAAC,CAAS,GAAc,CACtF,EAAe,EAAM,CAG9B,IAAM,EAAW,EAAU,cACrB,EAAM,GAAU,aAAe,WAGrC,GAAI,EADa,OADA,GAAU,aAAa,kBAAoB,WAAW,mBAClC,YAAc,OAAO,EAAI,uBAA0B,YACzE,OAAO,GAAgB,CAEtC,IAAI,EACE,EAAY,GAAgB,CAChC,WACA,UAAa,CACX,GAAI,EAAQ,MAAO,GACnB,IAAM,EAAU,GAAgB,CAGhC,MAFI,CAAC,GAAW,GAAqB,EAAS,EAAW,CAAE,SAAQ,iBAAgB,CAAC,CAAS,IAC7F,EAAS,EAAe,EAAQ,CACzB,KAEV,CAAC,CACF,MAAO,CACL,GAAI,GACJ,QAAS,SAAY,CACnB,GAAW,CACX,MAAM,GAAQ,WAAW,EAE5B,CChRH,IAAa,GAA0B,OAAO,OAAoB,CAChE,KAAM,OACN,MAAO,OACP,MAAO,EACR,CAAC,CAEW,GAA6B,OAAO,OAAoB,CACnE,KAAM,QACN,KAAM,OAAO,OAAO,CAAE,MAAO,IAAM,KAAM,WAAY,CAAC,CACtD,MAAO,OACP,MAAO,EACR,CAAC,CAEW,GAA2B,OAAO,OAAoB,CACjE,KAAM,OACN,MAAO,OACP,MAAO,EACR,CAAC,CAEF,SAAgB,GAAmC,EAAkD,CACnG,MAAO,CACL,OAAQ,EAAS,UACjB,QAAS,UACT,SAAU,EAAS,oBACnB,MAAO,EAAS,WAChB,SAAU,GACV,UAAW,GACX,QAAS,GACT,SAAU,GACV,OAAQ,OACR,cAAe,GACf,iBAAkB,GAClB,iBAAkB,EAAS,kBAC3B,SAAU,EAAS,cACpB,CAGH,SAAgB,GAA0B,EAA4B,EAAmH,EAAE,CAAE,CAC3L,IAAM,EAAuB,EAAE,CAC/B,GAAI,EAAS,aAAc,CACzB,IAAM,EAAQ,OAAO,OAAO,CAC1B,QAAS,EAAS,aAClB,SAAU,EAAS,UACpB,CAAC,CACF,EAAO,KAAK,CACV,GAAI,EAAS,aACb,SAAU,EAAS,UACnB,SAAU,EAAS,uBACnB,SAAU,CAAE,SAAU,EAAS,uBAAwB,KAAM,EAAS,aAAc,CACpF,OAAQ,EAAS,gBAAkB,GACnC,MAAO,EAAS,eAAiB,EAAS,aAC1C,MAAO,CACL,OAAQ,EAAM,OACd,aAAc,GAA6B,EAAM,aAAc,EAAM,CACrE,QACA,GAAG,EAAM,aACV,CACF,CAAC,CAWJ,OATA,EAAO,KAAK,CACV,GAAI,EAAS,gBACb,SAAU,EAAS,UACnB,SAAU,EAAS,0BACnB,SAAU,CAAE,SAAU,EAAS,0BAA2B,KAAM,EAAS,gBAAiB,CAC1F,OAAQ,EAAS,kBACjB,MAAO,EAAS,iBAChB,MAAO,CAAE,OAAQ,EAAM,OAAQ,CAChC,CAAC,CACK,OAAO,OAAO,EAAO,CAG9B,eAAsB,GAAwB,EAAc,EAA6C,EAA4B,EAAqD,EAAE,CAAE,CAC5L,IAAM,EAAY,EAAO,WAAa,EAAI,MAAM,YAAa,GAAM,CACnE,GAAI,CAAC,EAAW,CACd,GAAgB,wBAAyB,CACvC,OAAQ,qBACR,SAAU,GAAU,WAAa,KAClC,CAAE,CAAE,MAAO,OAAQ,CAAC,CACrB,OAEF,IAAM,EAAW,EAAO,UAAY,EAAI,MAAM,WAAY,GAAM,CAChE,GAAI,CAAC,EACH,MAAU,UAAU,QAAQ,EAAS,UAAU,oCAAoC,CAErF,OAAO,GAAkB,EAAK,EAAQ,EAAU,EAAU,EAAW,EAAO,CAG9E,eAAe,GAAkB,EAAc,EAA6C,EAA4B,EAAoB,EAAsB,EAAqD,EAAE,CAAE,CACzN,IAAM,EAAe,GAAuB,EAAK,EAAO,CAClD,EAAqB,EAAS,aAAa,GAAmC,EAAS,CAAC,CAC9F,GAAgB,2BAA4B,CAC1C,SAAU,EAAS,UACnB,MAAO,EAAS,mBAAmB,OAAS,KAC7C,CAAC,CACF,IAAM,EAAkB,EAAI,IAAI,sBAAsB,CAChD,EAAuB,EAAE,CAC/B,EAAI,WAAa,SAAY,CAC3B,IAAK,IAAM,IAAW,CAAC,GAAG,EAAU,CAAC,SAAS,CAAE,MAAM,KAAW,CACjE,GAAoB,EACpB,CACF,GAAI,CACF,IAAK,IAAM,KAAS,GAA0B,EAAU,CACtD,OAAQ,EACR,eACA,aAAc,EAAO,aACtB,CAAC,CACA,EAAU,KAAK,MAAM,EAAU,WAAW,EAAM,CAAC,OAE5C,EAAO,CACd,IAAK,IAAM,IAAW,CAAC,GAAG,EAAU,CAAC,SAAS,CAAE,MAAM,KAAW,CAEjE,MADA,GAAoB,CACd,0fCjHG,GAAY,wBACZ,GAAqB,sCACrB,GAAkB,0CAClB,GAAY,GAAgB,SAC5B,GAAsB,sBAEtB,GAAe,mBACf,GAAkB,sBAClB,GAAO,GACP,GAAiB,OAAO,OAAO,CAAC,WAAW,CAAC,CAC5C,GAAoB,OAAO,OAAO,CAAE,MAAO,GAAgB,CAAC,CAE5D,GAAiB,GACjB,GAAoB,GACpB,GAAe,GACf,GAAgB,kBAChB,GAAmB,qBACnB,GAAe,UACf,GAAkB,UAClB,GAAyB,6BACzB,GAA4B,gCAC5B,GAAiB,mcCrBjB,GAAY,oBACZ,GAAqB,kCACrB,GAAkB,sCAClB,GAAY,GAAgB,KAC5B,GAAsB,kBAEtB,GAAe,eACf,GAAkB,kBAClB,GAAiB,OAAO,OAAO,CAAC,OAAO,CAAC,CACxC,GAAoB,OAAO,OAAO,CAAE,MAAO,GAAgB,CAAC,CAE5D,GAAiB,GACjB,GAAoB,GACpB,GAAgB,cAChB,GAAmB,iBAEnB,GAAkB,SAClB,GAAyB,yBACzB,GAA4B,ydClB5B,GAAY,uBACZ,GAAqB,qCACrB,GAAkB,yCAClB,GAAY,GAAgB,QAC5B,GAAsB,qBAEtB,GAAe,kBACf,GAAkB,qBAClB,GAAiB,OAAO,OAAO,CAAC,UAAW,QAAQ,CAAC,CACpD,GAAoB,OAAO,OAAO,CAAE,MAAO,GAAgB,CAAC,CAE5D,GAAiB,GACjB,GAAoB,GACpB,GAAgB,iBAChB,GAAmB,oBACnB,GAAe,QACf,GAAkB,SAClB,GAAyB,4BACzB,GAA4B,+BCfzC,SAAS,GAAY,EAAwB,CAE3C,OADI,GAAS,OAAO,GAAU,UAAY,SAAU,GAAS,OAAO,EAAM,MAAS,SAAiB,EAAM,KACnG,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAG/D,SAAgB,GAAiB,CAAE,WAAU,UAAS,SAAQ,UAA2G,CACvK,IAAI,EAAO,GACL,EAAU,EAAS,cAAc,IAAI,CAC3C,EAAQ,aAAa,OAAQ,SAAS,CACtC,IAAM,EAAU,EAAS,cAAc,MAAM,CAC7C,EAAQ,IAAM,4BACd,IAAM,EAAO,EAAS,cAAc,MAAM,CAC1C,EAAK,aAAa,aAAc,UAAU,CAC1C,IAAM,EAAO,EAAS,cAAc,OAAO,CACrC,EAAU,EAAS,cAAc,QAAQ,CAC/C,EAAQ,UAAY,WACpB,EAAQ,YAAc,sBACtB,EAAQ,aAAa,aAAc,wBAAwB,CAC3D,IAAM,EAAM,EAAS,cAAc,QAAQ,CAC3C,EAAI,UAAY,WAChB,EAAI,YAAc,SAClB,EAAI,aAAa,aAAc,kBAAkB,CACjD,IAAM,EAAU,EAAS,cAAc,SAAS,CAChD,EAAQ,UAAY,kDACpB,EAAQ,KAAO,SAAU,EAAQ,YAAc,cAC/C,IAAM,EAAa,EAAS,cAAc,SAAS,CACnD,EAAW,UAAY,oDACvB,EAAW,KAAO,SAAU,EAAW,YAAc,aACrD,EAAK,OAAO,EAAS,EAAK,EAAS,EAAW,CAC9C,IAAM,EAAO,KAAO,IAAkD,CACpE,EAAQ,SAAW,EAAW,SAAW,GACzC,GAAI,CAAE,IAAM,EAAO,MAAM,EAAO,KAAyB,eAAgB,EAAK,CAAM,GAAM,EAAO,OAAO,EAAK,OACtG,EAAO,CAAM,IAAM,EAAQ,YAAc,GAAY,EAAM,SAC1D,CAAM,IAAM,EAAQ,SAAW,EAAW,SAAW,MAE3D,EAAmC,KACnC,EACA,EAAU,GACV,EAAiB,EACjB,EACA,EACE,MAAmB,CACvB,IAAM,EAAO,GAAW,KAClB,EAAS,GAAM,OAErB,OADI,OAAO,GAAQ,UAAa,UAAY,CAAC,EAAO,UAAY,OAAO,EAAO,YAAe,SAAiB,KACvG,GAEH,GAAe,EAAkD,IAAyB,CAC9F,IAAM,EAAO,CAAE,SAAU,EAAO,SAAU,iBAAkB,EAAO,WAAY,CACzE,EAAU,CAAE,GAAI,IAAW,OAAY,EAAE,CAAG,CAAE,SAAQ,CAAG,YAAa,GAAO,CAEnF,OADI,OAAO,EAAO,SAAY,WAAmB,EAAO,QAAQ,CAAE,GAAG,EAAM,GAAG,EAAS,CAAC,CACjF,EAAO,KAAK,kBAAmB,EAAM,EAAQ,EAEhD,MAAwB,CAC5B,GAAkB,EAClB,aAAa,EAAU,CACvB,EAAY,OACZ,GAAW,OAAO,CAClB,EAAY,QAER,MAAkB,CACtB,IAAM,EAAQ,EACR,EAAQ,IAAI,gBAClB,EAAY,EACZ,IAAM,EAAO,SAAY,CACvB,GAAI,CAAC,GAAQ,IAAU,EAAgB,OACvC,IAAM,EAAO,GAAY,CACzB,GAAI,CAAC,GAAQ,EAAK,QAAU,WAAa,OAAO,EAAK,OAAO,YAAe,SAAU,OACrF,IAAM,EAAS,CAAE,SAAU,EAAK,OAAO,SAAU,WAAY,EAAK,OAAO,WAAY,CACrF,GAAI,CACF,IAAM,EAAW,MAAM,EAAY,EAAQ,EAAM,OAAO,CACxD,GAAI,CAAC,GAAQ,IAAU,EAAgB,OACvC,IAAM,EAAU,GAAY,CAC5B,GAAI,GAAS,OAAO,WAAa,EAAO,UAAY,EAAQ,QAAU,UAAW,OACjF,EAAY,CAAE,SAAU,EAAO,SAAU,IAAK,GAAU,IAAK,QAAS,GAAU,QAAS,MAAO,GAAI,OAC7F,EAAO,CACd,GAAI,CAAC,GAAQ,IAAU,GAAkB,EAAM,OAAO,QAAS,OAC/D,IAAM,EAAW,GAAW,WAAa,EAAO,SAAW,EAAY,OACjE,EAAO,GAAY,EAAM,CAAC,SAAS,0BAA0B,EAC7D,GAAS,OAAO,GAAU,UAAY,SAAU,IAAU,EAAM,OAAS,8BAAgC,EAAM,OAAS,gCAC9H,EAAY,CACV,SAAU,EAAO,SACjB,IAAK,GAAU,IACf,QAAS,GAAU,QACnB,MAAO,EAAO,GAAK,GAAY,EAAM,CACtC,CAEH,GAAQ,CACJ,GAAC,GAAQ,IAAU,GAAkB,GAAY,EAAE,QAAU,aACjE,EAAY,WAAW,EAAM,IAAK,GAE/B,GAAM,EAEP,MAAiB,CACrB,IAAM,EAAO,GAAY,CACnB,EAAM,GAAM,QAAU,WAAa,OAAO,EAAK,OAAO,YAAe,SACvE,GAAG,EAAK,OAAO,SAAS,GAAG,EAAK,OAAO,aACvC,GACA,IAAQ,IACZ,EAAU,EACV,EAAY,OACZ,GAAiB,CACb,GAAK,GAAW,GAEhB,EAAU,GAAiB,CAE/B,GADA,EAAM,gBAAgB,CAClB,GAAY,CAAE,OAClB,IAAM,EAAO,OAAO,EAAQ,OAAS,GAAG,CAAC,MAAM,CACzC,EAAQ,OAAO,EAAI,OAAS,GAAG,CAAC,MAAM,CAC5C,GAAI,CAAC,GAAQ,CAAC,EAAO,CACnB,EAAQ,YAAc,4DACtB,OAEG,EAAK,CAAE,OAAM,QAAO,CAAC,EAEtB,MAAe,CAAO,GAAY,EAAO,EAAK,CAAE,KAAM,KAAM,CAAC,EACnE,EAAK,iBAAiB,SAAU,EAAO,CACvC,EAAW,iBAAiB,QAAS,EAAO,CAC5C,EAAQ,OAAO,EAAM,EAAS,EAAS,EAAK,CAC5C,IAAI,GACE,EAAa,GAA4B,CAC7C,GAAI,GAAK,WAAW,yBAAyB,CAAE,CACzC,EAAQ,aAAa,MAAM,GAAK,GAAK,EAAQ,aAAa,MAAO,EAAI,CACrE,EAAQ,SAAW,KAAO,EAAQ,OAAS,IAC/C,OAEE,EAAQ,aAAa,MAAM,EAAI,MAAM,EAAQ,gBAAgB,MAAM,CACnE,EAAQ,SAAW,KAAM,EAAQ,OAAS,KAE1C,GAAc,GAA8C,CAC5D,EAAK,SAAW,KAAM,EAAK,OAAS,IACxC,IAAM,EAAQ,GAAW,WAAa,EAAK,OAAO,SAAW,EAAY,OACnE,EAAc,GAAO,MACvB,EAAM,MACN,EAAK,QAAU,UACb,iBAAiB,GAAO,UAAY,OAAY,GAAK,YAAY,EAAM,YAAY,GAAO,IAAM,GAAK,kBACrG,UAAU,EAAK,QACjB,EAAQ,cAAgB,IAAa,EAAQ,YAAc,GAC/D,EAAU,GAAO,IAAI,CACjB,EAAK,cAAgB,KAAI,EAAK,YAAc,KAE5C,MAAe,CACnB,IAAM,EAAO,GAAY,CACzB,GAAI,EAAM,CACR,GAAW,EAAK,CAChB,OAEF,CAAiB,CAAK,SAAS,GAC/B,IAAM,EAAQ,EAAO,UAAU,CACzB,EAAU,KAAK,UAAU,EAAM,QAAQ,CACzC,KAAe,IACjB,GAAa,EACb,EAAQ,MAAQ,EAAM,SAAS,MAAQ,GACvC,EAAI,MAAQ,EAAM,SAAS,OAAS,IAEtC,IAAM,EAAc,EAAM,YACpB,EAAQ,GAAa,MACrB,EAAQ,GAAO,WACf,EAAQ,IAAU,KAAK,KAAK,CAAG,KAAK,MAAM,EAAM,CAAG,MAAS,EAAM,WAAa,GAAa,QAAQ,UAAY,GAAa,QAAQ,QAAU,SAC/I,EAAc,EAAM,QAAU,EAChC,GAAG,GAAa,QAAQ,OAAS,EAAM,SAAS,GAAa,QAAQ,MAAQ,UAAU,EAAY,OAAO,MAAM,MAAM,EAAG,EAAE,GAAK,KAAK,GAAa,QAAQ,aAAe,YAAY,EAAY,OAAO,aAAa,MAAM,EAAG,GAAG,GAAK,GAAG,KAAK,EAAQ,YAAY,IAAQ,EAAM,UAAY,OAAY,GAAK,YAAY,EAAM,YAAY,EAAQ,iBAAmB,KAAO,0BAC7W,+BACA,EAAQ,cAAgB,IAAa,EAAQ,YAAc,GAC/D,EAAU,GAAO,IAAI,CACrB,IAAM,GAAY,GAAa,YAAc,GAAG,EAAY,YAAY,iCAAmC,KAAO,GAAa,MAAM,IAAI,GAAS,IAAI,EAAM,SAAS,IAAI,EAAM,MAAM,IAAI,EAAM,OAAO,CAAC,KAAK;EAAK,EAAI,IACjN,EAAK,cAAgB,IAAU,EAAK,YAAc,IAElD,EAAyB,EAAO,UAAU,EAAO,CACjD,GAAS,GAA2B,GAAU,OAAO,EAAO,WAAc,WAAa,EAAiC,OAAU,CAClI,EAAuB,GAAO,cAAgB,CAClD,EAAY,GAAO,aAAa,CAChC,GAAU,CACN,GAAM,GAAQ,EAClB,CAWF,OAVA,GAAQ,KACc,CACpB,EAAO,GACP,GAAiB,CACjB,GAAwB,CACxB,GAAsB,CACtB,GAAO,SAAS,CAChB,EAAK,oBAAoB,SAAU,EAAO,CAC1C,EAAW,oBAAoB,QAAS,EAAO,EC7LnD,IAAM,GAAc,IAAI,IAClB,GAAiB,IAAI,IAGvB,GAAyB,KAE7B,SAAS,GAAc,EAAoB,CACzC,IAAK,IAAM,KAAQ,GACjB,GAAI,CACF,EAAK,EAAO,MACN,GAMZ,SAAS,IAAc,CACrB,IAAK,IAAM,KAAY,GAAgB,GAAU,CAMnD,SAAgB,IAAgB,CAC9B,OAAO,GAGT,SAAgB,GAAoB,EAAsB,CACxD,GAAI,OAAO,GAAa,WACtB,MAAU,UAAU,mDAAmD,CAGzE,OADA,GAAe,IAAI,EAAS,KACf,GAAe,OAAO,EAAS,CAM9C,SAAgB,GAAc,EAAiB,CACzC,IAAW,MAAQ,IAAW,MAC9B,KAAe,IACnB,GAAa,EACb,GAAc,EAAO,CACrB,IAAa,CACT,OAAO,SAAa,MACtB,SAAS,gBAAgB,KAAO,IAQpC,SAAgB,GAAuB,EAAyC,CAC9E,GAAI,OAAO,GAAc,WACvB,MAAU,UAAU,uDAAuD,CAI7E,OAFA,GAAY,IAAI,EAAU,CAC1B,EAAU,GAAW,KACR,GAAY,OAAO,EAAU,CCxD5C,SAAgB,EAAiB,EAAuC,CACtE,IAAI,EAAsB,KACpB,EAAY,IAAI,IAChB,GAAU,EAAkB,IAAoC,CACpE,IAAI,EAAsC,EAC1C,IAAK,IAAM,KAAQ,EAAI,MAAM,IAAI,CAAE,EAAQ,OAAO,GAAU,SAAW,EAAM,GAAQ,OACrF,OAAO,OAAO,GAAU,SAAW,EAAQ,QAe7C,MAAO,CAAE,GAbE,EAAa,IAA2C,CACjE,IAAM,EAAU,EAAO,EAAS,GAAU,EAAI,EAAI,EAAO,EAAS,GAAI,EAAI,EAAI,EAC9E,OAAO,EAAO,EAAQ,QAAQ,kBAAmB,EAAW,IAAiB,OAAO,EAAK,IAAS,GAAG,CAAC,CAAG,GAW/F,UATO,IACjB,EAAU,IAAI,EAAS,KACV,CAAE,EAAU,OAAO,EAAS,GAOpB,cAAiB,EAAS,UAL9B,GAAqB,CAClC,SAAS,MAAQ,IAAS,MAC9B,GAAU,EACV,IAAK,IAAM,KAAY,EAAW,GAAU,GAEc,CCpB9D,IAAM,EAAO,EAAiB,CAAE,w0GAAI,swEAAI,CAAC,CAE5B,GAAI,EAAK,EACT,GAAkB,EAAK,UACvB,GAAY,EAAK,UACL,EAAK,UAE9B,GAAuB,EAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCVtB,IAAa,GAAoC,oCAEpC,EAA0B,OAAO,OAAO,CACnD,OAAQ,yBACR,SAAU,2BACV,aAAc,gCACd,gBAAiB,mCACjB,QAAS,0BACT,QAAS,2BACT,iBAAkB,qCAClB,UAAW,6BACX,QAAS,2BACT,OAAQ,yBACR,SAAU,2BACV,eAAgB,kCAChB,kBAAmB,sCACnB,kBAAmB,sCACnB,oBAAqB,qCACrB,gBAAiB,oCACjB,SAAU,4BACX,CAAC,CAE0C,OAAO,OAAO,CACxD,IAAK,GACL,KAAM,SACN,SAAU,CAAC,eAAgB,SAAU,OAAQ,QAAS,UAAU,CAChE,WAAY,CACV,aAAc,CAAE,KAAM,SAAU,CAChC,OAAQ,CAAE,KAAM,SAAU,CAC1B,KAAM,CAAE,KAAM,CAAC,OAAQ,OAAQ,SAAS,CAAE,CAC1C,cAAe,CAAE,KAAM,SAAU,QAAS,GAAI,QAAS,IAAK,CAC5D,gBAAiB,CAAE,KAAM,UAAW,CACpC,UAAW,CAAE,KAAM,QAAS,MAAO,CAAE,KAAM,SAAU,CAAE,CACvD,cAAe,CAAE,KAAM,QAAS,MAAO,CAAE,KAAM,SAAU,CAAE,CAC3D,QAAS,CACP,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,OAAQ,OAAQ,aAAa,CAChD,WAAY,CACV,KAAM,CAAE,MAAO,SAAU,CACzB,KAAM,CAAE,KAAM,SAAU,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,WAAY,CAAE,KAAM,SAAU,CAC/B,CACF,CACF,CACD,MAAO,CACL,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,OAAQ,OAAQ,SAAU,SAAS,CACtD,WAAY,CACV,KAAM,CAAE,MAAO,OAAQ,CACvB,KAAM,CAAE,KAAM,SAAU,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,OAAQ,CACN,KAAM,CAAC,OAAQ,SAAU,MAAO,QAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,KAAM,OAAQ,QAAQ,CACnH,CACD,eAAgB,CAAE,KAAM,UAAW,CACnC,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,WAAW,CACtD,WAAY,CACV,KAAM,CAAE,MAAO,QAAS,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,SAAU,CAAE,KAAM,SAAU,CAC5B,cAAe,CAAE,KAAM,SAAU,CACjC,eAAgB,CAAE,KAAM,SAAU,CACnC,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAAC,CC9EF,IAAa,GAAsB,CACjC,MAAO,QAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,KAAM,OAAQ,SAAU,MAAO,OACnG,CAGY,GAAyB,CACpC,SACA,OACA,WACA,UACA,WACA,eACA,iBACA,WACA,QACA,OACA,KACD,CAEK,GAAkD,IAAI,IAAI,CAC9D,OAAQ,SAAU,MAAO,OAAQ,OAAQ,OAAQ,QAClD,CAAC,CACI,GAAyB,IAAI,IAAI,CAAC,KAAM,MAAO,KAAM,MAAO,MAAO,MAAO,OAAO,CAAC,CAExF,SAAgB,GAAU,EAAsB,CAC9C,IAAM,EAAQ,EAAK,YAAY,IAAI,CACnC,OAAO,EAAQ,EAAI,GAAK,EAAK,MAAM,EAAG,EAAM,CAQ9C,SAAgB,GAAmB,EAAqB,CACtD,OAAO,EAAI,MAAM,CAAC,QAAQ,MAAO,IAAI,CAAC,QAAQ,OAAQ,IAAI,CAAC,QAAQ,aAAc,GAAG,CAGtF,SAAgB,GAAY,EAA0B,CACpD,OAAO,EAAK,OAAS,QAAU,EAAK,KAAO,EAAK,KAGlD,SAAgB,GAAgB,EAA6B,CAC3D,OAAO,EAAa,EAGtB,SAAgB,GAAa,EAA4B,CACvD,IAAM,EAAQ,EAAK,aAAa,CAChC,GAAI,EAAM,SAAS,aAAa,CAAE,MAAO,OACzC,GAAI,EAAM,SAAS,WAAW,CAAE,MAAO,OACvC,GAAI,EAAM,SAAS,aAAa,CAAE,OAAO,EAAM,SAAS,QAAQ,CAAG,QAAU,OAC7E,GAAI,EAAM,SAAS,cAAc,EAAI,IAAU,aAAc,MAAO,QACpE,GAAI,EAAM,SAAS,kBAAkB,CAAE,MAAO,OAC9C,IAAM,EAAM,EAAM,MAAM,IAAI,CAAC,KAAK,EAAI,GAQtC,MAPI,CAAC,OAAQ,MAAO,KAAM,MAAO,KAAM,MAAO,MAAO,MAAO,KAAK,CAAC,SAAS,EAAI,CAAS,OACpF,CAAC,OAAQ,OAAO,CAAC,SAAS,EAAI,CAAS,SACvC,CAAC,KAAM,WAAY,MAAM,CAAC,SAAS,EAAI,CAAS,MAChD,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAM,CAAC,SAAS,EAAI,CAAS,QACjF,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAO,CAAC,SAAS,EAAI,CAAS,QAC1E,CAAC,MAAO,OAAQ,MAAM,CAAC,SAAS,EAAI,CAAS,QAC7C,CAAC,MAAO,MAAO,OAAQ,QAAQ,CAAC,SAAS,EAAI,CAAS,OACnD,QAGT,SAAgB,GACd,EACA,EACc,CACd,GAAI,EAAK,aAAa,CAAC,SAAS,WAAW,CAAE,MAAO,OACpD,IAAM,EAAS,GAAa,EAAK,CAEjC,OADI,IAAW,QAAU,EAAO,KAAM,GAAU,EAAM,OAAS,QAAQ,CAAS,QACzE,EAGT,SAAgB,GAAyB,EAAuB,CAC9D,IAAM,EAAQ,EAAK,aAAa,CAChC,GAAI,EAAM,SAAS,aAAa,EAAI,EAAM,SAAS,WAAW,CAAE,MAAO,GACvE,IAAM,EAAM,EAAM,SAAS,IAAI,CAAG,EAAM,MAAM,EAAM,YAAY,IAAI,CAAG,EAAE,CAAG,EAC5E,OAAO,GAAuB,IAAI,EAAI,CAGxC,SAAgB,GACd,EACS,CAET,OADI,EAAK,OAAO,SAAW,EAAU,GAC9B,GAAqB,IAAI,EAAK,OAAO,EAAI,GAAyB,EAAK,KAAK,CAGrF,SAAgB,GACd,EACA,EACoB,CACpB,GAAI,EAAK,OAAS,OAAQ,OAAO,EACjC,GAAI,EAAK,OAAS,QAAS,OAAO,EAAU,KAAM,GAAS,EAAK,OAAS,EAAK,SAAS,CAIzF,SAAgB,GAAY,EAAmC,CAI7D,OAHI,IAAU,QAAa,GAAS,EAAU,GAC1C,EAAQ,KAAa,GAAG,EAAM,IAC9B,EAAQ,KAAO,KAAa,IAAI,EAAQ,MAAM,QAAQ,EAAE,CAAC,KACtD,IAAI,GAAS,KAAO,OAAO,QAAQ,EAAE,CAAC,KAG/C,SAAgB,GAAW,EAAgC,CACzD,GAAI,CAAC,EAAI,MAAO,GAChB,GAAI,CACF,OAAO,IAAI,KAAK,EAAG,CAAC,mBAAmB,OAAW,CAAE,KAAM,UAAW,MAAO,QAAS,IAAK,UAAW,CAAC,MAChG,CACN,MAAO,IAIX,SAAgB,GACd,EACA,EACA,EACA,EACQ,CACR,IAAM,EAAO,IAAQ,OAAS,GAAK,EAUnC,OATI,IAAQ,OACH,EAAO,GAAS,EAAE,CAAC,cAAc,GAAS,EAAE,CAAC,EAAI,EAAO,EAAE,KAAK,cAAc,EAAE,KAAK,CAEzF,IAAQ,iBACH,GAAS,GAAa,EAAE,CAAG,GAAa,EAAE,EAAK,EAAE,KAAK,cAAc,EAAE,KAAK,EAEhF,IAAQ,gBACH,GAAS,GAAS,EAAE,CAAG,GAAS,EAAE,EAAK,EAAE,KAAK,cAAc,EAAE,KAAK,EAErE,EAAO,EAAE,KAAK,cAAc,EAAE,KAAK,CAG5C,SAAS,GAAS,EAA0B,CAG1C,OAFI,EAAK,OAAS,SAAiB,SAC/B,EAAK,OAAS,OAAe,EAAK,WAAa,EAAK,OACjD,EAAK,KAGd,SAAS,GAAa,EAA0B,CAG9C,OAFI,EAAK,OAAS,SACd,EAAK,OAAS,OAAe,EAAK,gBAAkB,EACjD,EAGT,SAAS,GAAS,EAA0B,CAG1C,OAFI,EAAK,OAAS,SACd,EAAK,OAAS,OAAe,EAAK,eAAiB,EAChD,EAGT,SAAgB,GAAc,EAAkB,EAAwB,CAUtE,OATK,EACD,EAAK,OAAS,SACT,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,EAAI,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,CAEvF,EAAK,OAAS,OACT,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,EACzC,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,EACvC,EAAK,OAAO,KAAM,GAAU,EAAM,KAAK,aAAa,CAAC,SAAS,EAAM,EAAI,EAAM,KAAK,aAAa,CAAC,SAAS,EAAM,CAAC,CAEjH,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,EACzC,EAAK,KAAK,aAAa,CAAC,WAAW,EAAM,EACzC,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,CAXzB,GCjIrB,IAAM,GAAmD,CACvD,IAAK,GACL,MAAO,GACP,KAAM,GACN,KAAM,GACN,MAAO,GACP,MAAO,GACP,MAAO,GACP,KAAM,GACN,GAAI,GACJ,KAAM,GACN,OAAQ,GACR,IAAK,GACL,KAAM,GACN,MAAO,GACR,CAEK,GAAyC,CAC7C,OAAQ,GACR,KAAM,GACN,SAAU,GACV,QAAS,GACT,MAAO,GACP,SAAU,GACV,eAAgB,GAChB,QAAS,GACT,iBAAkB,GAClB,kBAAmB,GACnB,SAAU,GACV,KAAM,GACN,MAAO,GACP,GAAI,GACJ,MAAO,GACP,KAAM,GACN,MAAO,GACP,QAAS,GACT,kBAAmB,GACnB,kBAAmB,GACpB,CAED,SAAgB,GAAW,EAAmD,CAC5E,OAAO,GAAa,IAAW,GAGjC,SAAgB,GAAS,EAA0B,CACjD,OAAO,GAAW,IAAS,GAG7B,SAAgB,GAAS,EAAkB,EAAa,GAAmB,CAGzE,OAFI,EAAK,OAAS,SAAiB,EAAa,GAAa,GACzD,EAAK,OAAS,OAAe,GAAW,EAAK,OAAO,CACjD,GAAS,EAAK,KAAK,CCvD5B,SAAgB,GACd,EACA,EACA,EACQ,CACR,IAAM,EAAQ,EAAE,EAAI,CACpB,OAAO,IAAU,EAAM,EAAE,EAAY,CAAG,EAG1C,SAAgB,GACd,EACA,EACQ,CACR,OAAO,GACL,EACA,6BAA6B,IAC7B,oCACD,CAGH,SAAgB,GACd,EACA,EACY,CACZ,OAAO,GAAoB,IAAK,IAAY,CAC1C,GAAI,UAAU,IACd,SACA,MAAO,GACL,EACA,IAAW,MAAQ,+BAAiC,4BAA4B,IAChF,iCACD,CACD,OAAQ,EAAe,IAAI,EAAO,CACnC,EAAE,CAGL,SAAgB,GACd,EACA,EACgB,CAChB,OAAO,GAAuB,IAAK,IAAU,CAC3C,GAAI,QAAQ,IACZ,OACA,MAAO,GAAe,EAAM,EAAE,CAC9B,OAAQ,EAAY,IAAI,EAAK,CAC9B,EAAE,CAGL,SAAgB,GACd,EACA,EACA,EACuD,CACvD,GAAM,CAAC,EAAO,GAAS,EAAS,MAAM,IAAI,CACpC,EAAW,IAAI,IAAI,EAAe,CAClC,EAAQ,IAAI,IAAI,EAAY,CAClC,GAAI,IAAU,QAAU,EAGtB,OAFI,EAAM,IAAI,EAAM,CAAE,EAAM,OAAO,EAAM,CACpC,EAAM,IAAI,EAAM,CACd,CAAE,WAAU,QAAO,CAE5B,IAAM,EAAS,EAGf,OAFI,EAAS,IAAI,EAAO,CAAE,EAAS,OAAO,EAAO,CAC5C,EAAS,IAAI,EAAO,CAClB,CAAE,WAAU,QAAO,CAG5B,SAAgB,GACd,EACA,EACQ,CACR,OAAO,EAAK,eACR,EAAE,wCAAwC,CAC1C,GACA,EACA,4BAA4B,EAAK,SACjC,iCACD,CAGL,SAAgB,GAAgB,CAC9B,UACA,QACA,cACA,cACA,iBACA,cACA,YACA,gBACA,iBAiBA,CACA,IAAM,EAAQ,EAAY,MAAM,CAAC,aAAa,CACxC,EAAe,IAAU,GACzB,EAAmB,EAAY,KAAO,EACtC,EAAe,EAAM,IAAI,EAAc,CAEvC,EAAgB,EACnB,OAAQ,GAAW,GAAU,EAAO,KAAK,GAAK,EAAY,CAC1D,WAAa,EAAe,OAAS,GAAK,EAAe,IAAI,MAAM,CAAC,CACpE,OAAQ,GAAW,CAClB,GAAI,CAAC,EAAO,MAAO,GACnB,IAAM,EAAS,GAAG,EAAO,KAAK,GAC9B,OAAO,GAAc,EAAQ,EAAM,EAC9B,EAAa,KAAM,GAAS,EAAK,KAAK,WAAW,EAAO,EAAI,GAAc,EAAM,EAAM,CAAC,EAC5F,CACD,UAAU,EAAG,IAAM,GAAa,EAAG,EAAG,OAAQ,EAAU,IAAI,CAAC,CAE1D,EAAc,EACjB,OAAQ,GAAS,GAAU,EAAK,KAAK,GAAK,EAAY,CACtD,OAAQ,GAAS,EAAe,OAAS,GAAK,EAAe,IAAI,EAAK,OAAO,CAAC,CAC9E,OAAQ,GAAS,CAAC,GAAS,GAAc,EAAM,EAAM,CAAC,CACtD,UAAU,EAAG,IAAM,GAAa,EAAG,EAAG,EAAU,IAAK,EAAU,IAAI,CAAC,CAEvE,GAAI,EAAkB,CACpB,IAAM,EAAO,IAAI,IACX,EAAiB,EAAE,CACzB,IAAK,IAAM,KAAQ,EACjB,IAAK,IAAM,KAAS,EAAK,OACnB,EAAK,IAAI,EAAM,KAAK,EAAI,CAAC,EAAY,IAAI,EAAM,KAAK,EACpD,GAAS,CAAC,GAAc,EAAO,EAAM,EAAI,CAAC,EAAK,KAAK,aAAa,CAAC,SAAS,EAAM,GACrF,EAAK,IAAI,EAAM,KAAK,CACpB,EAAI,KAAK,EAAM,EAInB,OADA,EAAI,MAAM,EAAG,IAAM,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC,CACzC,CAAE,cAAe,EAAE,CAAE,cAAa,UAAW,EAAK,eAAc,mBAAkB,CAG3F,IAAM,EAAsB,CAAC,GAAG,EAAc,CAC9C,IAAK,IAAM,KAAQ,EAAa,CAC9B,GAAI,EAAK,OAAO,SAAW,EAAG,CAC5B,EAAM,KAAK,EAAK,CAChB,SAEF,GAAI,EAAK,OAAO,SAAW,EAAG,CAC5B,EAAM,KAAK,GAAG,EAAK,OAAO,CAC1B,SAEF,EAAM,KAAK,EAAK,EACZ,GAAgB,EAAc,IAAI,EAAK,KAAK,GAAE,EAAM,KAAK,GAAG,EAAK,OAAO,CAE9E,MAAO,CAAE,gBAAe,cAAa,UAAW,EAAO,eAAc,mBAAkB,CAGzF,SAAgB,GAAc,EAAsB,EAA6B,CAE/E,OADI,EAAQ,MAAQ,EAAY,CAAE,MAAK,IAAK,EAAQ,MAAQ,MAAQ,OAAS,MAAO,CAC7E,CAAE,MAAK,IAAK,MAAO,CAG5B,SAAgB,GAAW,EAAsB,EAA6B,CAC5E,OAAO,EAAQ,MAAQ,EAAM,EAAU,CAAE,GAAG,EAAS,MAAK,CCjL5D,IAAM,GAA0E,CAC9E,CAAE,IAAK,OAAQ,SAAU,iCAAkC,MAAO,qBAAsB,CACxF,CAAE,IAAK,OAAQ,SAAU,iCAAkC,MAAO,QAAS,CAC3E,CAAE,IAAK,gBAAiB,SAAU,iCAAkC,MAAO,OAAQ,CACnF,CAAE,IAAK,iBAAkB,SAAU,qCAAsC,MAAO,QAAS,CAC1F,CAED,SAAgB,GAAc,CAC5B,QACA,cACA,cACA,YACA,SACA,WACA,aACA,gBACA,gBAWC,CACD,GAAM,CAAE,KAAM,IAAgB,CAG9B,OACE,UAAC,MAAD,CACE,UAAU,oCACV,KAAK,OACL,MAAO,CANS,oBAAqB,GAAQ,IAAK,GAAW,EAAO,MAAM,CAAC,KAAK,IAAI,CAM7E,CACP,QAAU,GAAU,CAAM,EAAM,SAAW,EAAM,eAAe,GAAc,WAJhF,EAME,SAAC,MAAD,CAAK,UAAU,oBAAoB,KAAK,eACrC,GAAQ,IAAK,GAAW,CACvB,IAAM,EAAS,EAAU,MAAQ,EAAO,IACxC,OACE,UAAC,SAAD,CAEE,KAAK,SACL,KAAK,eACL,UAAW,gCAAgC,EAAS,UAAY,KAChE,cAAa,EAAS,OAAS,QAC/B,YAAW,EAAU,EAAU,MAAQ,MAAQ,YAAc,aAAgB,OAC7E,YAAe,EAAO,EAAO,IAAI,UAPnC,EASE,SAAC,OAAD,UAAO,EAAE,EAAO,SAAS,CAAQ,EAChC,GAAS,SAAC,OAAD,CAAM,UAAU,wBAAwB,cAAY,gBAAQ,EAAU,MAAQ,MAAQ,IAAW,IAAgB,EAAG,KACvH,EAVF,EAAO,IAUL,EAEX,CACE,GACN,SAAC,MAAD,CAAK,UAAU,2BACZ,EAAM,IAAK,GAAS,CACnB,IAAM,EAAM,GAAY,EAAK,CACvB,EAAW,EAAY,IAAI,EAAI,CAC/B,EAAU,GAAa,IAAI,EAAI,EAAI,GACnC,EAAO,GAAS,EAAK,CACrB,EAAY,EAAK,OAAS,SAC5B,EAAE,oCAAoC,CACtC,EAAK,OAAS,OACZ,EAAK,WAAa,GAAc,EAAM,EAAE,CACxC,GAAe,EAAK,KAAM,EAAE,CAC5B,EAAY,EAAK,OAAS,SAC5B,EAAE,mCAAoC,CAAE,MAAO,EAAK,WAAY,CAAC,CACjE,IAAY,EAAK,KAAkB,EAAK,eAAmC,CACzE,EAAgB,EAAK,OAAS,SAAW,GAAK,GAAW,EAAK,eAAe,CACnF,OACE,UAAC,MAAD,CACE,KAAK,MACL,SAAU,EACV,UAAW,iBAAiB,EAAW,OAAS,KAAK,EAAU,WAAa,KAE5E,cAAa,EAAwB,OACrC,gBAAe,EACf,YAAW,GAAW,OACtB,QAAU,GAAU,EAAS,EAAM,EAAM,CACzC,kBAAqB,EAAW,EAAK,CACrC,UAAY,GAAU,CAChB,EAAM,MAAQ,SAChB,EAAM,gBAAgB,CACtB,EAAW,EAAK,EACP,EAAM,MAAQ,MACvB,EAAM,gBAAgB,CACtB,EAAS,EAAM,EAA+B,GAGlD,cAAgB,GAAU,EAAc,EAAO,EAAK,UAnBtD,EAqBE,UAAC,MAAD,CAAK,UAAU,kCAAkC,KAAK,oBAAtD,EACE,SAAC,OAAD,CAAM,UAAW,kBAAkB,EAAK,OAAS,SAAW,kBAAoB,eAAM,SAAC,EAAD,CAAM,KAAM,GAAM,EAAO,GAC/G,SAAC,OAAD,CAAM,UAAU,4BAAoB,EAAK,KAAY,EACpD,GAAU,SAAC,EAAD,CAAS,UAAU,sBAAsB,MAAO,EAAE,yBAAyB,CAAI,EAAG,KACzF,IACN,SAAC,MAAD,CAAK,UAAU,kCAAkC,KAAK,oBAAY,EAAgB,GAClF,SAAC,MAAD,CAAK,UAAU,kCAAkC,KAAK,oBAAY,EAAgB,GAClF,SAAC,MAAD,CAAK,UAAU,sCAAsC,KAAK,oBAAY,EAAoB,EACtF,EAzBC,EAyBD,EAER,CACE,EACF,GCjGV,SAAgB,GAAO,CACrB,QACA,gBACA,SACA,eACA,gBACA,cACA,cACA,WACA,aACA,gBACA,wBACA,gBAcC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,eAAiC,KAAK,CACtC,CAAC,EAAW,kBAAsH,EAAE,CAAC,CACrI,EAAW,CAAC,EAEZ,wBAAkC,CACtC,IAAM,EAAY,EAAQ,QAC1B,GAAI,CAAC,EAAW,CAAE,EAAc,GAAU,EAAK,OAAS,EAAE,CAAG,EAAM,CAAE,OACrE,IAAM,EAAU,EAAU,iBAA8B,kBAAkB,CAC1E,GAAI,EAAQ,SAAW,EAAG,CAAE,EAAc,GAAU,EAAK,OAAS,EAAE,CAAG,EAAM,CAAE,OAC/E,IAAM,EAAU,IAAI,IACpB,EAAQ,QAAS,GAAO,CACtB,IAAM,EAAM,EAAG,QAAQ,QACvB,GAAI,CAAC,EAAK,OACV,IAAM,EAAO,EAAQ,IAAI,EAAI,CACzB,EAAM,EAAK,KAAK,EAAG,CAClB,EAAQ,IAAI,EAAK,CAAC,EAAG,CAAC,EAC3B,CACF,IAAM,EAAM,IAAW,OAAS,EAAI,EAK9B,EAAiB,EAAU,YAC3B,EAAyB,EAAE,CACjC,IAAK,GAAM,CAAC,EAAK,KAAQ,EAAS,CAChC,IAAM,EAA8C,EAAE,CACtD,IAAK,IAAM,KAAM,EAAK,CACpB,IAAM,EAAM,EAAG,UACT,EAAM,EAAK,KAAM,GAAU,KAAK,IAAI,EAAM,IAAM,EAAI,EAAI,EAAE,CAC5D,EAAK,EAAI,IAAI,KAAK,EAAG,CACpB,EAAK,KAAK,CAAE,MAAK,IAAK,CAAC,EAAG,CAAE,CAAC,CAEpC,IAAM,EAAW,EAAK,OAAS,EAC/B,EAAK,SAAS,EAAK,IAAQ,CACzB,IAAI,EAAO,IACP,EAAQ,KACR,EAAM,IACN,EAAS,KACb,IAAK,IAAM,KAAM,EAAI,IACnB,EAAO,KAAK,IAAI,EAAM,EAAG,WAAW,CACpC,EAAQ,KAAK,IAAI,EAAO,EAAG,WAAa,EAAG,YAAY,CACvD,EAAM,KAAK,IAAI,EAAK,EAAG,UAAU,CACjC,EAAS,KAAK,IAAI,EAAQ,EAAG,UAAY,EAAG,aAAa,CAE3D,IAAM,EAAa,GAAY,EAAM,EAC/B,EAAc,GAAY,EAAM,EAAK,OAAS,EAC9C,EAAK,EAAa,EAAI,EAAO,EAC7B,EAAK,EAAc,EAAiB,EAAQ,EAClD,EAAK,KAAK,CACR,IAAK,GAAG,EAAI,GAAG,IACf,KAAM,EACN,IAAK,EAAM,EACX,MAAO,EAAK,EACZ,OAAQ,EAAS,EAAM,EAAM,EAC7B,OAAQ,GAAG,EAAa,EAAI,EAAO,KAAK,EAAc,EAAI,EAAO,KAAK,EAAc,EAAI,EAAO,KAAK,EAAa,EAAI,EAAO,IAC7H,CAAC,EACF,CAEJ,EAAa,EAAK,EACjB,CAAC,EAAO,CAAC,EAEZ,yBAAsB,CACpB,GAAe,CACf,IAAM,EAAY,EAAQ,QAC1B,GAAI,CAAC,EAAW,OAChB,IAAI,EAAM,EAEJ,EAAW,IAAI,mBADE,CAAE,qBAAqB,EAAI,CAAE,EAAM,sBAAsB,EAAc,EACjD,CAG7C,OAFA,EAAS,QAAQ,EAAU,CAC3B,EAAU,iBAA8B,kBAAkB,CAAC,QAAS,GAAO,EAAS,QAAQ,EAAG,CAAC,KACnF,CAAE,qBAAqB,EAAI,CAAE,EAAS,YAAY,GAC9D,CAAC,EAAe,EAAO,EAAe,EAAe,EAAa,CAAC,CAEtE,IAAM,GAAc,EAAkB,EAAW,GAAO,IAAiC,CACvF,IAAM,EAAM,GAAY,EAAK,CACvB,EAAW,EAAY,IAAI,EAAI,CAC/B,EAAU,GAAa,IAAI,EAAI,EAAI,GACnC,EAAO,GAAS,EAAK,CACrB,EAAW,EAAK,OAAS,SACzB,EAAS,EAAK,OAAS,OACvB,EAAa,GAAY,GAAU,EAAK,OAAO,QAAU,EAAI,EAAK,OAAO,OAAS,EAClF,EAAU,GAAc,EACxB,EAAO,EACT,KACA,EACE,EAAK,UACL,GAAe,EAAK,KAAM,EAAE,CAClC,OACE,UAAC,MAAD,CACE,KAAK,SACL,SAAU,EACV,UAAW,0BAA0B,EAAW,kBAAoB,KAAK,EAAS,gBAAkB,KAAK,EAAW,OAAS,KAAK,EAAW,oBAAsB,KAAK,EAAU,iBAAmB,KAAK,EAAW,mBAAqB,KAAK,EAAU,WAAa,KAEtQ,cAAa,EAAwB,OACrC,gBAAe,EACf,gBAAe,EACf,YAAW,GAAW,OACtB,QAAU,GAAU,EAAS,EAAM,EAAM,CACzC,kBAAqB,EAAW,EAAK,CACrC,UAAY,GAAU,CAChB,EAAM,MAAQ,SAChB,EAAM,gBAAgB,CACtB,EAAW,EAAK,EACP,EAAM,MAAQ,MACvB,EAAM,gBAAgB,CACtB,EAAS,EAAM,EAA+B,GAGlD,cAAgB,GAAU,EAAc,EAAO,EAAK,UApBtD,EAsBE,UAAC,OAAD,CAAM,UAAW,4BAA4B,EAAS,iBAAmB,KAAK,EAAW,mBAAqB,cAA9G,EACE,SAAC,OAAD,CAAM,UAAW,EAAW,iBAAmB,yBAAgB,SAAC,EAAD,EAAQ,EAAO,EAC7E,GAAc,GACb,UAAC,SAAD,CACE,KAAK,SACL,UAAW,iBAAiB,EAAW,QAAU,KACjD,cAAa,EAAwB,oBACrC,MAAO,EAAE,sCAAsC,CAC/C,QAAU,GAAU,CAClB,EAAM,iBAAiB,CACvB,EAAS,EAAM,EAAM,CACrB,EAAuB,EAAgB,KAAK,WARhD,EAWE,SAAC,OAAD,CAAM,UAAU,8BAAsB,EAAkB,GACxD,SAAC,EAAD,CAAa,KAAM,GAAM,EAClB,GACP,KACC,IACP,UAAC,OAAD,CAAM,UAAW,4BAA4B,EAAO,YAAc,cAAlE,EACE,SAAC,OAAD,CAAM,UAAU,sBAAc,EAAK,KAAY,EAC9C,GAAO,SAAC,OAAD,CAAM,UAAU,wBAAgB,EAAY,EAAG,KAClD,GACN,EACC,IAAW,QACT,SAAC,EAAD,CAAS,UAAU,sBAAsB,MAAO,EAAE,yBAAyB,CAAI,GAE/E,SAAC,OAAD,CAAM,UAAU,8BACd,SAAC,EAAD,CAAS,MAAO,EAAE,yBAAyB,CAAI,EAC1C,EAEP,KACA,EAlDC,EAkDD,EAIJ,EAAqB,EAAE,CAC7B,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,QAAU,CAC1C,IAAM,EAAO,EAAM,GACnB,GAAI,CAAC,EAAM,CAAE,GAAS,EAAG,SACzB,GAAI,GAAY,EAAK,OAAS,QAAU,EAAK,OAAO,QAAU,GAAK,EAAc,IAAI,EAAK,KAAK,CAAE,CAC/F,IAAM,EAAQ,IAAI,IAAI,EAAK,OAAO,IAAK,GAAU,EAAM,KAAK,CAAC,CAC7D,EAAM,KAAK,EAAW,EAAM,GAAM,EAAK,KAAK,CAAC,CAC7C,IAAI,EAAY,EAAQ,EACxB,KAAO,EAAY,EAAM,OAAQ,GAAa,EAAG,CAC/C,IAAM,EAAO,EAAM,GACnB,GAAI,CAAC,GAAQ,EAAK,OAAS,SAAW,CAAC,EAAM,IAAI,EAAK,KAAK,CAAE,MAC7D,EAAM,KAAK,EAAW,EAAM,GAAO,EAAK,KAAK,CAAC,CAEhD,EAAQ,EACR,SAEF,EAAM,KAAK,EAAW,EAAK,CAAC,CAC5B,GAAS,EAGX,OACE,UAAC,MAAD,CACE,IAAK,EACL,UAAW,qCAAqC,IAChD,MAAO,CAAE,aAAc,GAAG,EAAc,IAAK,CAC7C,QAAU,GAAU,CAAM,EAAM,SAAW,EAAM,eAAe,GAAc,WAJhF,CAMG,EAAU,OAAS,GAClB,SAAC,MAAD,CAAK,UAAU,qBAAqB,cAAY,gBAC7C,EAAU,IAAK,IACd,SAAC,MAAD,CAAwB,UAAU,oBAAoB,MAAO,CAAE,KAAM,EAAS,KAAM,IAAK,EAAS,IAAK,MAAO,EAAS,MAAO,OAAQ,EAAS,OAAQ,aAAc,EAAS,OAAQ,CAAI,CAAhL,EAAS,IAAuK,CAC1L,CACE,EACJ,KACH,EACG,GC5NV,SAAS,GAAkB,EAA4B,EAAgD,CACrG,IAAM,EAAS,EAAO,GAAG,EAAK,GAAK,GAC7B,EAAQ,EAAO,EAAK,MAAM,IAAI,CAAC,OAAS,EACxC,EAAwC,EAAE,CAChD,IAAK,IAAM,KAAO,EACZ,GAAQ,IAAQ,GACf,EAAI,WAAW,EAAO,EACvB,EAAI,MAAM,IAAI,CAAC,SAAW,EAAQ,GACtC,EAAI,KAAK,CAAE,KAAM,EAAI,MAAM,IAAI,CAAC,KAAK,EAAI,EAAK,KAAM,EAAK,CAAC,CAE5D,OAAO,EAAI,MAAM,EAAG,IAAM,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC,CAGzD,SAAS,GAAa,CACpB,YACA,gBACA,UACA,aACA,SAOC,CACD,IAAM,EAAW,GAAkB,EAAS,EAAU,CAQtD,OAPI,EAAS,SAAW,GAEpB,SAAC,OAAD,CAAM,UAAU,mBAAmB,cAAY,iBAC7C,SAAC,EAAD,CAAc,KAAM,GAAM,EACrB,GAIT,SAAC,OAAD,CAAM,UAAU,mBAAmB,QAAU,GAAU,EAAM,iBAAiB,WAC5E,SAAC,EAAD,CACS,QACP,MAAM,QACN,UAAU,gBACV,SACE,SAAC,SAAD,CACE,KAAK,SACL,UAAU,uBACV,aAAY,EACZ,MAAO,EACP,QAAU,GAAU,EAAM,iBAAiB,WAE3C,SAAC,EAAD,CAAc,KAAM,GAAM,EACnB,EAEX,MAAO,EAAS,IAAK,IAAW,CAC9B,GAAI,EAAM,KACV,MAAO,EAAM,KACb,MAAM,SAAC,GAAD,CAAQ,KAAM,GAAM,EAC1B,YAAa,EAAM,OAAS,EAAgB,CAAE,cAAe,GAAI,CAAG,OACpE,aAAgB,EAAW,EAAM,KAAK,CACvC,EAAE,CACH,EACG,EAIX,SAAgB,GAAgB,CAC9B,cACA,eACA,UACA,YACA,eACA,kBACA,SACA,YACA,YACA,cAYC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,EAAW,EAAc,EAAY,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAG,EAAE,CACpE,CAAC,EAAS,kBAAuB,GAAM,CACvC,CAAC,EAAO,kBAAqB,GAAG,CAEhC,wBAA8B,CAClC,EAAS,EAAY,CACrB,EAAW,GAAK,EACf,CAAC,EAAY,CAAC,CAEX,wBAA2B,CAC/B,EAAW,GAAmB,EAAM,CAAC,CACrC,EAAW,GAAM,EAChB,CAAC,EAAO,EAAW,CAAC,CAEjB,oBAA8B,GAA2C,CACzE,EAAM,MAAQ,SAChB,EAAM,gBAAgB,CACtB,GAAQ,EACC,EAAM,MAAQ,WACvB,EAAM,gBAAgB,CACtB,EAAW,GAAM,GAElB,CAAC,EAAO,CAAC,CAEN,oBAAgC,GAAyC,EACzE,EAAM,MAAQ,SAAW,EAAM,MAAQ,OACzC,EAAM,gBAAgB,CACtB,GAAW,GAEZ,CAAC,EAAU,CAAC,CAET,GAAmB,EAAsC,IAAiB,CAC9E,EAAM,iBAAiB,CACvB,EAAW,EAAK,EAGlB,OACE,UAAC,EAAD,CAAS,UAAU,6BAAnB,EACE,SAAC,EAAD,CACE,KAAK,UACL,QAAQ,QACR,MAAO,EAAE,sBAAsB,CAC/B,MAAM,SAAC,GAAD,CAAa,KAAM,GAAM,EAC/B,cAAa,EAAwB,aACrC,SAAU,CAAC,EACX,QAAS,EACT,GACF,SAAC,EAAD,CACE,KAAK,UACL,QAAQ,QACR,MAAO,EAAE,yBAAyB,CAClC,MAAM,SAAC,EAAD,CAAc,KAAM,GAAM,EAChC,cAAa,EAAwB,gBACrC,SAAU,CAAC,EACX,QAAS,EACT,GACF,SAAC,EAAD,CACE,KAAK,UACL,QAAQ,QACR,MAAO,EAAE,yBAAyB,CAClC,SAAU,EACV,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAC7B,cAAa,EAAwB,QACrC,QAAS,EACT,GACF,SAAC,MAAD,CAAK,UAAU,2BACZ,GACC,SAAC,QAAD,CACE,aACA,WAAY,GACZ,UAAU,mBACV,MAAO,EACP,YAAa,EAAE,6CAA6C,CAC5D,SAAW,GAAU,EAAS,EAAM,OAAO,MAAM,CACjD,UAAW,EACX,WAAc,EAAW,GAAM,CAC/B,QAAU,GAAU,EAAM,cAAc,QAAQ,CAChD,GAEF,SAAC,MAAD,CACE,UAAU,aACV,KAAK,SACL,SAAU,EACV,MAAO,EAAE,kCAAkC,CAC3C,QAAS,EACT,UAAW,YAEX,UAAC,MAAD,CAAK,UAAU,4BAAf,EACE,SAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAS,OAAS,gBAAkB,iCAC/C,eAAc,EAAS,SAAW,EAAI,OAAS,OAC/C,cAAa,EAAwB,SACrC,QAAU,GAAU,EAAgB,EAAO,GAAG,UAE7C,EACM,EACR,EAAS,KAAK,EAAS,IAAU,CAChC,IAAM,EAAO,EAAS,MAAM,EAAG,EAAQ,EAAE,CAAC,KAAK,IAAI,CAC7C,EAAa,EAAS,MAAM,EAAG,EAAM,CAAC,KAAK,IAAI,CAC/C,EAAc,IAAU,EAAI,EAAgB,EAAS,EAAQ,IAAM,EACnE,EAAY,IAAU,EAAS,OAAS,EAC9C,OACE,UAAC,OAAD,CAAM,UAAU,4BAAhB,EACE,SAAC,GAAD,CACE,UAAW,EACX,cAAe,EACN,UACG,aACZ,MAAO,EAAE,wCAAyC,CAAE,KAAM,EAAa,CAAC,CACxE,GACF,SAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAY,iCAAmC,gBAC1D,eAAc,EAAY,OAAS,OACnC,cAAa,EAAwB,SACrC,QAAU,GAAU,EAAgB,EAAO,EAAK,UAE/C,EACM,EACJ,EAjBiC,EAiBjC,EAET,CACE,GACF,EAEJ,EACE,GCxNd,SAAgB,GAA0B,EAAuB,CAC/D,OAAO,IAAS,SAAW,IAAS,SAAW,IAAS,QAG1D,SAAgB,GAAkB,EAAuD,CACvF,OAAO,EAAK,OAAS,UAAY,EAAK,KAAK,WAAW,QAAQ,CAGhE,SAAgB,GAA2B,EAA+B,CACxE,OAAO,IAAW,SAAW,IAAW,SAAW,IAAW,OAGhE,SAAgB,GAA4B,EAA+B,CACzE,OAAO,IAAW,QAGpB,SAAgB,GAAa,EAAyB,CACpD,MAAO,oCAAoC,mBAAmB,EAAQ,GAGxE,SAAgB,GACd,EACoC,CAGpC,OAFI,EAAK,SAAY,EAAK,OAAS,SAAW,EAAK,QAAiB,KAChE,EAAK,cAAwC,YAC1C,cCtBT,SAAgB,GAAa,CAC3B,OACA,WACA,KAKC,CACD,GAAI,GAAkB,EAAK,CACzB,OAAO,SAAC,GAAD,CAAmB,OAAM,OAAQ,EAAa,IAAK,EAE5D,GAAI,CAAC,GAA0B,EAAK,KAAK,CACvC,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,wCAAwC,CAAO,EAG5F,IAAM,EAAU,GAA0B,EAAK,CAC/C,GAAI,IAAY,YACd,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,yCAAyC,CAAO,EAE7F,GAAI,IAAY,cACd,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,wCAAwC,CAAO,EAG5F,IAAM,EAAM,EAAK,UAAY,EAAK,QAAU,GAAa,EAAK,QAAQ,CAAG,QAmBzE,OAlBK,EAID,EAAK,OAAS,SAEd,SAAC,MAAD,CAAK,UAAU,6BACb,SAAC,QAAD,CAAO,UAAU,mBAAmB,YAAS,QAAQ,WAAgB,MAAK,aAAY,EAAY,EAC9F,EAGN,EAAK,OAAS,SAEd,SAAC,MAAD,CAAK,UAAU,6BACb,SAAC,QAAD,CAAO,UAAU,mBAAmB,YAAS,QAAQ,WAAgB,MAAK,aAAY,EAAY,EAC9F,GAIR,SAAC,MAAD,CAAK,UAAU,6BACb,SAAC,MAAD,CAAK,UAAU,mBAAwB,MAAK,IAAK,EAAU,SAAS,QAAU,EAC1E,GApBC,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,wCAAwC,CAAO,EAwB9F,SAAS,GAAY,CACnB,OACA,SACA,KAKC,CAED,GADgB,GAA0B,EACtC,GAAY,YACd,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,yCAAyC,CAAO,EAE7F,GAAI,CAAC,EAAK,QACR,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,wCAAwC,CAAO,EAE5F,IAAM,EAAS,mBAAmB,EAAK,KAAK,QAAQ,WAAY,IAAI,GACpE,OACE,UAAC,MAAD,CAAK,UAAU,4CAAf,EACE,SAAC,QAAD,UAAQ,0BAA0B,EAAO,WAAW,EAAK,QAAQ,uBAA+B,GAChG,SAAC,IAAD,CAAG,UAAU,yBAAyB,MAAO,CAAE,WAAY,EAAQ,UAChE,EAAE,oCAAoC,CACrC,GACJ,SAAC,IAAD,CAAG,UAAU,gCAAwB,EAAW,EAC5C,GC7EV,IAAM,GAA6D,CACjE,GAAI,CAAE,KAAM,aAAc,MAAO,aAAc,CAC/C,IAAK,CAAE,KAAM,aAAc,MAAO,aAAc,CAChD,IAAK,CAAE,KAAM,aAAc,MAAO,aAAc,CAChD,IAAK,CAAE,KAAM,MAAO,MAAO,MAAO,CAClC,GAAI,CAAE,KAAM,aAAc,MAAO,aAAc,CAC/C,IAAK,CAAE,KAAM,aAAc,MAAO,aAAc,CAChD,IAAK,CAAE,KAAM,aAAc,MAAO,aAAc,CAChD,IAAK,CAAE,KAAM,MAAO,MAAO,MAAO,CAClC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,MAAO,CAAE,KAAM,QAAS,MAAO,QAAS,CACxC,MAAO,CAAE,KAAM,QAAS,MAAO,QAAS,CACxC,IAAK,CAAE,KAAM,MAAO,MAAO,MAAO,CAClC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,IAAK,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACpC,GAAI,CAAE,KAAM,WAAY,MAAO,WAAY,CAC3C,SAAU,CAAE,KAAM,WAAY,MAAO,WAAY,CACjD,GAAI,CAAE,KAAM,SAAU,MAAO,SAAU,CACvC,GAAI,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACnC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,GAAI,CAAE,KAAM,cAAe,MAAO,QAAS,CAC3C,KAAM,CAAE,KAAM,cAAe,MAAO,QAAS,CAC7C,IAAK,CAAE,KAAM,cAAe,MAAO,QAAS,CAC5C,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,IAAK,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACpC,KAAM,CAAE,KAAM,OAAQ,MAAO,OAAQ,CACrC,IAAK,CAAE,KAAM,MAAO,MAAO,MAAO,CACnC,CAED,SAAgB,GAAgB,EAA6C,CAE3E,OAAO,GADK,EAAI,QAAQ,MAAO,GAAG,CAAC,aACf,ECzBtB,SAAS,GAAW,EAAsB,CACxC,IAAI,EAAQ,EACZ,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAK,OAAQ,GAAS,EAC5C,EAAK,WAAW,EAAM,GAAK,KAAI,GAAS,GAE9C,OAAO,EAGT,SAAgB,GAAgB,EAAgD,CAC9E,GAAM,CAAE,MAAK,OAAM,WAAY,EAC/B,GAAI,GAAW,KAAM,MAAO,CAAE,UAAW,GAAO,OAAQ,aAAc,CACtE,IAAM,EAAW,GAAgB,EAAI,CAMrC,OALK,EACY,KAAK,IAAI,EAAM,EAAQ,OACpC,SAAkC,GAAW,EAAQ,KAChD,CAAE,UAAW,GAAO,OAAQ,YAAa,CAE3C,CAAE,UAAW,GAAM,KAAM,EAAS,KAAM,MAAO,EAAS,MAAO,CALhD,CAAE,UAAW,GAAO,OAAQ,mBAAoB,CCfxE,IAAa,GAAmB,CAC9B,MAAO,uBACP,KAAM,sBACP,CAIK,GAAoE,CACxE,qBAAkB,OAAO,kEACzB,cAAW,OAAO,kEAClB,qBAAkB,OAAO,kEACzB,cAAW,OAAO,kEAClB,eAAY,OAAO,kEACnB,gBAAa,OAAO,kEACpB,gBAAa,OAAO,kEACpB,cAAW,OAAO,kEAClB,eAAY,OAAO,kEACnB,eAAY,OAAO,kEACnB,mBAAgB,OAAO,kEACvB,iBAAc,OAAO,kEACrB,eAAY,OAAO,kEACnB,eAAY,OAAO,kEACnB,eAAY,OAAO,kEACnB,sBAAmB,OAAO,kEAC1B,eAAY,OAAO,kEACnB,eAAY,OAAO,kEACnB,cAAW,OAAO,kEACnB,CAEG,GAA+C,KAC7C,GAAc,IAAI,IAClB,GAAgB,IAAI,IAE1B,eAAe,IAAoC,CAiBjD,MAhBA,CACE,MAAe,SAAY,CACzB,GAAM,CAAC,EAAS,EAAW,EAAW,GAAc,MAAM,QAAQ,IAAI,OACpE,OAAO,wEACP,OAAO,wEACP,OAAO,wEACP,OAAO,kEACR,CAAC,CAMF,OAAO,MALY,EAAQ,sBAAsB,CAC/C,OAAQ,CAAC,EAAU,QAAS,EAAW,QAAQ,CAC/C,MAAO,EAAE,CACT,OAAQ,EAAU,4BAA4B,CAAE,UAAW,GAAM,CAAC,CACnE,CAAC,IAEA,CAEC,GAGT,eAAe,GAAe,EAAuB,EAAgC,CACnF,GAAI,GAAY,IAAI,EAAK,CAAE,MAAO,GAClC,IAAM,EAAS,GAAa,GAC5B,GAAI,CAAC,EAAQ,MAAO,GACpB,IAAI,EAAU,GAAc,IAAI,EAAK,CAUrC,OATK,IACH,GAAW,SAAY,CACrB,IAAM,EAAM,MAAM,GAAQ,CAG1B,OAFA,MAAM,EAAK,aAAa,EAAI,QAAQ,CACpC,GAAY,IAAI,EAAK,CACd,MACL,CACJ,GAAc,IAAI,EAAM,EAAQ,EAE3B,EAGT,eAAsB,GACpB,EACA,EACA,EAAkC,OACV,CACxB,IAAM,EAAO,MAAM,IAAS,CAG5B,OADK,MADe,GAAe,EAAM,EAAK,CAEvC,EAAK,WAAW,EAAM,CAAE,OAAM,MAAO,GAAiB,GAAa,CAAC,CADxD,KCnFrB,SAAS,IAA8C,CAErD,OADI,OAAO,SAAa,IAAoB,QACrC,SAAS,gBAAgB,QAAQ,QAAU,OAAS,OAAS,QAGtE,SAAS,IAA6C,CACpD,GAAM,CAAC,EAAY,kBAA+C,GAAuB,CASzF,OARA,mBAAgB,CACd,IAAM,EAAO,SAAS,gBAChB,MAAa,EAAc,IAAwB,CAAC,CAC1D,GAAM,CACN,IAAM,EAAW,IAAI,iBAAiB,EAAK,CAE3C,OADA,EAAS,QAAQ,EAAM,CAAE,WAAY,GAAM,gBAAiB,CAAC,aAAa,CAAE,CAAC,KAChE,EAAS,YAAY,EACjC,EAAE,CAAC,CACC,EAGT,SAAgB,GAAY,CAC1B,OACA,MACA,OACA,WAMC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,EAAa,IAAuB,CACpC,EAAW,GAAgB,CAAE,MAAK,OAAM,UAAS,CAAC,CAClD,EAAa,EAAS,UAAY,EAAS,KAAO,KAClD,EAAQ,GAAgB,EAAI,EAAE,OAAS,EAAI,aAAa,CACxD,CAAC,EAAM,kBAAmC,KAAK,EAErD,mBAAgB,CAEd,GADA,EAAQ,KAAK,CACT,GAAc,KAAM,OACxB,IAAI,EAAY,GAIhB,OAHK,GAAgB,EAAS,EAAY,EAAW,CAClD,KAAM,GAAQ,CAAO,GAAW,EAAQ,EAAI,EAAI,CAChD,UAAY,CAAO,GAAW,EAAQ,KAAK,EAAI,KACrC,CAAE,EAAY,KAC1B,CAAC,EAAY,EAAS,EAAW,CAAC,CAErC,IAAM,EAAiB,CAAC,EAAS,WAAa,EAAS,SAAW,YAElE,OACE,UAAC,MAAD,CAAK,UAAU,kBAAkB,YAAW,GAAgB,EAAI,EAAE,MAAQ,gBAA1E,EACE,UAAC,MAAD,CAAK,UAAU,gCAAf,EACE,SAAC,OAAD,CAAM,UAAU,iCAAyB,EAAa,EACrD,GAAiB,SAAC,OAAD,CAAM,UAAU,gCAAwB,EAAE,0CAA0C,CAAQ,EAAG,KAC7G,GACL,GAAQ,MAEL,SAAC,MAAD,CAAK,UAAU,wBAAwB,aAAY,WAAO,EAAc,GADxE,SAAC,MAAD,CAAK,UAAU,wBAAwB,wBAAyB,CAAE,OAAQ,EAAM,CAAI,EAEpF,GCzDV,SAAgB,GAAmB,CACjC,OACA,cACA,SACA,gBACA,KAOC,CACD,GAAI,IAAW,WAAa,EAC1B,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,uCAAuC,CAAO,EAG3F,GAAI,IAAgB,GAA0B,EAAY,KAAK,EAAI,GAAkB,EAAY,EAC/F,OAAO,SAAC,GAAD,CAAc,KAAM,EAAa,SAAU,EAAK,KAAS,IAAK,EAEvE,GAAI,GAAa,OAAS,SAAW,GAA4B,EAAK,OAAO,CAC3E,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,+CAA+C,CAAO,EAEnG,GAAI,CAAC,GAAe,GAA2B,EAAK,OAAO,CACzD,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,wCAAwC,CAAO,EAG5F,IAAM,EAAU,GAAa,SAAW,EAAK,cAC7C,GAAI,GAAW,KACb,OAAO,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,uCAAuC,CAAO,EAE3F,IAAM,EAAW,EAAK,KAAK,YAAY,IAAI,CACrC,EAAM,GAAY,EAAI,EAAK,KAAK,MAAM,EAAW,EAAE,CAAC,aAAa,CAAG,GAW1E,OAVI,GAAgB,EAAI,EAEpB,SAAC,GAAD,CACE,KAAM,EAAK,KACN,MACL,KAAM,GAAa,MAAQ,EAAK,eAAiB,EACxC,UACT,GAIJ,SAAC,MAAD,CAAK,UAAU,8BACb,SAAC,OAAD,UAAO,EAAe,EAClB,EClDV,SAAgB,GACd,EACA,EACA,EACA,EACwE,CACxE,IAAM,EAAS,GAAkB,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,EAAM,CAAC,CAC9D,CAAC,EAAO,sBAAsC,CAClD,GAAI,OAAO,OAAW,IAAa,OAAO,EAC1C,GAAI,CACF,IAAM,EAAM,OAAO,aAAa,QAAQ,EAAI,CAC5C,GAAI,CAAC,EAAK,OAAO,EACjB,IAAM,EAAS,OAAO,EAAI,CAC1B,OAAO,OAAO,SAAS,EAAO,CAAG,EAAM,EAAO,CAAG,OAC3C,CACN,OAAO,IAET,CAWF,OAVA,mBAAgB,CACd,GAAI,CACF,OAAO,aAAa,QAAQ,EAAK,OAAO,EAAM,CAAC,MACzC,IAGP,CAAC,EAAK,EAAM,CAAC,CAIT,CAAC,EAHU,GAA8C,CAC9D,EAAa,GAAS,EAAM,OAAO,GAAS,WAAa,EAAK,EAAK,CAAG,EAAK,CAAC,EAEtD,CAG1B,SAAgB,GAAa,CAC3B,SACA,YACA,SAKC,CACD,IAAM,eAAiC,KAAK,CACtC,EAAiB,GAAwC,CAC7D,EAAM,gBAAgB,CACtB,EAAM,cAAc,kBAAkB,EAAM,UAAU,CACtD,EAAS,QAAU,EAAM,QACzB,SAAS,KAAK,MAAM,OAAS,aAC7B,SAAS,KAAK,MAAM,WAAa,QAE7B,EAAiB,GAAwC,CAC7D,GAAI,EAAS,SAAW,KAAM,OAC9B,IAAM,EAAQ,EAAM,QAAU,EAAS,QACvC,EAAS,QAAU,EAAM,QACzB,EAAO,EAAM,EAET,EAAU,GAAwC,CAClD,KAAS,SAAW,KACxB,GAAS,QAAU,KACnB,GAAI,CACF,EAAM,cAAc,sBAAsB,EAAM,UAAU,MACpD,EAGR,SAAS,KAAK,MAAM,OAAS,GAC7B,SAAS,KAAK,MAAM,WAAa,GACjC,KAAa,GAEf,OACE,SAAC,MAAD,CACE,UAAU,mBACK,gBACA,gBACf,YAAa,EACb,gBAAiB,EACV,QACP,KAAK,YACL,mBAAiB,WACjB,ECnEN,SAAgB,GAAe,CAC7B,cACA,gBACA,YACA,eACA,cACA,UACA,SACA,aAUC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,CAAC,EAAiB,kBAAkD,SAAS,CAC7E,CAAC,EAAa,kBAAmD,KAAK,CACtE,CAAC,EAAe,kBAA2D,OAAO,CAClF,EAAkB,EAAc,GAAuB,EAAa,EAAU,CAAG,OACjF,EAAkB,IAAoB,QAAa,GAAwB,EAAgB,CAC3F,EAAa,EAAe,EAAY,OAAS,QAAU,EAAY,KAAO,EAAY,KAAQ,KAClG,EAAoB,GAAiB,UAAY,GAAiB,MAAQ,KAC1E,EAAiB,GAAiB,OAAO,QAAU,EACnD,EAAsB,EAAkB,GAAwB,EAAgB,CAAG,GACnF,EAAwB,GAAiB,eAAiB,KAC1D,EAAiB,OAAO,GAAgB,WAiE9C,IA/DA,mBAAgB,CACd,EAAmB,SAAS,EAC3B,CAAC,EAAW,CAAC,EAEhB,mBAAgB,CACd,GAAI,CAAC,EAAmB,CACtB,EAAe,KAAK,CACpB,EAAiB,OAAO,CACxB,OAIF,GAAI,EAFgB,IAAmB,GACjC,GAAuB,IAAoB,UAC/B,CAChB,EAAe,KAAK,CACpB,EAAiB,OAAO,CACxB,OAEF,GAAI,GAAyB,MAAQ,CAAC,EAAgB,CACpD,EAAe,CACb,KAAM,GAAiB,MAAQ,EAC/B,KAAM,OACN,KAAM,4BACN,KAAM,GAAiB,eAAiB,EAAsB,OAC9D,MAAO,GAAiB,gBAAkB,EAC1C,QAAS,EACV,CAAC,CACF,EAAiB,QAAQ,CACzB,OAEF,GAAI,CAAC,GAAkB,CAAC,EAAa,CACnC,EAAe,KAAK,CACpB,EAAiB,QAAQ,CACzB,OAEF,IAAI,EAAY,GAChB,EAAe,KAAK,CACpB,EAAiB,UAAU,CAC3B,IAAM,EAAa,IAAI,gBAYvB,OAXK,EAAY,EAAmB,CAAE,OAAQ,EAAW,OAAQ,CAAC,CAC/D,KAAM,GAAS,CACV,IACJ,EAAe,EAAK,CACpB,EAAiB,QAAQ,GACzB,CACD,UAAY,CACP,IACJ,EAAe,KAAK,CACpB,EAAiB,QAAQ,GACzB,KACS,CACX,EAAY,GACZ,EAAW,OAAO,GAEnB,CACD,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CAAC,CAEE,CAAC,EACH,OACE,iCACE,SAAC,GAAD,CAAsB,SAAmB,YAAW,MAAO,EAAE,uCAAuC,CAAI,GACxG,SAAC,QAAD,CAAO,UAAU,8CACf,SAAC,MAAD,CAAK,UAAU,4BACb,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,yCAAyC,CAAO,EAChF,EACA,EACP,GAIP,IAAM,EAAO,GAAS,EAAa,GAAK,CAClC,EAAO,EAAY,OAAS,SAC9B,EAAE,oCAAqC,CAAE,KAAM,EAAY,MAAQ,EAAc,CAAC,CAClF,EAAY,OAAS,OACnB,EAAE,kCAAmC,CAAE,KAAM,EAAY,UAAW,KAAM,EAAY,KAAM,CAAC,CAC7F,EAAE,mCAAoC,CAAE,KAAM,GAAe,EAAY,KAAM,EAAE,CAAE,KAAM,EAAY,SAAU,CAAC,CAElH,EACJ,GAAI,EAAY,OAAS,SAAU,CACjC,IAAM,EAAO,CACX,GAAG,EAAc,OAAQ,GAAW,GAAU,EAAO,KAAK,GAAK,EAAY,KAAK,CAChF,GAAG,EAAU,OAAQ,GAAU,GAAU,EAAM,KAAK,GAAK,EAAY,KAAK,CAC3E,CAAC,MAAM,EAAG,GAAG,CACd,EAAO,EAAK,SAAW,GACrB,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,qCAAqC,CAAO,GAEhF,SAAC,MAAD,CAAK,UAAU,2BACZ,EAAK,IAAK,GAAU,CACnB,IAAM,EAAY,GAAS,EAAM,CACjC,OACE,UAAC,MAAD,CAAK,UAAU,gCAAf,EACE,SAAC,OAAD,CAAM,UAAW,sBAAsB,EAAM,OAAS,SAAW,kBAAoB,eAAM,SAAC,EAAD,CAAW,KAAM,GAAM,EAAO,GACzH,SAAC,OAAD,UAAO,EAAM,KAAY,GACzB,SAAC,OAAD,CAAM,UAAU,eACb,EAAM,OAAS,SACZ,EAAE,+BAAgC,CAAE,MAAO,EAAM,WAAY,CAAC,CAC9D,EAAM,WAAa,GAAc,EAAO,EAAE,CACzC,EACH,EARqC,EAAM,KAQ3C,EAER,CACE,UAEC,EAAY,OAAS,OAAQ,CACtC,IAAM,EAAa,IAAoB,UAAY,EACnD,CAGE,CAHE,EAAY,OAAO,OAAS,GAAK,CAAC,GAC7B,SAAC,GAAD,CAAe,KAAM,EAAgB,IAAK,GAG/C,SAAC,GAAD,CACE,KAAM,EAAkB,GAAmB,EAAc,EAC5C,cACb,OAAQ,EACR,cAAe,GAAqB,EAAgB,EAAe,EAAa,EAAkB,GAAmB,EAAc,EAAY,CAC5I,IACH,OAKN,EADmB,GAAmB,IAAoB,UAAY,GAEpE,SAAC,GAAD,CACE,KAAM,EACO,cACb,OAAQ,EACR,cAAe,GAAqB,EAAgB,EAAe,EAAa,EAAgB,CAC7F,IACH,GAEF,iCACE,SAAC,MAAD,CAAK,UAAU,mDACb,SAAC,OAAD,CAAM,UAAU,iCAAuB,SAAC,EAAD,CAAM,KAAM,GAAM,EAAO,EAC5D,GACN,SAAC,MAAD,CAAK,UAAU,kCACb,UAAC,MAAD,CAAK,UAAU,gCAAf,EACE,SAAC,OAAD,CAAM,UAAU,gCAAsB,SAAC,EAAD,CAAM,KAAM,GAAM,EAAO,GAC/D,UAAC,MAAD,CAAK,UAAU,wBAAwB,MAAO,EAAY,kBAA1D,EACE,SAAC,MAAD,CAAK,MAAO,EAAY,cAAO,EAAY,KAAW,GACtD,SAAC,MAAD,CAAK,UAAU,OAAO,MAAO,EAAY,kBAAW,EAAY,SAAe,EAC3E,IACN,SAAC,OAAD,CAAM,UAAU,OAAO,MAAO,EAAY,cAAO,EAAY,KAAY,EACrE,GACF,EACL,GAIP,OACE,iCACE,SAAC,GAAD,CAAsB,SAAmB,YAAW,MAAO,EAAE,uCAAuC,CAAI,GACxG,UAAC,QAAD,CAAO,UAAU,mBAAmB,kBAAiB,EAAY,OAAS,QAAU,EAAY,KAAO,EAAY,cAAnH,EACE,UAAC,MAAD,CAAK,UAAU,2BAAf,EACE,SAAC,OAAD,CAAM,UAAW,iBAAiB,EAAY,OAAS,SAAW,kBAAoB,eAAM,SAAC,EAAD,CAAM,KAAM,GAAM,EAAO,GACrH,UAAC,MAAD,CAAK,UAAU,4BAAf,EACE,SAAC,MAAD,CAAK,UAAU,gBAAQ,EAAY,KAAW,GAC9C,SAAC,MAAD,CAAK,UAAU,gBAAQ,EAAW,EAC9B,IACN,SAAC,EAAD,CACE,KAAK,UACL,QAAQ,QACR,UAAU,mBACV,MAAO,EAAE,+BAA+B,CACxC,MAAM,SAAC,GAAD,CAAG,KAAM,GAAM,EACrB,QAAS,EACT,EACE,GACL,GACC,UAAC,MAAD,CAAK,UAAU,sBAAsB,KAAK,UAAU,aAAY,EAAE,oCAAoC,UAAtG,EACE,SAAC,SAAD,CAAQ,KAAK,SAAS,KAAK,MAAM,UAAW,sBAAsB,IAAoB,SAAW,aAAe,KAAM,gBAAe,IAAoB,SAAU,YAAe,EAAmB,SAAS,UAC3M,EAAE,oCAAoC,CAChC,GACT,SAAC,SAAD,CAAQ,KAAK,SAAS,KAAK,MAAM,UAAW,sBAAsB,IAAoB,SAAW,aAAe,KAAM,gBAAe,IAAoB,SAAU,YAAe,EAAmB,SAAS,UAC3M,EAAE,oCAAoC,CAChC,EACL,GACJ,MACJ,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAW,EACvC,GACP,GAIP,SAAS,GAAc,CAAE,OAAM,GAA2F,CACxH,OACE,SAAC,MAAD,CAAK,UAAU,iCACZ,EAAK,OAAO,IAAK,IAGd,UAAC,MAAD,CAAK,UAAU,gCAAf,EACE,SAAC,OAAD,CAAM,UAAU,gCAAsB,SAH7B,GAAS,EAGqB,CAAD,CAAM,KAAM,GAAM,EAAO,GAC/D,UAAC,MAAD,CAAK,UAAU,iCAAf,EACE,SAAC,MAAD,CAAK,MAAO,EAAM,cAAO,EAAM,KAAW,GAC1C,SAAC,MAAD,CAAK,UAAU,OAAO,MAAO,GAAe,EAAM,KAAM,EAAE,UAAG,GAAe,EAAM,KAAM,EAAE,CAAO,EAC7F,IACN,SAAC,OAAD,CAAM,UAAU,OAAO,MAAO,EAAM,cAAO,EAAM,KAAY,EACzD,EAPqC,EAAM,KAO3C,CAER,CACE,EAIV,SAAS,GACP,EACA,EACA,EACA,EACS,CAGT,MAFI,CAAC,GAAkB,IAAW,QAC9B,EAAoB,GACjB,EAAK,eAAiB,KChQ/B,SAAgB,GAAgB,EAAyC,EAAkC,EAAE,CAA0B,CACrI,OAAO,OAAO,YAAY,EAAW,IAAI,GAAa,CACpD,IAAM,EAAQ,EAAO,EAAU,OAAS,EAAU,QAClD,MAAO,CAAC,EAAU,KAAM,OAAO,GAAU,SAAW,EAAQ,KAAK,UAAU,EAAM,EAAI,GAAG,EACxF,CAAC,CAGL,SAAgB,GAAgB,EAAyC,EAAyD,CAChI,OAAO,OAAO,YAAY,EAAW,IAAI,GAAa,CACpD,IAAM,EAAO,EAAO,EAAU,MAC9B,GAAI,CAAC,SAAU,aAAa,CAAC,SAAS,EAAU,KAAK,CAAE,MAAO,CAAC,EAAU,KAAM,EAAK,CACpF,GAAI,EAAU,OAAS,OAAQ,CAC7B,IAAM,EAAQ,EAAU,QAAQ,KAAK,GAAS,OAAO,EAAM,GAAK,EAAK,CACrE,GAAI,IAAU,OAAW,MAAU,UAAU,sBAAsB,EAAU,OAAO,CACpF,MAAO,CAAC,EAAU,KAAM,EAAM,CAEhC,GAAI,OAAO,GAAS,UAAY,CAAC,EAAK,MAAM,CAAE,MAAU,UAAU,SAAS,EAAU,OAAO,CAC5F,MAAO,CAAC,EAAU,KAAM,KAAK,MAAM,EAAK,CAAC,EACzC,CAAC,CAIL,SAAgB,GAAkB,EAA8C,CAC9E,IAAM,EAAS,GAAW,cACtB,MAAC,GAAW,SAAS,IAAM,CAAC,GAAQ,UAAY,CAAC,GAAQ,SAAW,EAAO,QAAQ,WAAW,WAAW,EAC7G,MAAO,CAAE,UAAW,EAAU,QAAQ,GAAI,SAAU,EAAO,SAAU,QAAS,EAAO,QAAS,CCdhG,SAAgB,GAAkB,CAAE,UAA2C,CAC7E,IAAM,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CAEpE,EAAS,8BADwB,EAAO,UAAW,EAAO,YAAa,EAAO,YACnD,CAAU,CACrC,EAAM,EAAS,GAAG,EAAO,UAAU,GAAG,EAAO,SAAS,GAAG,EAAO,UAAY,GAElF,OAAO,GAAS,SAAC,GAAD,CAAqC,SAAgB,SAAU,CAAvC,EAAuC,EAC7E,SAAC,EAAD,CAAY,MAAM,8BAA8B,YAAY,2CAA6C,EAG7G,SAAS,GAAkB,CAAE,SAAQ,UAA6G,CAChJ,GAAM,CAAC,EAAY,kBAAsC,CAAE,MAAO,EAAE,CAAE,WAAY,EAAE,CAAE,CAAC,CACjF,CAAC,EAAS,kBAAuC,EAAE,CAAC,CACpD,CAAC,EAAQ,kBAA+B,EAAE,CAAC,CAC3C,CAAC,EAAU,kBAAwB,GAAG,CACtC,CAAC,EAAY,kBAA0B,GAAG,CAC1C,CAAC,EAAQ,kBAA8C,EAAE,CAAC,CAC1D,CAAC,EAAM,kBAAoB,GAAM,CACjC,CAAC,EAAO,kBAAqB,GAAG,CAChC,eAA0C,KAAK,CAC/C,eAAkC,KAAK,CACvC,EAAa,EAAW,MAAM,OAAO,GAAQ,EAAK,OAAO,OAAS,yBAAyB,CAC3F,EAAY,EAAW,KAAK,GAAQ,EAAK,OAAO,YAAc,EAAS,CACvE,EAAa,GAAW,OAAO,YAAc,EAAE,CAC/C,EAAa,EAAW,WAAW,OAAO,GAAQ,EAAK,SAAS,SAAW,GAAY,EAAK,SAAW,YAAY,CACnH,GAAY,EAAW,KAAK,GAAQ,EAAK,SAAS,YAAc,EAAW,CAC3E,qBAAoB,EAAmB,EAAO,EAAE,GAAK,EAAO,KAAK,gBAAgB,IAAa,CAAE,GAAG,EAAM,GAAG,EAAQ,CAAE,CAAE,OAAQ,EAAS,SAAS,OAAQ,CAAC,CAAE,CAAC,EAAQ,EAAO,UAAW,EAAO,SAAU,EAAO,QAAQ,CAAC,CACzN,qBAAsB,MAAO,EAAS,EAAS,SAAS,SAAW,CACvE,GAAM,CAAC,EAAU,EAAW,GAAU,MAAM,QAAQ,IAAI,CACtD,EAAO,KAAK,uBAAwB,EAAQ,CAAE,SAAQ,CAAC,CACvD,EAAO,KAAK,8BAA+B,EAAQ,CAAE,SAAQ,CAAC,CAC9D,EAAO,WAAW,EAAO,UAAW,CAAE,SAAQ,CAAC,CAChD,CAAC,CACE,GAAQ,UACZ,EAAc,EAAuB,CACrC,EAAY,EAA0C,QAAQ,CAC9D,EAAW,EAA+B,OAAO,GAChD,CAAC,EAAQ,EAAO,UAAW,EAAO,SAAU,EAAO,QAAQ,CAAC,EAC/D,mBAAgB,CACd,IAAM,EAAa,IAAI,gBAKvB,MAJA,GAAS,QAAU,EACnB,EAAQ,GAAK,CACR,GAAQ,EAAW,OAAO,CAAC,MAAM,GAAS,CAAO,EAAW,OAAO,SAAS,EAAS,OAAO,EAAM,CAAC,EAAI,CACzG,YAAc,CAAO,EAAW,OAAO,SAAS,EAAQ,GAAM,EAAI,KACxD,EAAW,OAAO,EAC9B,CAAC,GAAQ,CAAC,CACb,eAAe,EAAI,EAAmC,CACpD,GAAI,GAAQ,EAAS,SAAS,OAAO,QAAS,OAC9C,EAAQ,GAAK,CACb,EAAS,GAAG,CACZ,IAAM,EAAS,EAAS,SAAS,OAC7B,EAAkB,GACtB,GAAI,CAAE,MAAM,GAAW,OAChB,EAAO,CAAE,EAAkB,GAAW,GAAQ,SAAS,EAAS,OAAO,EAAM,CAAC,QAC7E,CACN,GAAI,CAAC,GAAQ,QAAS,CACpB,GAAI,CAAE,MAAM,GAAQ,EAAO,OAAW,EAAO,CAAM,CAAC,GAAQ,SAAW,CAAC,GAAiB,EAAS,OAAO,EAAM,CAAC,CAC3G,GAAQ,SAAS,EAAQ,GAAM,GAI1C,SAAS,EAAO,EAAgB,EAAK,GAAI,CACvC,IAAM,EAAO,EAAW,KAAK,GAAQ,EAAK,OAAO,YAAc,EAAO,CAChE,EAAO,EAAW,WAAW,KAAK,GAAQ,EAAK,SAAS,YAAc,EAAG,CAC/E,EAAY,EAAO,CAAE,EAAc,EAAG,CACtC,EAAU,GAAgB,GAAM,OAAO,YAAc,EAAE,CAAE,GAAM,SAAS,OAAO,CAAC,CAElF,eAAe,IAAO,CACpB,IAAM,EAAW,MAAM,EAAK,WAAW,CACvC,GAAI,EAAS,SAAS,OAAO,QAAS,OACtC,IAAM,EAAM,IAAI,gBAAgB,IAAI,KAAK,CAAC,KAAK,UAAU,EAAS,CAAC,CAAE,CAAE,KAAM,mBAAoB,CAAC,CAAC,CACnG,GAAI,CACF,IAAM,EAAO,SAAS,cAAc,IAAI,CACxC,EAAK,KAAO,EAAK,EAAK,SAAW,GAAG,EAAO,UAAU,uBAAwB,EAAK,OAAO,QACjF,CAAE,IAAI,gBAAgB,EAAI,EAEtC,OAAO,UAAC,UAAD,CAAS,UAAU,aAAa,aAAW,kBAAkB,cAAY,2BAAzE,EACL,UAAC,EAAD,YACE,SAAC,SAAD,UAAQ,kBAAwB,GAChC,SAAC,EAAD,CAAQ,KAAK,UAAU,SAAU,EAAM,YAAe,KAAK,EAAI,SAAY,GAAG,UAAE,UAAgB,GAChG,SAAC,EAAD,CAAQ,KAAK,UAAU,SAAU,EAAM,YAAe,EAAO,SAAS,OAAO,UAAE,iBAAuB,GACtG,SAAC,EAAD,CAAQ,KAAK,UAAU,SAAU,EAAM,YAAe,KAAK,EAAI,GAAK,UAAE,eAAqB,GAC3F,SAAC,QAAD,CAAO,IAAK,EAAQ,KAAK,OAAO,OAAO,yBAAyB,UAAO,SAAU,GAAS,CACxF,IAAM,EAAO,EAAM,OAAO,QAAQ,GAAI,EAAM,OAAO,MAAQ,GACvD,GAAW,EAAI,SAAY,CAC7B,IAAM,EAAQ,KAAK,MAAM,MAAM,EAAK,MAAM,CAAC,CAC3C,OAAO,EAAM,gBAAkB,wBAA0B,EAAK,UAAW,CAAE,SAAU,EAAO,CAAC,CAAG,EAAK,QAAS,CAAE,QAAS,EAAO,CAAC,EACjI,EACC,EACG,GACT,GAAQ,SAAC,IAAD,CAAG,KAAK,iBAAS,EAAU,EAAG,KACtC,GAAO,SAAC,IAAD,CAAG,KAAK,kBAAS,wBAAyB,EAAG,MACrD,UAAC,UAAD,YAAS,UAAC,UAAD,WAAS,mBAAiB,EAAW,MAAM,OAAO,IAAW,GACnE,EAAW,MAAM,IAAI,IAAQ,SAAC,EAAD,CAAyC,MAAO,EAAK,OAAO,QAAU,EAAK,OAAO,oBAC9G,SAAC,EAAD,CAAQ,KAAK,UAAU,SAAU,EAAM,YAAe,KAAK,MAAU,EAAK,WAAY,CAAE,UAAW,EAAK,OAAO,UAAW,CAAC,CAAC,UAAE,gBAAsB,EACxI,CAFkC,EAAK,OAAO,UAE9C,CAAC,CACP,IACV,UAAC,MAAD,CAAK,UAAU,8BAAf,EACE,UAAC,WAAD,CAAU,SAAU,WAApB,EACE,SAAC,SAAD,UAAQ,kBAAwB,GAChC,SAAC,EAAD,CAAa,MAAM,sBAAY,UAAC,SAAD,CAAQ,aAAW,YAAY,MAAO,EAAU,SAAU,GAAS,EAAO,EAAM,OAAO,MAAM,UAA7F,EAC7B,SAAC,SAAD,CAAQ,MAAM,YAAG,qBAA2B,EAC3C,EAAW,IAAI,IAAQ,SAAC,SAAD,CAAoC,MAAO,EAAK,OAAO,mBAAY,EAAK,OAAO,QAAU,EAAK,OAAO,UAAmB,CAA3G,EAAK,OAAO,UAA+F,CAAC,CAC1I,GAAc,EACtB,GAAY,iCACX,SAAC,EAAD,CAAa,MAAM,qBAAW,UAAC,SAAD,CAAQ,aAAW,WAAW,MAAO,EAAY,SAAU,GAAS,EAAO,EAAU,EAAM,OAAO,MAAM,UAAxG,EAC5B,SAAC,SAAD,CAAQ,MAAM,YAAG,eAAqB,EACrC,EAAW,IAAI,IAAQ,SAAC,SAAD,CAAsC,MAAO,EAAK,SAAS,mBAAY,EAAK,SAAS,UAAmB,CAA3F,EAAK,SAAS,UAA6E,CAAC,CAC1H,GAAc,EACtB,EAAW,IAAI,IAAa,SAAC,EAAD,CAAkC,MAAO,EAAU,cAC7E,EAAU,OAAS,QAAU,EAAU,OAAS,QAC/C,SAAC,SAAD,CAAQ,aAAY,EAAU,KAAM,MAAO,EAAO,EAAU,OAAS,GAAI,SAAU,GAAS,EAAU,CAAE,GAAG,GAAS,EAAU,MAAO,EAAM,OAAO,MAAO,CAAC,WACtJ,EAAU,OAAS,OAAS,CAAC,GAAM,GAAM,CAAG,EAAU,QAAU,EAAE,EAAE,IAAI,IAAS,SAAC,SAAD,CAA4B,MAAO,OAAO,EAAM,UAAG,OAAO,EAAM,CAAU,CAA7D,OAAO,EAAM,CAAgD,CAAC,CACvJ,GAAG,SAAC,QAAD,CAAO,aAAY,EAAU,KAAM,MAAO,EAAO,EAAU,OAAS,GAAI,SAAU,GAAS,EAAU,CAAE,GAAG,GAAS,EAAU,MAAO,EAAM,OAAO,MAAO,CAAC,CAAI,EAC/J,CALiC,EAAU,KAK3C,CAAC,EACf,SAAC,EAAD,CAAQ,KAAK,UAAU,YAAe,KAAK,EAAI,SAAY,CACzD,IAAM,EAAK,GAAc,OAAO,YAAY,CACtC,EAAqB,CAAE,cAAe,QAAS,UAAW,EAAI,OAAQ,EAAU,OAAQ,GAAgB,EAAY,EAAO,CAAE,CACnI,EAAc,EAAG,CACjB,MAAM,EAAK,WAAY,CAAE,WAAU,CAAC,EACpC,UAAE,WAAiB,EACpB,IAAY,UAAC,IAAD,CAAG,KAAK,kBAAR,CAAkB,GAAU,OAAQ,GAAU,cAAgB,2BAA2B,GAAU,cAAc,aAAe,GAAI,GAAU,SAAW,WAAa,GAAU,cAAgB,gCAAkC,GAAO,GAAG,KACxP,IAAW,OAAQ,SAAC,MAAD,UAAM,KAAK,UAAU,GAAU,MAAO,KAAM,EAAE,CAAO,EAAG,KAC3E,GAAa,SAAC,EAAD,CAAQ,KAAK,UAAU,YAAe,KAAK,EAAI,SAAY,CAAE,MAAM,EAAK,WAAY,CAAE,UAAW,EAAY,CAAC,CAAE,EAAO,EAAS,EAAI,UAAE,oBAA0B,EAAG,KAChL,IAAG,SAAC,IAAD,UAAI,EAAW,OAAS,oDAAsD,4CAAgD,EAC3H,IACX,UAAC,WAAD,CAAU,SAAU,WAApB,EACE,SAAC,SAAD,UAAQ,gBAAsB,EAC7B,EAAO,OAAO,GAAS,EAAM,OAAS,SAAS,CAAC,IAAI,IAAS,SAAC,EAAD,CAA8B,MAAO,EAAM,MAAQ,EAAM,WAAa,EAAM,eACxI,SAAC,EAAD,CAAQ,KAAK,UAAU,YAAe,KAAK,MAAU,EAAK,iBAAkB,CAAE,KAAM,EAAM,KAAM,CAAC,CAAC,UAAE,UAAgB,EACxG,CAFkE,EAAM,KAExE,CAAC,EACf,SAAC,IAAD,UAAG,8CAA+C,EACjD,EAAQ,OAAS,EAAQ,IAAI,IAAU,SAAC,EAAD,CAA8B,MAAO,IAAI,EAAO,IAAI,KAAK,EAAO,kBACtG,SAAC,EAAD,CAAQ,KAAK,UAAU,YAAe,KAAK,MAAU,EAAK,iBAAkB,CAAE,IAAK,EAAO,IAAK,CAAC,CAAC,UAAE,UAAgB,EACvG,CAF4C,EAAO,IAEnD,CAAC,EAAG,SAAC,IAAD,UAAG,oBAAqB,GAC1C,SAAC,IAAD,UAAG,iGAAkG,EAC5F,GACP,GACE,GC1IZ,SAAgB,GAAe,EAAc,EAAiC,CAC5E,IAAM,EAAQ,IAAI,IACZ,EAAS,GAAG,EAAK,WAAW,KAAM,IAAI,CAAC,QAAQ,MAAO,GAAG,CAAC,GAChE,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,GAAU,EAAM,YAAc,EAAM,MAAQ,EAAM,MAAM,WAAW,KAAM,IAAI,CAC7E,EAAW,EAAO,WAAW,EAAO,CAAG,EAAO,MAAM,EAAO,OAAO,CAAG,EAGrE,EAFW,EAAS,WAAW,IAAI,EAAI,aAAa,KAAK,EAAS,EAAI,EAAS,MAAM,IAAI,CAAC,SAAS,KAAK,CAEtF,mBAAmB,mBAAmB,EAAO,GAAK,EAAS,QAAQ,QAAS,GAAG,CACnG,EAAO,EAAM,IAAI,EAAK,CACrB,IACH,EAAO,CAAE,KAAM,OAAQ,OAAM,SAAU,EAAQ,KAAM,EAAO,MAAM,IAAI,CAAC,GAAG,GAAG,CAC3E,OAAQ,OAAQ,OAAQ,EAAE,CAAE,eAAgB,GAAO,UAAW,GAAI,CACpE,EAAM,IAAI,EAAM,EAAK,EAEvB,IAAM,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAM,KAAM,KAAM,EAAM,KACnE,KAAM,QAAQ,EAAO,aAAa,CAAC,SAAS,WAAW,CAAG,EAAM,UAAY,SACvE,EAAM,MAAQ,EAAM,OAAS,EAAM,KAAK,CAAE,SAAU,EAAM,CACjE,EAAK,OAAO,KAAK,EAAK,CACtB,EAAK,OAAS,GAAuB,EAAK,KAAM,EAAK,OAAO,CAC5D,EAAK,eAAiB,GAAgB,EAAK,OAAO,OAAO,CAE3D,IAAM,EAAU,IAAI,IACpB,IAAK,IAAM,KAAQ,EAAM,QAAQ,CAAE,CACjC,IAAM,EAAQ,EAAK,KAAK,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,EAAG,GAAG,CAC/D,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,OAAQ,IAAS,CACjD,IAAM,EAAO,EAAM,MAAM,EAAG,EAAQ,EAAE,CAAC,KAAK,IAAI,CAC3C,EAAQ,IAAI,EAAK,EAAE,EAAQ,IAAI,EAAM,CAAE,KAAM,SAAU,OAAM,KAAM,EAAM,GAAS,WAAY,EAAG,CAAC,EAG3G,IAAK,IAAM,KAAU,EAAQ,QAAQ,CACnC,EAAO,WAAa,CAAC,GAAG,EAAQ,QAAQ,CAAE,GAAG,EAAM,QAAQ,CAAC,CAAC,OAAQ,GACnE,EAAK,KAAK,MAAM,EAAG,EAAK,KAAK,YAAY,IAAI,CAAC,GAAK,EAAO,KAAK,CAAC,OAEpE,MAAO,CAAE,MAAO,CAAC,GAAG,EAAM,QAAQ,CAAC,CAAE,QAAS,CAAC,GAAG,EAAQ,QAAQ,CAAC,CAAE,CAGvE,SAAgB,GAAsB,EAA8B,EAAgC,CAClG,OAAO,EAAQ,OAAQ,GAAW,CAChC,IAAM,EAAQ,EAAO,KAAK,MAAM,IAAI,CACpC,OAAO,EAAM,OAAO,EAAG,IAAU,IAAU,GAAK,CAAC,EAAU,IAAI,EAAM,MAAM,EAAG,EAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAChG,CAAC,MAAM,EAAM,IAAU,CACvB,IAAM,EAAI,EAAK,KAAK,MAAM,IAAI,CACxB,EAAI,EAAM,KAAK,MAAM,IAAI,CAC/B,IAAK,IAAI,EAAQ,EAAG,EAAQ,KAAK,IAAI,EAAE,OAAQ,EAAE,OAAO,CAAE,IAAS,CACjE,IAAM,EAAQ,EAAE,GAAQ,cAAc,EAAE,GAAQ,CAChD,GAAI,IAAU,EAAG,OAAO,EAE1B,OAAO,EAAE,OAAS,EAAE,QACpB,CCgCJ,IAAM,GAAyB,SAE/B,SAAS,GAAiB,EAAsC,EAAgB,CAC9E,IAAM,EAAS,GAAG,EAAO,GACzB,OAAO,EAAQ,KAAM,GAAU,EAAM,OAAS,GAAU,EAAM,KAAK,WAAW,EAAO,CAAC,CAGxF,IAAM,GAAqF,CACzF,CAAE,KAAM,OAAQ,MAAM,SAAC,GAAD,CAAS,KAAM,GAAM,EAAE,SAAU,4BAA6B,CACpF,CAAE,KAAM,OAAQ,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,SAAU,4BAA6B,CACjF,CAAE,KAAM,SAAU,MAAM,SAAC,GAAD,CAAQ,KAAM,GAAM,EAAE,SAAU,8BAA+B,CACxF,CACK,GAAkC,CAAC,OAAQ,OAAQ,iBAAkB,gBAAgB,CACrF,GAA0D,CAC9D,KAAM,GACN,KAAM,GACN,eAAgB,GAChB,cAAe,GAChB,CAED,SAAS,GAAoB,EAAsB,CACjD,OAAO,EAAQ,UAAU,SAAS,eAAe,EAC5C,EAAQ,UAAU,SAAS,aAAa,EACxC,EAAQ,UAAU,SAAS,iBAAiB,EAC5C,EAAQ,UAAU,SAAS,gBAAgB,CAGlD,SAAS,GAAc,EAA0B,EAAkC,CACjF,OAAO,EAAM,IAAK,GACZ,EAAK,OAAS,YAAoB,CAAE,KAAM,YAAa,CACvD,EAAK,OAAS,QACT,CAAE,KAAM,QAAS,OAAO,UAAC,OAAD,CAAM,UAAU,yBAAhB,CAAiC,EAAK,KAAM,EAAK,MAAa,GAAE,CAE1F,CACL,GAAI,EAAK,GACT,MAAO,EAAK,MACZ,KAAM,EAAK,KACX,SAAU,EAAK,SACf,SAAU,EAAK,SACf,OAAQ,EAAK,OACb,YAAa,CAAE,iBAAkB,EAAK,GAAI,CAC1C,aAAgB,CACd,EAAK,QAAQ,CACb,KAAS,EAEZ,CACD,CAGJ,SAAgB,GAAoB,CAClC,UAGC,CACD,GAAM,CAAE,GAAM,IAAgB,CACxB,CAAC,EAAU,kBAAwC,EAAE,CAAC,CACtD,CAAC,EAAY,kBAA0B,GAAM,CAC7C,CAAC,EAAa,kBAA2B,GAAG,CAC5C,CAAC,EAAa,kBAA2B,GAAM,CAC/C,CAAC,EAAS,kBAAuB,GAAM,CACvC,CAAC,EAAa,kBAA2B,IAAI,IAAc,CAC3D,EAAU,EAAS,QACnB,EAAe,GAAS,MAAQ,GAAS,MAAQ,aACjD,qBAAwB,GAAe,GAAS,MAAQ,GAAI,EAAS,QAAU,EAAE,CAAC,CAAE,CAAC,GAAS,KAAM,EAAS,OAAO,CAAC,CACrH,EAAQ,GAAQ,MAChB,EAAU,GAAQ,QAClB,gBAAmB,EAAO,CAChC,GAAU,QAAU,EACpB,IAAM,EAAY,GAA4B,EAAO,CAC/C,sBAA2B,EAAc,IAAuC,CACpF,IAAM,EAAY,GAAU,SAAS,UAErC,OADI,OAAO,GAAW,SAAY,WAC3B,EAAU,QAAQ,GAAuB,CAAE,OAAM,CAAE,EAAQ,CADb,QAAQ,QAAQ,KAAK,EAEzE,EAAE,CAAC,CACA,qBAAsB,KAAO,IAAyB,CACtD,MAAC,GAAa,CAAC,GAAW,CAAC,GAC/B,GAAW,GAAK,CAChB,GAAI,CACF,MAAM,EAAO,WAAW,EAAQ,GAAI,CAAE,MAAO,GAAuB,SAAQ,CAAC,CACxE,GAAQ,SAAS,EAAc,GAAM,MACpC,CACD,GAAQ,SAAS,EAAc,GAAK,QACjC,CAAO,GAAQ,SAAS,EAAW,GAAM,IAClD,CAAC,EAAQ,EAAW,GAAS,GAAG,CAAC,EACpC,mBAAgB,CACd,GAAI,CAAC,GAAU,CAAC,EAAW,CACpB,GAAQ,EAAc,GAAK,CAChC,OAEF,IAAM,EAAa,IAAI,gBACvB,EAAY,EAAE,CAAC,CACf,IAAM,EAAU,GAA0B,CACpC,EAAW,OAAO,UACtB,EAAa,IACN,EAAK,UAAY,IAAM,EAAQ,UAAY,IAC5C,GAAuB,EAAK,GAAK,GAAuB,EAAQ,CAAS,EACtE,EACP,CACF,EAAc,GAAM,GAEhB,EAAc,EAAO,UAAU,EAAO,CAI5C,OAHK,EAAO,SAAS,CAAE,OAAQ,EAAW,OAAQ,CAAC,CAAC,KAAK,EAAO,CAAC,UAAY,CACtE,EAAW,OAAO,SAAS,EAAc,GAAK,EACnD,KACW,CAAE,EAAW,OAAO,CAAE,KAAe,GACjD,CAAC,EAAQ,EAAU,CAAC,EACvB,mBAAgB,CACd,GAAI,CAAC,EAAW,OAChB,IAAM,EAAa,IAAI,gBAEvB,OADK,GAAQ,EAAW,OAAO,KAClB,EAAW,OAAO,EAC9B,CAAC,EAAW,GAAQ,CAAC,CACxB,GAAM,CAAC,EAAQ,mBAAkC,OAAO,CAClD,CAAC,GAAe,kBAA6B,GAAG,CAChD,CAAC,EAAiB,mBAA+B,GAAK,CACtD,CAAC,GAAO,mBAAqB,GAAG,CAChC,CAAC,GAAgB,mBAAmD,IAAI,IAAM,CAC9E,CAAC,GAAa,mBAAwC,IAAI,IAAM,CAChE,CAAC,GAAW,mBAAsC,CAAE,IAAK,OAAQ,IAAK,MAAO,CAAC,CAC9E,CAAC,GAAS,mBAAuB,CAAC,GAAG,CAAC,CACtC,CAAC,GAAc,mBAA4B,EAAE,CAC7C,gBAAmB,EAAE,CACrB,gBAAwB,GAAG,CAC3B,gBAAwB,GAAG,CAC3B,CAAC,GAAM,mBAA2D,KAAK,CACvE,CAAC,GAAa,mBAA6C,KAAK,CAChE,CAAC,GAAmB,mBAAoD,KAAK,CAC7E,gBAA4C,KAAK,CACjD,gBAA0C,KAAK,CAC/C,gBAA8C,KAAK,CACnD,gBAAkC,KAAK,CACvC,CAAC,GAAQ,mBAAsB,CAAE,UAAW,GAAM,QAAS,GAAM,CAAC,CAClE,CAAC,GAAW,mBAAyB,IAAI,IAAc,CACvD,CAAC,GAAW,mBAAyB,IAAI,IAAc,CACvD,CAAC,GAAe,mBAA0C,IAAI,IAAM,CACpE,CAAC,GAAa,mBAA2B,IAAI,IAAc,CAC3D,CAAC,GAAiB,mBAA8C,KAAK,CACrE,CAAC,GAAY,mBAAyC,KAAK,CAC3D,GAAc,CAAC,GAAG,EAAS,GAAG,EAAM,QAAS,GAAS,CAAC,EAAM,GAAG,EAAK,OAAO,CAAC,CAAC,CACjF,KAAM,GAAS,GAAY,EAAK,GAAK,GAAW,EAAI,KACjD,CAAC,GAAU,IAAe,GAAa,sBAAuB,IAAK,IAAK,IAAI,CAC5E,CAAC,GAAc,IAAmB,GAAa,uBAAwB,IAAK,IAAK,IAAI,EAC3F,mBAAgB,CACd,GAAU,SAAW,EACrB,GAAW,CAAC,GAAG,CAAC,CAChB,GAAgB,EAAE,CAClB,GAAe,IAAI,IAAM,CACzB,GAAmB,KAAK,CACxB,GAAc,KAAK,CACnB,GAAiB,IAAI,IAAM,CAC3B,GAAa,IAAI,IAAM,CACvB,GAAS,GAAG,EACX,CAAC,GAAS,GAAG,CAAC,EACjB,mBAAgB,CACd,IAAM,EAAQ,GAAU,QACpB,MAAe,UAAY,GAC1B,GAAS,GACd,IAAI,GAAe,UAAY,EAAO,CACpC,GAAe,QAAU,EACzB,OAEmB,MAAM,QAAQ,EAAS,OACvC,GACL,GAAe,QAAU,EACpB,GAAiB,EAAS,GAAuB,GACtD,GAAW,CAAC,GAAI,GAAuB,CAAC,CACxC,GAAgB,EAAE,KACjB,CAAC,EAAS,GAAS,GAAI,EAAS,OAAO,CAAC,CAC3C,IAAM,GAAS,GAAQ,KAAiB,GAClC,qBAA8B,GAAmB,GAAgB,EAAE,CAAE,CAAC,GAAgB,EAAE,CAAC,CACzF,qBAA4B,GAAiB,GAAa,EAAE,CAAE,CAAC,GAAa,EAAE,CAAC,CAC/E,GAAoB,GAAe,KAAO,GAAY,KACtD,qBACE,EAAM,IAAK,IAAU,CAAE,GAAG,EAAM,UAAW,GAAc,EAAM,EAAE,CAAE,EAAE,CAC3E,CAAC,EAAO,EAAE,CACX,CAeK,CAAE,aAAW,iBAAe,mCAb1B,GAAgB,CACpB,UACA,MAAO,GACP,YAAa,GACb,YAAa,GACb,kBACA,eACA,aACA,iBACA,cAAgB,GAAS,EAC1B,CAAC,CACF,CAAC,GAAgB,GAAa,GAAe,GAAQ,EAAS,GAAc,GAAO,GAAU,CAE5C,CAE7C,GAAY,GAAiB,CACjC,GAAe,QAAU,GAAU,QACnC,IAAM,EAAa,GAAmB,EAAK,CAC3C,GAAI,IAAe,GAAQ,OAC3B,IAAM,EAAO,GAAQ,MAAM,EAAG,GAAe,EAAE,CAC/C,EAAK,KAAK,EAAW,CACrB,GAAW,EAAK,CAChB,GAAgB,EAAK,OAAS,EAAE,EAG5B,IAAc,EAAkB,IAAiE,CACrG,EAAe,GAAG,CAClB,IAAM,EAAM,GAAY,EAAK,CACvB,EAAY,IAAS,GAAO,SAAW,GAAO,UAAY,GAAY,IAAI,EAAI,EACpF,GAAgB,GAAY,CAC1B,GAAI,GAAO,UAAY,GAAiB,CACtC,IAAM,EAAQ,GAAU,UAAW,GAAU,GAAY,EAAM,GAAK,GAAgB,CAC9E,EAAM,GAAU,UAAW,GAAU,GAAY,EAAM,GAAK,EAAI,CACtE,GAAI,GAAS,GAAK,GAAO,EAAG,CAC1B,IAAM,EAAQ,GAAU,MAAM,KAAK,IAAI,EAAO,EAAI,CAAE,KAAK,IAAI,EAAO,EAAI,CAAG,EAAE,CAAC,IAAK,GAAU,GAAY,EAAM,CAAC,CAChH,OAAO,IAAI,IAAI,EAAM,SAAW,EAAM,QAAU,CAAC,GAAG,EAAS,GAAG,EAAM,CAAG,EAAM,EAGnF,GAAI,GAAO,SAAW,GAAO,QAAS,CACpC,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAI,CAAE,EAAK,OAAO,EAAI,CAC9B,EAAK,IAAI,EAAI,CACX,EAET,OAAO,IAAI,IAAI,CAAC,EAAI,CAAC,EACrB,CACF,GAAmB,EAAI,CACvB,GAAc,GAAY,EAAK,CAAC,CAC5B,CAAC,GAAa,EAAK,OAAS,SAAW,GAAU,GAC9C,EAAO,aAAa,EAAK,KAAM,CAAE,UAAW,EAAQ,GAAI,MAAO,GAAuB,CAAC,CAAC,UAAY,GAAG,EAI1G,GAAe,GAAqB,EAAK,OAAS,QACpD,EACA,EAAK,OAAS,OAAS,EAAK,OAAO,KAAK,GAAS,EAAM,OAAS,QAAQ,EAAI,EAAK,OAAO,GAAK,OAC3F,GAAe,GAAqB,EAAK,OAAS,UAAa,CAAC,CAAC,GAAU,CAAC,CAAC,GAAW,CAAC,CAAC,GAAY,EAAK,CAC3G,EAAgB,GAAqB,CAEzC,GADA,EAAe,GAAG,CACd,EAAK,OAAS,SAAU,CAC1B,GAAS,EAAK,KAAK,CACnB,OAEF,GAAI,CAAC,GAAU,CAAC,EAAS,OACzB,IAAM,EAAO,GAAY,EAAK,EAAE,KAChC,GAAI,CAAC,EAAM,OACX,IAAM,EAAM,GAAY,EAAK,CACzB,EAAY,IAAI,EAAI,GACxB,EAAgB,GAAY,IAAI,IAAI,EAAQ,CAAC,IAAI,EAAI,CAAC,CACjD,EAAO,UAAU,EAAM,CAAE,UAAW,EAAQ,GAAI,MAAO,GAAuB,CAAC,CACjF,MAAO,GAAmB,EAAe,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAAC,CAAC,CACjG,YAAc,CACb,EAAgB,GAAY,CAC1B,GAAI,CAAC,EAAQ,IAAI,EAAI,CAAE,OAAO,EAC9B,IAAM,EAAO,IAAI,IAAI,EAAQ,CAE7B,OADA,EAAK,OAAO,EAAI,CACT,GACP,EACF,GAGA,GAAkB,GAAiB,GAAc,GAAY,CACjE,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAK,CAAE,EAAK,OAAO,EAAK,CAChC,EAAK,IAAI,EAAK,CACZ,GACP,CAEI,GAAuB,GAAiB,GAAkB,GAAY,CAC1E,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAK,CAAE,EAAK,OAAO,EAAK,CAChC,EAAK,IAAI,EAAK,CACZ,GACP,CAEI,GAAmB,GAAiB,GAAc,GAAY,CAClE,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAK,CAAE,EAAK,OAAO,EAAK,CAChC,EAAK,IAAI,EAAK,CACZ,GACP,EAEF,mBAAgB,CACV,KAAS,UAAY,KAAS,QAAU,KAAS,YAAY,GAAqB,KAAK,EAC1F,CAAC,GAAK,CAAC,CAEV,IAAM,IAAY,EAAmB,IAA6B,CAChE,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACvB,GAAQ,KAAK,CACb,GAAqB,KAAK,CAC1B,IAAM,EAAS,EAAM,cAIrB,GAAe,CAAE,OAHF,GAAoB,EAAO,CACtC,EAAO,uBAAuB,CAC9B,EAAoB,EAAM,QAAS,EAAM,QAAQ,CAC5B,QAAO,CAAC,EAG7B,GAAmB,GAAyC,CAChE,GAAI,KAAS,EAAM,CACjB,GAAQ,KAAK,CACb,OAGF,IAAM,GADM,IAAS,SAAW,GAAkB,IAAS,OAAS,GAAgB,IACnE,SAAS,uBAAuB,CAC7C,GAAM,GAAqB,EAAK,CACpC,GAAQ,EAAK,EAGT,IAAc,EAAc,IAAoC,CACpE,CAAE,KAAM,QAAS,MAAO,EAAM,MAAM,SAAC,GAAD,CAAQ,UAAU,iBAAiB,KAAM,GAAM,EAAE,CACrF,CAAE,KAAM,OAAQ,GAAI,OAAQ,MAAO,EAAE,2BAA2B,CAAE,MAAM,SAAC,GAAD,CAAY,KAAM,GAAM,EAAE,WAAc,GAAS,EAAK,CAAE,CAChI,CACE,KAAM,OACN,GAAI,YACJ,MAAO,EAAE,+BAA+B,CACxC,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EACxB,WAAc,KAAK,UAAU,WAAW,UAAU,GAAQ,EAAa,CACxE,CACD,CACE,KAAM,OACN,GAAI,WACJ,MAAO,GAAU,IAAI,EAAK,CAAG,EAAE,0CAA0C,CAAG,EAAE,qCAAqC,CACnH,KAAM,GAAU,IAAI,EAAK,EAAG,SAAC,GAAD,CAAS,KAAM,GAAM,GAAG,SAAC,GAAD,CAAM,KAAM,GAAM,EACtE,WAAc,GAAe,EAAK,CACnC,CACF,CACK,GAAY,GAAwC,CACxD,IAAM,EAAO,GAAS,EAAK,CAE3B,OADI,EAAK,OAAS,SAAiB,GAAW,EAAK,KAAM,EAAK,KAAK,CAC5D,CACL,CAAE,KAAM,QAAS,MAAO,EAAK,KAAM,MAAM,SAAC,EAAD,CAAM,KAAM,GAAM,EAAE,CAC7D,GAAI,GAAY,EAAK,CAAG,CAAC,CAAE,KAAM,OAAiB,GAAI,OAAQ,MAAO,EAAE,2BAA2B,CAAE,SAAU,QAAS,WAAc,EAAa,EAAK,CAAE,CAAC,CAAG,EAAE,CAC/J,GAAI,EAAK,OAAS,QACd,CAAC,CACD,KAAM,OACN,GAAI,YACJ,MAAO,EAAE,+BAA+B,CACxC,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EACxB,WAAc,KAAK,UAAU,WAAW,UAAU,EAAK,KAAK,CAC7D,CAAC,CACA,EAAE,CACN,CACE,KAAM,OACN,GAAI,YACJ,MAAO,EAAE,oCAAoC,CAC7C,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EACxB,SAAU,eACV,WAAc,KAAK,UAAU,WAAW,UAAU,EAAK,OAAS,QAAU,EAAK,SAAW,EAAK,KAAK,CACrG,CACF,EAGuB,EAAE,+BAA+B,CAIhD,EAAE,sCAAsC,CAMnD,IAAM,GAAe,GAAqB,CACxC,IAAM,EAAO,GAAe,EAAU,GAAgB,GAAY,CAClE,GAAkB,EAAK,SAAS,CAChC,GAAe,EAAK,MAAM,EAGtB,IAAiB,EAAc,EAAc,EAAe,EAAW,KAAU,CACrF,IAAM,EAAc,EAAQ,KAAM,GAAU,EAAM,KAAK,WAAW,GAAG,EAAK,GAAG,CAAC,CACxE,EAAO,CAAC,GAAU,IAAI,EAAK,CAC3B,EAAa,EAAQ,KAAM,GAAU,EAAM,OAAS,EAAK,CACzD,EAAW,KAAW,EACtB,EAAS,GAAO,WAAW,GAAG,EAAK,GAAG,CACtC,GACJ,UAAC,SAAD,CACE,KAAK,SACL,UAAW,gBAAgB,EAAW,UAAY,EAAS,WAAa,KAAK,GAAe,CAAC,EAAO,aAAe,KACnH,MAAO,CAAE,YAAa,iCAAiC,EAAM,sDAAuD,CACpH,YAAe,CACb,GAAS,EAAK,CACV,IACF,GAAc,GAAY,EAAW,CAAC,CACtC,GAAe,IAAI,IAAI,CAAC,EAAK,CAAC,CAAC,CAC/B,GAAmB,EAAK,GAG5B,kBAAqB,GAAe,GAAgB,EAAK,CACzD,cAAgB,GAAU,GAAS,EAAO,GAAW,EAAM,EAAK,CAAC,UAbnE,EAeE,SAAC,OAAD,CACE,UAAW,iBAAiB,EAAc,GAAK,YAAY,EAAO,GAAK,eACvE,QAAU,GAAU,CACb,IACL,EAAM,iBAAiB,CACvB,GAAgB,EAAK,aAGvB,SAAC,EAAD,CAAa,KAAM,GAAM,EACpB,GACP,SAAC,OAAD,CAAM,UAAU,0BAAkB,GAAO,SAAC,GAAD,CAAY,KAAM,GAAM,GAAG,SAAC,GAAD,CAAQ,KAAM,GAAM,EAAQ,GAChG,SAAC,OAAD,CAAM,UAAU,0BAAkB,EAAY,EACvC,GAGX,OADK,GAEH,UAAC,MAAD,CACE,UAAW,oBAAoB,EAAW,UAAY,EAAS,WAAa,cAD9E,CAIG,GACD,SAAC,SAAD,CACE,KAAK,SACL,UAAU,kBACV,cAAa,EAAwB,eACrC,MAAO,EAAE,4BAA4B,CACrC,aAAY,EAAE,4BAA4B,CAC1C,QAAU,GAAU,CAClB,EAAM,iBAAiB,CACvB,GAAe,EAAK,YAGtB,SAAC,GAAD,CAAM,KAAM,GAAI,KAAK,eAAiB,EAC/B,EACL,EAhBC,OAAO,IAgBR,EApBc,SAAC,MAAD,UAA2B,EAAU,CAA3B,QAAQ,IAAmB,EAwBvD,GAAc,KAAsB,EACtC,EAAE,2BAA2B,CAC7B,KAAsB,GACnB,GAAc,KAAM,GAAS,EAAK,OAAO,EAAI,GAAY,KAAM,GAAS,EAAK,OAAO,EAAG,MACxF,EAAE,8BAA8B,CAChC,GAAwC,CAC5C,KAAM,EAAE,2BAA2B,CACnC,KAAM,EAAE,2BAA2B,CACnC,eAAgB,EAAE,+BAA+B,CACjD,cAAe,EAAE,2BAA2B,CAC7C,CAED,OACE,UAAC,MAAD,CAAK,UAAU,UAAU,cAAY,iCAArC,CACG,GAAU,GAAU,iCACnB,SAAC,EAAD,WAAS,SAAC,EAAD,CAAQ,KAAK,UAAU,gBAAe,EAAa,YAAe,EAAe,CAAC,EAAY,UAAE,kBAAwB,EAAU,EAC1I,GAAc,SAAC,GAAD,CAA2B,SAAU,EAAG,KACtD,GAAG,MACN,UAAC,MAAD,CACE,UAAU,WACV,IAAK,GACL,MAAO,CAAE,aAAc,GAAG,GAAS,IAAK,iBAAkB,GAAG,GAAa,IAAK,UAHjF,EAKE,SAAC,QAAD,CAAO,UAAU,4BACf,UAAC,MAAD,CAAK,UAAU,0BAAf,EACE,UAAC,UAAD,CAAS,UAAU,2BAAnB,EACE,UAAC,SAAD,CAAQ,KAAK,SAAS,cAAa,EAAwB,kBAAmB,UAAW,uBAAuB,GAAO,UAAY,GAAK,eAAgB,YAAe,GAAW,IAAa,CAAE,GAAG,EAAS,UAAW,CAAC,EAAQ,UAAW,EAAE,UAA9O,EACE,SAAC,OAAD,CAAM,UAAU,2BAAiB,SAAC,EAAD,CAAa,KAAM,GAAM,EAAO,YAAC,GAAD,CAAM,UAAU,uBAAuB,KAAM,GAAM,YAAC,OAAD,CAAM,UAAU,gCAAwB,EAAE,2BAA2B,CAAQ,EAC1L,GACR,GAAO,WACN,SAAC,MAAD,CAAK,UAAU,gCACZ,GAAU,KAAO,CAAC,GAAG,GAAU,CAAC,IAAK,GAAS,GAAc,EAAM,EAAK,MAAM,IAAI,CAAC,GAAG,GAAG,EAAI,EAAM,EAAG,GAAK,CAAC,EAAG,SAAC,MAAD,CAAK,UAAU,2BAAmB,EAAE,6BAA6B,CAAO,EACnL,EACJ,KACI,IACV,UAAC,UAAD,CAAS,UAAU,2BAAnB,EACE,UAAC,SAAD,CAAQ,KAAK,SAAS,cAAa,EAAwB,kBAAmB,UAAW,uBAAuB,KAAW,GAAK,UAAY,KAAK,GAAO,QAAU,GAAK,eAAgB,gBAAe,GAAO,QAAS,YAAe,GAAS,GAAG,CAAE,kBAAqB,GAAW,IAAa,CAAE,GAAG,EAAS,QAAS,CAAC,EAAQ,QAAS,EAAE,CAAE,cAAgB,GAAU,GAAS,EAAO,GAAW,GAAI,EAAa,CAAC,UAApZ,EACE,SAAC,OAAD,CAAM,UAAU,iBAAiB,QAAU,GAAU,CAAE,EAAM,iBAAiB,CAAE,GAAW,IAAa,CAAE,GAAG,EAAS,QAAS,CAAC,EAAQ,QAAS,EAAE,YAAK,SAAC,EAAD,CAAa,KAAM,GAAM,EAAO,YAAC,GAAD,CAAY,UAAU,sCAAsC,KAAM,GAAM,YAAC,OAAD,CAAM,UAAU,gCAAwB,EAAoB,EACrT,GACR,GAAO,SACN,SAAC,MAAD,CAAK,UAAU,gCACZ,GAAsB,EAAS,GAAU,CAAC,IAAK,GAAU,GAAc,EAAM,KAAM,EAAM,KAAM,EAAM,KAAK,MAAM,IAAI,CAAC,OAAS,EAAE,CAAC,CAC9H,EACJ,KACI,GACN,GACA,GACR,SAAC,GAAD,CACE,MAAO,EAAE,0CAA0C,CACnD,OAAS,GAAU,CACjB,IAAM,EAAO,GAAW,EACxB,GAAY,EAAK,CACjB,GAAS,SAAS,MAAM,YAAY,aAAc,GAAG,KAAK,IAAI,IAAK,KAAK,IAAI,IAAK,EAAK,CAAC,CAAC,IAAI,EAE9F,GACF,UAAC,UAAD,CAAS,UAAU,yBAAnB,EACE,SAAC,EAAD,CACE,UAAU,aACV,QACE,SAAC,GAAD,CACE,YAAa,GACC,eACd,QAAS,EAAQ,IAAK,GAAU,EAAM,KAAK,CAC3C,UAAW,GAAe,EAC1B,aAAc,GAAe,GAAQ,OAAS,EAC9C,gBAAiB,CAAC,GAAW,EAC7B,WAAc,GAAiB,GAAU,KAAK,IAAI,EAAG,EAAQ,EAAE,CAAC,CAChE,cAAiB,GAAiB,GAAU,KAAK,IAAI,GAAQ,OAAS,EAAG,EAAQ,EAAE,CAAC,CACpF,cAAiB,KAAK,IAAS,CAC/B,WAAY,GACZ,EAEJ,KAAK,SAAC,EAAD,CAAY,IAAK,GAAmB,KAAK,UAAU,QAAQ,QAAQ,MAAO,EAAE,0BAA0B,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,YAAe,GAAgB,WAAW,CAAI,EAC1L,GAEF,UAAC,MAAD,CAAK,UAAU,2BAAf,EACE,UAAC,MAAD,CAAK,UAAU,0BAAf,EACE,UAAC,EAAD,CAAS,UAAU,yBAAnB,EACE,SAAC,EAAD,CAAQ,KAAK,UAAU,QAAQ,QAAQ,cAAa,EAAwB,SAC1E,SAAU,GAAY,OAAS,GAAK,CAAC,IAAe,CAAC,GAAY,GAAY,CAC7E,QAAS,GAAQ,IAAe,EAAY,IAAI,GAAY,GAAY,CAAC,EACzE,MAAO,EAAE,0BAA0B,CACnC,YAAe,CAAM,IAAa,EAAa,GAAY,WAAM,EAAE,2BAA2B,CAAU,GAC1G,SAAC,EAAD,CAAQ,IAAK,GAAiB,KAAK,UAAU,QAAQ,QAAQ,cAAa,EAAwB,UAAW,UAAW,GAAoB,YAAc,OAAW,aAAa,SAAC,GAAD,CAAQ,KAAM,GAAM,EAAE,YAAe,GAAgB,SAAS,UAAG,GAAqB,GACxQ,SAAC,EAAD,CAAa,UAAU,gBAAgB,cAAa,EAAwB,OAAQ,MAAO,GAAO,SAAW,GAAU,GAAS,EAAM,OAAO,MAAM,CAAE,YAAe,GAAS,GAAG,CAAE,YAAa,EAAE,mCAAmC,CAAE,MAAO,EAAE,wBAAwB,CAAI,GAC3Q,SAAC,EAAD,CAAQ,IAAK,GAAe,KAAK,UAAU,QAAQ,QAAQ,cAAa,EAAwB,QAAS,aAAa,SAAC,GAAD,CAAa,KAAM,GAAM,EAAE,YAAe,GAAgB,OAAO,UAAG,GAAW,GAAU,KAAc,EACrN,GAET,GAAU,SAAC,MAAD,CAAK,KAAK,kBAAS,oBAAuB,EAAG,KACvD,GAAc,SAAC,MAAD,CAAK,KAAK,iBAAS,EAAkB,EAAG,KACtD,GACC,SAAC,EAAD,CACE,UAAU,WACV,MAAO,EAAE,6BAA6B,CACtC,YAAsB,EAAT,EAAW,sCAA2C,wCAAwC,CAC3G,MAAM,SAAC,GAAD,CAAY,KAAM,GAAM,EAC9B,EACC,EAED,GAAU,SAAW,GACvB,SAAC,EAAD,CAAY,UAAU,WAAW,MAAO,EAAE,4BAA4B,CAAE,YAAa,EAAE,kCAAkC,CAAE,MAAM,SAAC,GAAD,CAAY,KAAM,GAAM,EAAI,EAC3J,IAAW,UACb,SAAC,GAAD,CACE,MAAO,GACM,eACA,cACF,aACX,OAAS,GAAQ,GAAc,GAAY,GAAc,EAAS,EAAI,CAAC,CACvE,SAAU,GACV,WAAY,EACZ,eAAgB,EAAO,IAAS,GAAS,EAAO,GAAS,EAAK,CAAC,CAC/D,iBAAoB,GAAe,IAAI,IAAM,CAC7C,GAEF,SAAC,GAAD,CACE,MAAO,GACQ,iBACP,SACM,gBACC,iBACF,eACA,cACb,SAAU,GACV,WAAY,EACZ,eAAgB,EAAO,IAAS,GAAS,EAAO,GAAS,EAAK,CAAC,CAC/D,sBAAuB,GACvB,iBAAoB,GAAe,IAAI,IAAM,CAC7C,GA7BF,SAAC,EAAD,CAAY,UAAU,WAAW,MAAO,EAAE,2BAA2B,CAAE,YAAa,EAAE,iCAAiC,CAAE,MAAM,SAAC,GAAD,CAAY,KAAM,GAAM,EAAI,GA+B7J,UAAC,SAAD,CAAQ,UAAU,qBAAlB,EACE,SAAC,OAAD,UACG,GAAY,KACT,EAAE,gCAAiC,CAAE,MAAO,GAAU,OAAQ,SAAU,GAAY,KAAM,CAAC,CAC3F,EAAE,6BAA8B,CAAE,MAAO,GAAU,OAAQ,CAAC,CAC3D,GACP,SAAC,OAAD,UAAO,IAAU,EAAoB,EAC9B,GACL,GACL,GACC,SAAC,GAAD,CACe,eACb,cAAe,EACf,UAAW,GACG,eACD,eACb,YAAe,GAAc,KAAK,CAClC,OAAS,GAAU,CACjB,IAAM,EAAO,GAAe,EAC5B,GAAgB,EAAK,CACrB,GAAS,SAAS,MAAM,YAAY,iBAAkB,GAAG,KAAK,IAAI,IAAK,KAAK,IAAI,IAAK,EAAK,CAAC,CAAC,IAAI,EAElG,cAAiB,OACjB,EACA,KACA,GACE,GACN,IAEN,SAAC,EAAD,CACE,KAAM,GAAQ,IAAqB,KAAS,UAC5C,WAAY,GACZ,YAAe,GAAQ,KAAK,CAC5B,oBAAqB,CAAC,GAAgB,CACtC,UAAU,iBACV,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,UAAC,MAAD,CAAK,UAAU,sBAAsB,cAAa,EAAwB,mBAA1E,EACE,SAAC,MAAD,CAAK,UAAU,6BAAqB,EAAE,iCAAiC,CAAO,EAC7E,GAAc,IAAK,GAAS,CAC3B,IAAM,EAAO,GAAW,EAAK,OAAO,CACpC,OACE,UAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mBAAmB,cAAa,EAAK,OAAS,OAAS,QAAuB,YAAe,GAAY,EAAK,GAAG,UAAjJ,EACE,SAAC,GAAD,CAAU,QAAS,EAAK,OAAQ,aAAgB,GAAY,EAAK,GAAG,CAAE,SAAU,GAAI,aAAU,MAAO,EAAK,MAAO,UAAU,kBAAoB,GAC/I,SAAC,EAAD,CAAM,KAAM,GAAI,UAAW,wBAAwB,EAAK,SAAW,MAAQ,kBAAoB,KAAQ,EACtG,EAAK,MACC,EAJ4F,EAAK,GAIjG,EAEX,EACF,SAAC,MAAD,CAAK,UAAU,sBAAwB,GACvC,SAAC,MAAD,CAAK,UAAU,6BAAqB,EAAE,kCAAkC,CAAO,EAC9E,GAAY,IAAK,GAAS,CACzB,IAAM,EAAO,GAAS,EAAK,KAAK,CAChC,OACE,UAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mBAAmB,cAAa,EAAK,OAAS,OAAS,QAAuB,YAAe,GAAY,EAAK,GAAG,UAAjJ,EACE,SAAC,GAAD,CAAU,QAAS,EAAK,OAAQ,aAAgB,GAAY,EAAK,GAAG,CAAE,SAAU,GAAI,aAAU,MAAO,EAAK,MAAO,UAAU,kBAAoB,GAC/I,SAAC,EAAD,CAAM,KAAM,GAAI,UAAU,wBAA0B,EACnD,EAAK,MACC,EAJ4F,EAAK,GAIjG,EAEX,EACF,SAAC,MAAD,CAAK,UAAU,sBAAwB,GACvC,SAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mCAAmC,SAAU,KAAsB,EAAG,YAAe,CAAE,GAAkB,IAAI,IAAM,CAAE,GAAe,IAAI,IAAM,WAC3K,EAAE,8BAA8B,CAC1B,EACL,GACO,GAEf,SAAC,EAAD,CACE,KAAM,GAAQ,IAAqB,KAAS,QAC5C,WAAY,GACZ,YAAe,GAAQ,KAAK,CAC5B,oBAAqB,CAAC,GAAc,CACpC,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,UAAC,MAAD,CAAK,UAAU,+BAAf,EACE,SAAC,MAAD,CAAK,UAAU,6BAAqB,EAAE,yBAAyB,CAAO,EACrE,GAAU,IAAK,GAAQ,CACtB,IAAM,EAAO,GAAe,GACtB,EAAS,GAAU,MAAQ,EACjC,OACE,UAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mBAAmB,cAAa,EAAS,OAAS,QAAmB,YAAe,GAAc,GAAY,GAAc,EAAS,EAAI,CAAC,UAA1K,EACE,SAAC,OAAD,CAAM,UAAU,gBAAgB,eAAc,EAAS,OAAS,QAAW,GAC3E,SAAC,EAAD,CAAM,KAAM,GAAI,UAAU,wBAA0B,EACnD,GAAW,GACL,EAJuF,EAIvF,EAEX,EACF,SAAC,MAAD,CAAK,UAAU,sBAAwB,GACvC,SAAC,MAAD,CAAK,UAAU,6BAAqB,EAAE,4BAA4B,CAAO,EACvE,CAAC,CAAC,MAAO,GAAkB,CAAE,CAAC,OAAQ,GAAoB,CAAC,CAAW,KAAK,CAAC,EAAK,KAAU,CAC3F,IAAM,EAAS,GAAU,MAAQ,EACjC,OACE,UAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mBAAmB,cAAa,EAAS,OAAS,QAAmB,YAAe,GAAc,GAAY,GAAW,EAAS,EAAiB,CAAC,UAApL,EACE,SAAC,OAAD,CAAM,UAAU,gBAAgB,eAAc,EAAS,OAAS,QAAW,GAC3E,SAAC,EAAD,CAAM,KAAM,GAAI,UAAU,wBAA0B,EACnD,EAAE,IAAQ,MAAQ,0BAA4B,2BAA2B,CACnE,EAJuF,EAIvF,EAEX,CACE,GACO,GAEf,SAAC,EAAD,CACE,KAAM,GAAQ,IAAqB,KAAS,YAC5C,WAAY,GACZ,YAAe,GAAQ,KAAK,CAC5B,oBAAqB,CAAC,GAAkB,CACxC,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,UAAC,MAAD,CAAK,UAAU,4BAAf,EACE,SAAC,SAAD,UAAS,EAAE,wBAAwB,CAAU,GAC7C,SAAC,MAAD,CAAK,UAAU,yCACZ,GAAe,KAAK,CAAE,OAAM,OAAM,eACjC,UAAC,SAAD,CACE,KAAK,SACL,cAAa,EAAwB,QACrC,UAAU,iDACV,eAAc,IAAW,EAAO,OAAS,QAEzC,YAAe,GAAU,EAAK,UANhC,CAQG,GAAK,SAAC,OAAD,UAAO,EAAE,EAAS,CAAQ,EACzB,EAJF,EAIE,CACT,CACE,GACN,UAAC,QAAD,CAAO,UAAU,2BAAjB,EACE,SAAC,OAAD,CAAM,UAAU,6BAAqB,EAAE,+BAA+B,CAAQ,GAC9E,SAAC,EAAD,CACE,cAAa,EAAwB,iBACrC,UAAU,oBACV,IAAK,GACL,IAAK,IACL,KAAM,EACN,MAAO,GACP,SAAW,GAAU,EAAiB,OAAO,EAAM,OAAO,MAAM,CAAC,CACjE,MAAO,EAAE,uCAAwC,CAAE,KAAM,GAAe,CAAC,CACzE,EACI,IACR,SAAC,EAAD,CACE,OAAO,MACP,UAAU,yBACV,MAAO,EAAE,qCAAqC,CAC9C,QAAS,EACT,cAAa,EAAwB,kBACrC,gBAAiB,GACjB,EACE,GACO,GAEf,SAAC,EAAD,CACE,KAAM,EAAQ,GACd,WAAY,IAAa,QAAU,KACnC,MAAO,GAAc,GAAc,GAAY,MAAM,CAAG,EAAE,CAC1D,YAAe,GAAe,KAAK,CACnC,MAAO,EAAE,6BAA6B,CACtC,eAAgB,CAAE,cAAe,EAAwB,gBAAiB,CAC1E,EACE,GChyBV,eAAsB,GAAyB,EAA8G,CAC3J,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,iDAAiD,CAC9F,IAAM,oBAAkB,EAAM,aAAa,CAQ3C,OAPA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,uBACpD,SAAC,GAAD,CACA,OAAQ,EAAM,OACd,EACoB,EACvB,CACM,SAAY,EAAK,SAAS,CCZnC,IAAM,GAAO,EAAiB,CAAE,syBAAI,kgBAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCVtB,IAAa,GAA8B,8BAE9B,GAAoB,OAAO,OAAO,CAC7C,OAAQ,mBACR,MAAO,kBACP,WAAY,wBACZ,UAAW,uBACX,YAAa,yBACb,gBAAiB,6BACjB,cAAe,2BACf,UAAW,uBACX,gBAAiB,8BAClB,CAAC,CAEoC,OAAO,OAAO,CAClD,IAAK,GACL,KAAM,CAAC,SAAU,OAAO,CACxB,SAAU,CAAC,KAAM,OAAQ,aAAa,CACtC,WAAY,CACV,GAAI,CAAE,KAAM,SAAU,CACtB,KAAM,CAAE,KAAM,SAAU,CACxB,MAAO,CAAE,KAAM,SAAU,CACzB,WAAY,CACV,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,SAAS,CAC5B,WAAY,CACV,KAAM,CAAE,KAAM,SAAU,CACxB,KAAM,CAAE,KAAM,SAAU,CACxB,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,MAAO,QAAS,OAAQ,QAAQ,CAC3C,WAAY,CACV,IAAK,CAAE,KAAM,SAAU,CACvB,MAAO,CAAE,KAAM,SAAU,CACzB,KAAM,CAAE,KAAM,CAAC,UAAW,UAAW,SAAU,OAAQ,OAAQ,OAAQ,QAAS,QAAQ,CAAE,CAC1F,MAAO,EAAE,CACT,QAAS,CAAE,KAAM,QAAS,MAAO,CAAE,KAAM,SAAU,CAAE,CACtD,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAAC,CCrCF,SAAgB,GAA8B,EAAyE,CAErH,MADI,CAAC,GAAY,UAAY,CAAC,MAAM,QAAQ,EAAW,WAAW,CAAS,KACpE,CACL,GAAI,EAAW,SACf,KAAM,EAAW,OAAS,EAAW,SAAW,OAAY,EAAW,SAAW,UAAU,EAAW,UACvG,MAAO,SACP,WAAY,EAAW,WAAW,IAAK,IAAe,CACpD,KAAM,EAAU,KAChB,KAAM,MACN,SAAU,MACV,OAAQ,OAAO,QAAQ,EAAU,QAAU,EAAE,CAAC,CAAC,KAAK,CAAC,EAAK,KAAY,CACpE,IAAM,EAAW,EAAU,SAAS,GAC9B,EAAO,GAA0B,EAAQ,EAAS,CACxD,MAAO,CACL,MACA,MAAO,GAA0B,EAAI,CACrC,OACA,MAAO,GAA6B,EAAU,EAAK,CACpD,EACD,CACH,EAAE,CACJ,CC+CH,SAAS,GACP,EACA,EACA,EACA,CAEA,MADI,CAAC,GAAc,CAAC,GAAS,UAAY,CAAC,GAAQ,SAAiB,GAC5D,EAAW,WAAa,EAAQ,UAClC,EAAW,WAAa,EAAO,UAC/B,EAAW,aAAe,EAAO,WAGxC,SAAS,GAAc,EAAsD,EAAO,GAAI,CACtF,IAAM,EAAQ,CAAE,OAAM,YAAa,IAAK,CAOxC,OANI,EAAU,OAAS,aAAoB,SAAC,GAAD,CAAQ,GAAI,EAAS,EAC5D,EAAU,OAAS,SAAgB,SAAC,GAAD,CAAW,GAAI,EAAS,EAC3D,EAAU,OAAS,UAAiB,SAAC,GAAD,CAAQ,GAAI,EAAS,EACzD,EAAU,KAAK,SAAS,WAAW,EAAS,SAAC,GAAD,CAAQ,GAAI,EAAS,EACjE,EAAU,KAAK,SAAS,OAAO,EAAI,EAAU,KAAK,SAAS,WAAW,EAAS,SAAC,GAAD,CAAS,GAAI,EAAS,EACrG,EAAU,KAAK,SAAS,YAAY,EAAS,SAAC,GAAD,CAAiB,GAAI,EAAS,GACxE,SAAC,GAAD,CAAK,GAAI,EAAS,EAG3B,SAAS,GAAqB,CAAE,QAAO,SAAiE,CACtG,IAAM,EAAc,GAAgB,CAC9B,CAAE,KAAM,IAAgB,CAW9B,OAVA,mBAAgB,CACd,IAAM,MAAgB,GAAO,CACvB,EAAU,GAAyB,EAAM,MAAQ,UAAY,GAAO,CAG1E,OAFA,OAAO,iBAAiB,cAAe,EAAQ,CAC/C,OAAO,iBAAiB,UAAW,EAAO,KAC7B,CACX,OAAO,oBAAoB,cAAe,EAAQ,CAClD,OAAO,oBAAoB,UAAW,EAAO,GAE9C,CAAC,EAAM,CAAC,EACX,oBACE,SAAC,MAAD,CACE,UAAU,0BACV,cAAa,GAAkB,gBAC/B,MAAO,CACL,KAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,WAAa,IAAI,CAAC,CAC7D,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,YAAc,IAAI,CAAC,CAC9D,CACD,cAAgB,GAAU,EAAM,iBAAiB,CACjD,cAAgB,GAAU,EAAM,gBAAgB,WAEhD,SAAC,EAAD,CACE,MAAO,EAAE,wBAAwB,CACjC,MAAO,EAAM,MAAM,IAAK,GAClB,EAAK,OAAS,YAAoB,CAAE,KAAM,YAAa,CACvD,EAAK,OAAS,QAAgB,CAAE,KAAM,QAAS,MAAO,EAAK,MAAO,CAC/D,CACL,GAAI,EAAK,GACT,MAAO,EAAK,MACZ,KAAM,EAAK,OAAQ,SAAC,OAAD,CAAM,UAAU,2BAAmB,EAAK,KAAY,EAAG,EAAK,KAC/E,SAAU,EAAK,SACf,OAAQ,EAAK,OACb,aAAgB,CAAE,EAAK,QAAQ,CAAE,GAAO,EACzC,CACD,CACF,EACE,EACN,GAAe,SAAS,KACzB,CAGH,SAAS,GAAc,CAAE,SAAQ,SAA0D,CACzF,GAAM,CAAE,KAAM,IAAgB,CACxB,EAAO,EAAO,KACd,oBAA2B,gBAAgB,EAAO,WAAW,CAAE,CAAC,EAAO,CAAC,CACxE,CAAC,EAAW,kBAAyB,IAAI,IAAc,CACvD,CAAC,EAAO,kBAAqB,GAAG,CAChC,CAAC,EAAc,kBAA4B,GAAM,CACjD,CAAC,EAAoB,kBAAqD,KAAK,CAC/E,eAA8C,KAAK,CACnD,CAAC,EAAQ,kBAAsB,GAAM,CACrC,CAAC,EAAa,mBAAsC,KAAK,CACzD,eAA4D,EAAE,CAAC,EAErE,mBAAgB,CACT,GAAc,EAAsB,KAAK,EAC7C,CAAC,EAAa,CAAC,CAElB,IAAM,OAA2B,CAC/B,GAAI,EAAc,CAChB,EAAgB,GAAM,CACtB,OAEF,IAAM,EAAO,EAAkB,SAAS,uBAAuB,CAC3D,GAAM,EAAsB,EAAK,CACrC,EAAgB,GAAK,EAGjB,GAAe,EAAmB,IAAsB,CAC5D,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACvB,EAAgB,GAAM,CACtB,GAAe,CAAE,EAAG,EAAM,QAAS,EAAG,EAAM,QAAS,QAAO,CAAC,EAEzD,GAAiB,GAA8C,CACnE,CAAE,KAAM,QAAS,MAAO,EAAU,KAAM,CACxC,CAAE,KAAM,OAAQ,GAAI,OAAQ,MAAO,EAAE,mCAAmC,CAAE,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,WAAc,KAAK,UAAU,WAAW,UAAU,KAAK,UAAU,EAAG,EAAU,MAAO,EAAU,OAAQ,CAAE,KAAM,EAAE,CAAC,CAAE,CACzN,CACK,GAAa,EAA+B,IAAsC,CACtF,CAAE,KAAM,QAAS,MAAO,GAAG,EAAU,KAAK,GAAG,EAAM,QAAS,CAC5D,CAAE,KAAM,OAAQ,GAAI,aAAc,MAAO,EAAE,2BAA2B,CAAE,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,WAAc,KAAK,UAAU,WAAW,UAAU,KAAK,UAAU,EAAM,MAAM,CAAC,CAAE,CACnL,CACK,qBAAgC,CACpC,IAAM,EAAO,EAAM,MAAM,CAAC,aAAa,CACvC,OAAO,EACJ,IAAK,IAAe,CACnB,GAAG,EACH,OAAQ,EAAU,OAAO,OAAQ,GAC/B,CAAC,GAAQ,EAAU,KAAK,aAAa,CAAC,SAAS,EAAK,EAAI,EAAM,MAAM,aAAa,CAAC,SAAS,EAAK,EAAI,EAAM,IAAI,aAAa,CAAC,SAAS,EAAK,CAC1I,CACH,EAAE,CACF,OAAQ,GAAc,CAAC,GAAQ,EAAU,KAAK,aAAa,CAAC,SAAS,EAAK,EAAI,EAAU,OAAO,OAAS,EAAE,EAC5G,CAAC,EAAY,EAAM,CAAC,CAGvB,OACE,UAAC,MAAD,CAAK,UAAU,8BAAf,EACE,SAAC,EAAD,CAAa,UAAU,cAAc,cAAgB,GAAU,EAAY,EAAO,CAChF,CAAE,KAAM,QAAS,MAAO,EAAM,CAC9B,CAAE,KAAM,OAAQ,GAAI,QAAS,MAAO,EAAE,+BAA+B,CAAE,MAAM,SAAC,GAAD,CAAO,KAAM,GAAM,EAAE,WAAc,KAAS,CAAE,SAAU,CAAC,EAAO,CAC7I,CAAE,KAAM,OAAQ,GAAI,OAAQ,MAAO,EAAE,gCAAgC,CAAE,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,WAAc,KAAK,UAAU,WAAW,UAAU,KAAK,UAAU,CAAE,OAAM,aAAY,CAAE,KAAM,EAAE,CAAC,CAAE,CACpM,CAAC,CACA,OACE,UAAC,OAAD,CAAM,UAAU,gCAAhB,EACE,SAAC,OAAD,CAAM,UAAU,gBAXP,EAAO,QAAU,SAAU,SAAC,GAAD,CAAW,KAAM,GAAM,EAAG,EAAO,QAAU,aAAc,SAAC,GAAD,CAAiB,KAAM,GAAM,GAAG,SAAC,GAAD,CAAK,KAAM,GAAM,EAWpG,GAC1C,SAAC,OAAD,CAAM,UAAU,6BACd,SAAC,EAAD,CAAM,GAAG,OAAO,QAAQ,QAAQ,UAAU,mBAAmB,MAAO,WAAO,EAAY,EAClF,EACF,GAET,KACE,UAAC,OAAD,CAAM,UAAU,2BAAhB,CACG,EAAO,OAAQ,SAAC,OAAD,CAAM,UAAU,QAAQ,MAAO,EAAO,eAAQ,EAAO,MAAa,EAAG,MACrF,SAAC,EAAD,CAAY,cAAa,GAAkB,MAAO,QAAS,EAAO,SAAU,CAAC,EAAO,MAAO,EAAE,wBAAwB,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,QAAQ,QAAQ,KAAK,UAAY,GACvL,SAAC,EAAD,CAAY,cAAa,GAAkB,WAAY,MAAO,EAAE,qBAAqB,CAAE,KAAM,GAAS,SAAC,EAAD,CAAO,KAAM,GAAM,GAAG,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,QAAQ,QAAQ,KAAK,UAAU,YAAe,CAAO,UAAU,WAAW,UAAU,KAAK,UAAU,CAAE,OAAM,aAAY,CAAE,KAAM,EAAE,CAAC,CAAE,EAAU,GAAK,CAAE,OAAO,eAAiB,EAAU,GAAM,CAAE,IAAK,EAAO,EACtV,GAET,GAEF,UAAC,EAAD,CAAS,UAAU,wBAAnB,EACE,SAAC,EAAD,CAAa,cAAY,cAAc,cAAa,GAAkB,OAAQ,MAAO,EAAO,SAAW,GAAU,EAAS,EAAM,OAAO,MAAM,CAAE,YAAe,EAAS,GAAG,CAAE,YAAa,EAAE,8BAA8B,CAAE,MAAO,EAAE,wBAAwB,CAAI,GAChQ,SAAC,EAAD,CAAY,IAAK,EAAmB,UAAW,EAAe,YAAc,OAAW,cAAY,gBAAgB,MAAO,EAAE,4BAA4B,CAAE,MAAM,SAAC,GAAD,CAAmB,KAAM,GAAM,EAAE,QAAQ,YAAY,KAAK,UAAU,QAAS,GAAsB,EAC3P,IAEV,UAAC,MAAD,CAAK,UAAU,cAAc,cAAY,uBAAzC,EACA,UAAC,MAAD,CAAK,UAAU,mBAAf,EACE,SAAC,MAAD,CAAK,UAAU,eACb,SAAC,EAAD,CAAM,GAAG,OAAO,QAAQ,UAAU,KAAK,iBAAS,EAAE,uBAAuB,CAAQ,EAC7E,EACL,EAAW,IAAK,IACf,UAAC,MAAD,CAAK,KAAK,SAAS,SAAU,EAAwB,UAAU,WAAW,cAAa,gBAAgB,EAAU,OAAQ,YAAe,CAAE,EAAc,GAAY,CAAE,IAAM,EAAO,IAAI,IAAI,EAAQ,CAA+B,OAA7B,EAAK,OAAO,EAAU,KAAK,CAAS,GAAQ,CAAE,EAAY,QAAQ,EAAU,OAAO,eAAe,CAAE,SAAU,SAAU,MAAO,QAAS,CAAC,EAAK,cAAgB,GAAU,EAAY,EAAO,GAAc,EAAU,CAAC,UAAzZ,EACE,SAAC,OAAD,CAAM,UAAU,cAAM,GAAc,EAAU,CAAQ,YAAC,OAAD,CAAM,UAAU,qBAAa,EAAU,KAAY,EACrG,EAF+B,EAAU,KAEzC,CACN,CACE,IAEN,SAAC,MAAD,CAAK,UAAU,mBACZ,GAAgB,SAAW,GAAI,SAAC,EAAD,CAAY,UAAU,WAAW,MAAO,EAAE,yBAAyB,CAAE,YAAa,EAAE,+BAA+B,CAAI,EAAG,GAAgB,IAAK,GAAc,CAC3L,IAAM,EAAc,EAAU,IAAI,EAAU,KAAK,EAAI,CAAC,EAEtD,OACE,SAAC,MAAD,CAAK,UAAW,OAFD,EAAU,WAAa,MAAQ,UAAY,EAAU,WAAa,aAAe,UAAY,aAEpD,IAAM,GAAY,CAAE,EAAY,QAAQ,EAAU,MAAQ,GAAY,cAAgB,GAAU,EAAY,EAAO,GAAc,EAAU,CAAC,WAClM,SAAC,EAAD,CACE,KAAM,CAAC,EACP,aAAe,GAAS,EAAc,GAAY,CAAE,IAAM,EAAO,IAAI,IAAI,EAAQ,CAAwE,OAAlE,EAAM,EAAK,OAAO,EAAU,KAAK,CAAO,EAAK,IAAI,EAAU,KAAK,CAAS,GAAQ,CACxK,aAAc,CAAE,cAAe,GAAkB,gBAAiB,CAClE,OAAO,UAAC,OAAD,CAAM,UAAU,qBAAhB,EAA4B,SAAC,OAAD,CAAM,UAAU,oBAAY,GAAc,EAAU,CAAQ,YAAC,OAAD,UAAO,EAAU,KAAY,EAAO,GACnI,UAAU,UAAC,OAAD,CAAM,UAAU,iBAAhB,EAAwB,SAAC,EAAD,CAAY,UAAU,OAAO,cAAa,GAAkB,cAAe,MAAO,EAAE,mCAAmC,CAAE,MAAM,SAAC,GAAD,CAAM,KAAM,GAAM,EAAE,QAAQ,QAAQ,KAAK,UAAU,QAAU,GAAU,CAAE,EAAM,iBAAiB,CAAO,UAAU,WAAW,UAAU,KAAK,UAAU,EAAW,KAAM,EAAE,CAAC,EAAO,YAAC,EAAD,CAAY,UAAU,YAAY,MAAO,EAAE,iBAAiB,CAAE,MAAM,SAAC,GAAD,CAAgB,KAAM,GAAM,EAAE,QAAQ,QAAQ,KAAK,UAAU,QAAU,GAAU,EAAY,EAAO,GAAc,EAAU,CAAC,CAAI,EAAO,aAE7hB,SAAC,MAAD,CAAK,UAAU,sBACd,EAAU,OAAO,SAAW,GAAI,SAAC,EAAD,CAAY,UAAU,WAAW,MAAO,EAAE,yBAAyB,CAAE,YAAa,EAAE,6BAA6B,CAAI,EAAG,EAAU,OAAO,IAAK,IAC3K,SAAC,MAAD,CAAK,UAAU,aAA6B,cAAa,cAAc,EAAU,KAAK,GAAG,EAAM,MAAO,cAAgB,GAAU,CAAE,EAAM,iBAAiB,CAAE,EAAY,EAAO,EAAU,EAAW,EAAM,CAAC,YACxM,SAAC,EAAD,CAAa,UAAU,QAAQ,OAAO,SAAC,OAAD,CAAM,MAAO,EAAM,aAAM,EAAM,MAAa,YAChF,SAAC,GAAD,CAA8B,QAAS,EAC3B,EACV,CAJ2B,EAAM,IAIjC,CACN,CACE,EACa,EACjB,CAlBkC,EAAU,KAkB5C,EAER,CACE,EACA,IACN,SAAC,EAAD,CACE,KAAM,GAAQ,GAAsB,GACpC,WAAY,EACZ,YAAe,EAAgB,GAAM,CACrC,oBAAqB,CAAC,EAAkB,CACxC,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,SAAC,MAAD,CAAK,UAAU,yBACb,SAAC,EAAD,CAAM,MAAO,EAAE,4BAA4B,CAAE,MAAO,CAClD,CAAE,KAAM,QAAS,MAAO,EAAE,4BAA4B,CAAE,CACxD,CAAE,GAAI,SAAU,MAAO,EAAE,sBAAsB,CAAE,YAAa,CAAE,cAAe,GAAkB,UAAW,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,aAAgB,CAAE,EAAa,IAAI,IAAM,CAAE,EAAgB,GAAM,EAAK,CACnN,CAAE,GAAI,WAAY,MAAO,EAAE,wBAAwB,CAAE,YAAa,CAAE,cAAe,GAAkB,YAAa,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,aAAgB,CAAE,EAAa,IAAI,IAAI,EAAW,IAAK,GAAc,EAAU,KAAK,CAAC,CAAC,CAAE,EAAgB,GAAM,EAAK,CACvQ,CAAI,EACD,EACO,EACd,GAAc,SAAC,GAAD,CAAsB,MAAO,EAAa,UAAa,GAAe,KAAK,CAAI,EAAG,KAC7F,GAIV,SAAgB,GAAe,EAAyC,CACtE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAM,OAAO,CAAE,CAAC,EAAM,OAAO,CAAC,CAChF,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAAW,gBAAgB,SAAW,KAChD,EAAS,GAAW,SAAS,OAC7B,EAAY,GAA4B,EAAM,OAAO,CACrD,CAAC,EAAY,kBAAmD,KAAK,CACrE,CAAC,EAAS,kBAAuB,GAAM,CACvC,CAAC,EAAS,kBAAsC,KAAK,CACrD,EAAe,GAAS,UAAY,GAAQ,SAC9C,GAAG,EAAQ,SAAS,GAAG,EAAO,SAAS,GAAG,EAAO,YAAc,KAC/D,MACJ,mBAAgB,CACd,GAAI,CAAC,EAAM,QAAU,CAAC,GAAa,CAAC,GAAS,UAAY,CAAC,GAAQ,SAAU,CAC1E,EAAW,GAAM,CACjB,OAEF,IAAM,EAAc,GAA2B,EAAS,GACtD,GAAS,gBAAgB,SAAS,WAAa,EAAQ,UACvD,GAAS,SAAS,QAAQ,WAAa,EAAO,UAC9C,GAAS,SAAS,QAAQ,aAAe,EAAO,WAAW,CACvD,CAAE,UAAW,EACf,EACJ,EAAW,GAAK,CAChB,EAAW,KAAK,CAChB,IAAM,EAAU,SAAY,CACtB,MAAO,QACX,IAAI,CACF,IAAM,EAAS,MAAM,EAAM,OAAQ,KAAuB,iBAAkB,CAAE,SAAU,EAAQ,SAAU,SAAU,EAAO,SAAU,iBAAkB,EAAO,WAAY,CAAE,CAAE,SAAQ,CAAC,CACvL,GAAI,EAAO,QAAS,OACpB,IAAM,EAAS,GAA8B,EAAO,CACpD,EAAe,GAAY,CACzB,IAAM,EAAO,CAAE,SAAU,EAAQ,SAAU,SAAU,EAAO,SAAU,WAAY,EAAO,WAAY,SAAQ,CAQ7G,OANE,GACA,EAAQ,WAAa,EAAK,UAC1B,EAAQ,WAAa,EAAK,UAC1B,EAAQ,aAAe,EAAK,YAC5B,GAAc,EAAQ,OAAQ,EAAK,OAAO,CACnC,EACF,GACP,CACF,EAAW,KAAK,CAChB,EAAW,GAAM,OACV,EAAO,CACd,GAAI,EAAO,QAAS,OACpB,EAAe,GACT,GAAW,KAAa,EACrB,KACP,CACF,EAAW,OAAO,EAAM,CAAC,CACzB,EAAW,GAAM,CAEd,EAAO,UAAS,EAAQ,WAAW,EAAS,IAAI,IAGvD,OADK,GAAS,KACD,CAAE,EAAY,SAAS,CAAE,aAAa,EAAM,GAExD,CAAC,EAAM,OAAQ,EAAW,EAAc,EAAQ,EAAU,CAAC,CAC9D,IAAM,EAAS,GAA2B,EAAY,EAAS,EAAO,CAChE,EAAe,EAAS,GAAY,QAAU,KAAO,KACrD,EAAe,EAAQ,GAAS,SAChC,EAAgB,EAChB,EAAQ,EAAM,QAAU,GAAU,GAAS,aAAiB,CAC3D,EAAM,OAAQ,KAAK,eAAgB,CAAE,SAAU,EAAQ,SAAU,SAAU,EAAO,SAAU,iBAAkB,EAAO,WAAY,CAAC,CAAC,MAAO,GAAmB,EAAW,OAAO,EAAM,CAAC,CAAC,EAC1L,OACE,EAAY,CAAC,GAAiB,CAAC,GAAiB,CAAC,EACjD,EAAkB,GAAgB,CAAC,GAAiB,EACpD,EAAmB,GAAgB,CAAC,GAAU,GAAW,EAAQ,EAEvE,OACE,SAAC,MAAD,CACE,UAAU,qBACV,cAAY,kBACZ,qBAAmB,OACnB,iBANiB,EAAS,GAAc,GAAM,GAAS,UAAY,GAAe,GAOlF,yBAAwB,GAAoB,EAAkB,OAAS,gBAEtE,GACC,SAAC,EAAD,CACE,UAAU,WACV,cAAY,aACZ,MAAO,EAAE,uBAAuB,CAChC,YAAa,GAAW,EAAE,6BAA6B,CACvD,MAAM,SAAC,GAAD,EAAiB,EACvB,EACA,GACF,SAAC,MAAD,CAAK,UAAU,6BAA6B,cAAY,yBACtD,SAAC,EAAD,CAAS,MAAO,EAAE,oBAAoB,CAAI,EACtC,EACJ,GACF,iCACE,SAAC,GAAD,CAAsC,OAAQ,EAAsB,QAAS,CAAzD,EAAc,GAA2C,CAC5E,GACC,SAAC,MAAD,CAAK,UAAU,6BAA6B,2BAC1C,SAAC,EAAD,CAAS,MAAO,EAAE,oBAAoB,CAAI,EACtC,EACJ,KACH,GACD,KACA,ECjYV,eAAsB,GAAoB,EAAyG,CACjJ,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,4CAA4C,CACzF,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,uBACpD,SAAC,GAAD,CAAgB,OAAQ,EAAM,OAAU,EACpB,EACvB,CACM,SAAY,EAAK,SAAS,CCVnC,IAAM,GAAO,EAAiB,CAAE,gnCAAI,suBAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCiCtB,SAAgB,GAA0B,EAA6C,CACrF,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,OAAO,KAClD,IAAM,EAAU,eAAgB,GAAU,EAAO,aAAe,OAAY,EAAO,WAAa,EAChG,OAAO,GAAW,OAAO,GAAY,UAAY,CAAC,MAAM,QAAQ,EAAQ,CAAG,EAAiC,KCnC9G,SAAgB,GAAc,EAAyC,CACrE,OAAO,SAAC,GAAD,CAAyB,GAAI,EAAS,EAG/C,SAAgB,GAAwB,CACtC,UAGC,CACD,GAAM,CAAE,GAAM,IAAgB,CAQ9B,OAPK,GAOE,SAAC,GAAD,CAAwB,SAAU,GALrC,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,sCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,uBAAuB,CAAE,YAAa,EAAE,iBAAiB,CAAI,EAC9E,EAMZ,SAAS,GAAe,CAAE,UAA2C,CACnE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAY,GAAW,SAAS,GAChC,CAAC,EAAY,kBAA0D,KAAK,CAC5E,CAAC,EAAQ,kBAAsB,GAAM,CAwC3C,OAtCA,mBAAgB,CACd,GAAI,CAAC,GAAS,MAAQ,CAAC,EAAW,CAChC,EAAc,KAAK,CACnB,EAAU,GAAM,CAChB,OAEF,IAAM,EAAa,IAAI,gBAevB,OAdK,EAAO,aAAa,EAAQ,KAAM,CACrC,YACA,MAAO,GACP,OAAQ,EAAW,OACpB,CAAC,CAAC,KAAM,GAAoB,CACvB,EAAW,OAAO,UACtB,EAAc,GAA0B,EAAO,CAAC,CAChD,EAAU,GAAM,GAChB,CAAC,UAAY,CACR,EAAW,OAAO,UACrB,EAAc,KAAK,CACnB,EAAU,GAAK,GAEjB,KACW,EAAW,OAAO,EAC9B,CAAC,EAAQ,GAAS,KAAM,EAAU,CAAC,CAEjC,EAOD,GAEA,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,sCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,uBAAuB,CAAE,YAAa,EAAE,yBAAyB,CAAI,EACtF,GAIR,UAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,4BAA4B,qBAAmB,gBAAlG,EACE,SAAC,EAAD,CAAa,OAAO,SAAC,OAAD,WAAM,SAAC,SAAD,UAAS,OAAO,EAAQ,MAAQ,EAAQ,KAAK,CAAU,EAAO,EAAI,GAC5F,SAAC,GAAD,CAAe,WAAY,GAAc,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAS,CAAE,cAAe,EAAE,iBAAiB,CAAI,EACnH,IAhBJ,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,sCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,iBAAiB,CAAE,YAAa,EAAE,uBAAuB,CAAI,EAC9E,ECnEZ,IAAM,GAAwB,IAAI,IAElC,SAAgB,GAAiB,EAAqD,CACpF,MAAO,GAAG,GAAQ,UAAY,GAAG,GAAG,GAAQ,YAAc,KAI5D,SAAgB,GAAqB,EAAiB,CACpD,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,OAAO,EAClD,IAAM,EAAO,CAAE,GAAG,EAAQ,CAC1B,GAAI,EAAK,MAAQ,OAAO,EAAK,MAAS,SAAU,CAC9C,IAAM,EAAO,CAAE,GAAG,EAAK,KAAM,CAC7B,OAAO,EAAK,OACZ,EAAK,KAAO,EAEd,OAAO,EAGT,SAAgB,GAA6B,EAAc,EAAyC,EAAW,WAAY,CACzH,IAAM,EAAc,GAAO,OAM3B,GALI,CAAC,GAAe,GAAO,kBACvB,OAAO,EAAY,SAAY,YACjC,EAAY,QAAQ,0DAA0D,EAG5E,GAAW,IAAgB,GAAW,EAAQ,WAAW,EAAY,GAAK,GAAM,MAAO,GAC3F,IAAM,EAAa,GAAS,eAAe,iBAAiB,SAAS,sBACrE,GAAI,IAAe,QAAa,IAAe,EAAU,MAAO,GAChE,GAAI,EAAM,OAAS,WAAa,EAAM,OAAS,QAAS,CACtD,IAAM,EAAS,GAAS,eAAe,cACvC,GAAI,CAAC,GAAY,CAAC,GAAW,IAAW,GAAW,EAAQ,WAAW,EAAO,GAAK,GAAQ,MAAO,GAEnG,MAAO,GAOT,eAAsB,GAA6B,EAA6C,EAAyB,CACvH,QAAQ,GACR,YAAY,IAC4C,EAAE,CAAE,CAC5D,IAAM,EAAM,GAAiB,EAAO,CACpC,GAAI,EAAU,IAAI,EAAI,CAAE,OAAO,EAAU,IAAI,EAAI,CACjD,IAAM,EAAU,MAAM,EAAI,UAAU,CAClC,SAAU,OAAO,EAAO,SAAS,CACjC,iBAAkB,EAAO,WACzB,QACD,CAAC,CAEF,OADK,EAAU,IAAI,EAAI,EAAE,EAAU,IAAI,EAAK,GAAS,QAAU,KAAK,CAC7D,EAAU,IAAI,EAAI,CAG3B,eAAsB,GAAqB,EAA8E,EAAyB,EAAe,CAC/J,QAAQ,IACc,EAAE,CAAE,CAC1B,IAAM,EAAW,OAAO,EAAO,SAAS,CAClC,EAAmB,EAAO,WAE1B,GAAU,MADM,EAAI,UAAU,CAAE,WAAU,mBAAkB,QAAO,CAAC,GACjD,QACnB,EAAgB,GAAkB,cAAc,CACtD,MAAM,EAAI,YAAY,CACpB,WACA,mBACA,QACA,YAAa,EACb,gBACD,CAAC,CACF,MAAM,EAAI,aAAa,CACrB,WACA,mBACA,QACA,gBACA,YAAa,GAAkB,YAAY,CAC3C,gBAAiB,EACjB,OAAQ,GAAqB,EAAK,CACnC,CAAC,CC/CJ,SAAgB,GAAqB,CACnC,SACA,eACA,QACA,0BAMC,CACD,GAAM,CAAE,KAAM,IAAgB,CAI9B,OAHK,GAIH,SAAC,GAAD,CACU,SACM,eACP,QACiB,yBACxB,GARK,SAAC,GAAD,CAAc,MAAO,EAAE,wBAAwB,CAAE,YAAa,EAAE,8BAA8B,CAAI,EAY7G,SAAS,GAAa,CAAE,QAAO,eAAuD,CACpF,OACE,SAAC,MAAD,CAAK,UAAU,yCAAyC,cAAY,mCAClE,SAAC,EAAD,CAAmB,QAAoB,cAAe,EAClD,EAIV,SAAS,GAAY,CACnB,SACA,eACA,QACA,0BAMC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BAAiC,EAAO,UAAW,EAAO,YAAa,EAAO,YAAY,CAC1F,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAU,GAA+B,EAAW,GAAS,KAAK,CAClE,eAA6C,KAAK,CAClD,eAA+C,KAAK,CACpD,CAAC,EAAS,mBAA8D,CACxE,CAAC,EAAa,kBAAoC,KAAK,CACvD,CAAC,EAAW,kBAAyB,GAAM,CAC3C,CAAC,EAAc,kBAA4B,GAAG,CAC9C,EAAW,GAAS,QAAQ,SAC5B,EAAmB,GAAS,QAAQ,WAyG1C,OAvGA,mBAAgB,CACd,IAAM,EAAY,EAAa,QACzB,EAAS,GAAS,OACxB,GAAI,CAAC,GAAa,CAAC,EAAQ,OAC3B,IAAI,EAAY,GACZ,EACA,EACE,EAAQ,GAA4B,CACxC,eACA,SACA,YACA,QACA,IAAK,EACL,eAAgB,GAAW,eAAe,QAAQ,SACnD,CAAC,CACF,GAAI,CAAC,EAAM,GAAI,CACb,EAAW,EAAM,MAAM,CACvB,EAAe,KAAK,CACpB,OAEF,EAAW,OAAU,CACrB,IAAM,EAAW,EAAU,cACrB,MAAmB,CACvB,IAAM,EAAS,GAAU,iBAAiB,SAAS,sBACnD,OAAO,IAAW,QAAa,IAAW,IAEtC,MAAoB,CACxB,IAAM,EAAS,EACf,EAAc,OACd,EAAc,QAAU,KACxB,IAAS,iBAAiB,EAEtB,MAAoB,CACxB,GAAI,GAAa,GAAe,CAAC,GAAY,CAAE,OAC/C,IAAM,EAAU,KAA0B,CACtC,OAAO,GAAY,aACvB,EAAa,EAAQ,CACnB,IAAK,EACL,SAAU,OAAO,EAAO,SAAS,CACjC,iBAAkB,EAAO,WACzB,MAAO,GACP,WACA,OAAQ,GAAU,aAAe,OACjC,cAAgB,GAAU,GAA6B,EAAO,EAAW,GAAU,CACpF,CAAC,CACF,EAAc,QAAU,EACxB,EAAc,EAAW,OAAO,EAAU,GAEvC,GAA6B,EAAQ,EAAO,CAAC,KAAM,GAAS,CAC1D,GAAW,EAAe,GAAQ,KAAK,EAC5C,CAAC,MAAO,GAAmB,CACtB,GAAW,EAAgB,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAAC,EACvF,CACF,GAAa,CACb,IAAM,EAAW,GAAY,OAAO,kBAAqB,WACrD,IAAI,qBAAuB,CACvB,GAAY,CAAE,GAAa,CAC1B,GAAa,EAClB,CACA,OAEJ,OADA,GAAU,QAAQ,EAAS,gBAAiB,CAAE,WAAY,GAAM,gBAAiB,CAAC,gCAAgC,CAAE,CAAC,KACxG,CACX,EAAY,GACZ,GAAU,YAAY,CACtB,GAAa,CACR,EAAM,WAAW,GAEvB,CACD,EACA,EACA,EACA,EACA,GAAS,OACT,GAAS,QAAQ,UACjB,GAAW,eAAe,QAAQ,SAClC,EACA,EACD,CAAC,CAeG,EAGA,GAAS,QASZ,UAAC,MAAD,CAAK,UAAU,6DAA6D,cAAY,kCAAxF,EACE,UAAC,MAAD,CAAK,UAAU,uCAAf,EACE,SAAC,EAAD,CACE,KAAK,UACL,QAAQ,YACR,cAAY,wBACZ,SAAU,GAAe,MAAQ,GAAa,EAAQ,EACtD,YAhCkB,CACxB,IAAM,EAAS,GAAS,OACpB,CAAC,GAAU,GAAe,MAAQ,IACtC,EAAa,GAAK,CAClB,EAAgB,GAAG,CACd,QAAQ,QAAQ,EAAc,SAAS,QAAQ,iBAAiB,CAAC,CACnE,SAAW,GAAqB,EAAQ,EAAQ,EAAY,CAAC,CAC7D,MAAO,GAAmB,CACzB,EAAgB,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAAC,EACvE,CACD,YAAc,EAAa,GAAM,CAAC,YAwB9B,EAAE,uBAAuB,CACnB,EACR,GACC,SAAC,IAAD,CAAG,UAAU,4BAA4B,KAAK,iBAAS,EAAiB,EACtE,KACA,IACN,SAAC,MAAD,CACE,IAAK,EACL,UAAU,2BACV,6BAA4B,EAAQ,OAAO,SAC3C,OAAQ,EAAQ,EAChB,EACD,GACC,SAAC,EAAD,CACE,MAAO,EAAE,8BAA8B,CACvC,YAAa,EAAQ,MAAQ,EAAQ,UAAY,EAAE,oCAAoC,CACvF,EACA,KACA,IAlCJ,SAAC,GAAD,CACE,MAAO,EAAE,8BAA8B,CACvC,YAAa,EAAE,oCAAoC,CACnD,GAPG,SAAC,GAAD,CAAc,MAAO,EAAE,wBAAwB,CAAE,YAAa,EAAE,mCAAmC,CAAI,EC/KlH,SAAS,GAAM,EAA8D,EAAmB,CAC9F,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,6CAA6C,CAC1F,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,sBACnD,EACmB,EACvB,CACM,SAAY,EAAK,SAAS,CAGnC,eAAsB,GAAmB,EAAmB,CAC1D,OAAO,IACL,SAAC,GAAD,CAAe,OAAQ,EAAM,OAAU,EACvC,EACD,CAGH,eAAsB,GAA6B,EAAmB,CACpE,OAAO,IACL,SAAC,GAAD,CAAyB,OAAQ,EAAM,OAAU,EACjD,EACD,CAGH,eAAsB,GAA0B,EAAmB,CACjE,OAAO,IACL,SAAC,GAAD,CACE,OAAQ,EAAM,OACd,aAAc,EAAM,aACpB,MAAO,EAAM,MACb,EACF,EACD,CCtCH,IAAM,GAAO,EAAiB,CAAE,sWAAI,oOAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCKtB,SAAgB,GAAiB,CAC/B,SACA,eACA,SAKC,CACD,GAAM,CAAE,KAAM,IAAgB,CAI9B,OAHK,GAGE,SAAC,EAAD,CAAqB,SAAsB,eAAqB,QAAS,GAFvE,SAAC,GAAD,CAAc,MAAO,EAAE,oBAAoB,CAAE,YAAa,EAAE,0BAA0B,CAAI,EAKrG,SAAS,GAAa,CAAE,QAAO,eAAuD,CACpF,OACE,SAAC,MAAD,CAAK,UAAU,yCAAyC,cAAY,+BAClE,SAAC,EAAD,CAAmB,QAAoB,cAAe,EAClD,EAIV,SAAS,EAAY,CACnB,SACA,eACA,SAKC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAU,GAA+B,EAAW,GAAS,KAAK,CAClE,eAA6C,KAAK,CAClD,CAAC,EAAS,mBAA8D,CAuC9E,OArCA,mBAAgB,CACd,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,GAAa,CAAC,GAAS,OAAQ,OACpC,IAAM,EAAQ,GAA4B,CACxC,eACA,OAAQ,EAAQ,OAChB,YACA,QACA,IAAK,EACL,eAAgB,GAAW,eAAe,QAAQ,SACnD,CAAC,CACF,GAAI,CAAC,EAAM,GAAI,CACb,EAAW,EAAM,MAAM,CACvB,OAGF,OADA,EAAW,OAAU,KACR,CAAO,EAAM,WAAW,GACpC,CACD,EACA,EACA,GAAS,OACT,GAAS,QAAQ,SACjB,GAAS,QAAQ,WACjB,GAAS,QAAQ,UACjB,GAAW,eAAe,QAAQ,SAClC,EACD,CAAC,CAEG,EACA,GAAS,QASZ,UAAC,MAAD,CAAK,UAAU,yCAAyC,cAAY,8BAApE,EACE,SAAC,MAAD,CACE,IAAK,EACL,UAAU,2BACV,6BAA4B,EAAQ,OAAO,SAC3C,OAAQ,EAAQ,EAChB,EACD,GACC,SAAC,EAAD,CACE,MAAO,EAAE,0BAA0B,CACnC,YAAa,EAAQ,MAAQ,EAAQ,UAAY,EAAE,gCAAgC,CACnF,EACA,KACA,IApBJ,SAAC,GAAD,CACE,MAAO,EAAE,0BAA0B,CACnC,YAAa,EAAE,gCAAgC,CAC/C,GANe,SAAC,GAAD,CAAc,MAAO,EAAE,oBAAoB,CAAE,YAAa,EAAE,aAAa,CAAI,EC7EpG,SAAgB,GAAoB,CAClC,UAGC,CACD,GAAM,CAAE,GAAM,IAAgB,CAQ9B,OAPK,GAOE,SAAC,GAAD,CAAwB,SAAU,GALrC,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,kCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,mBAAmB,CAAE,YAAa,EAAE,aAAa,CAAI,EACtE,EAMZ,SAAS,GAAe,CAAE,UAA2C,CACnE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAY,GAAW,SAAS,GAChC,EAAkB,GAA+B,EAAW,GAAS,KAAK,CAC1E,EAAgB,GAAiB,OACjC,EAAU,GAAiB,aAC3B,CAAC,EAAY,kBAA0D,KAAK,CAC5E,CAAC,EAAQ,kBAAsB,GAAM,CA0B3C,IAxBA,mBAAgB,CACd,GAAI,CAAC,GAAS,MAAQ,CAAC,GAAa,EAAS,CAC3C,EAAc,KAAK,CACnB,EAAU,GAAM,CAChB,OAEF,IAAM,EAAa,IAAI,gBAevB,OAdK,EAAO,aAAa,EAAQ,KAAM,CACrC,YACA,MAAO,GACP,OAAQ,EAAW,OACpB,CAAC,CAAC,KAAM,GAAoB,CACvB,EAAW,OAAO,UACtB,EAAc,GAA0B,EAAO,CAAC,CAChD,EAAU,GAAM,GAChB,CAAC,UAAY,CACR,EAAW,OAAO,UACrB,EAAc,KAAK,CACnB,EAAU,GAAK,GAEjB,KACW,EAAW,OAAO,EAC9B,CAAC,EAAQ,GAAS,KAAM,EAAW,GAAe,SAAU,GAAe,WAAY,EAAQ,EAAS,CAAC,CAExG,CAAC,EACH,OACE,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,kCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,aAAa,CAAE,YAAa,EAAE,mBAAmB,CAAI,EACtE,EAGV,GAAI,GAAU,CAAC,EACb,OACE,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,kCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,mBAAmB,CAAE,YAAa,EAAE,qBAAqB,CAAI,EAC9E,EAGV,IAAM,EAAY,EAAU,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAS,GAAG,EAAS,CAAG,EACjF,OACE,UAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,wBAAwB,qBAAmB,gBAA9F,EACE,SAAC,EAAD,CAAa,OAAO,SAAC,OAAD,WAAM,SAAC,SAAD,UAAS,OAAO,EAAQ,MAAQ,EAAQ,KAAK,CAAU,EAAO,EAAI,EAC3F,GAAS,cAAe,iCACvB,SAAC,EAAD,CAAa,MAAM,4BAAoB,EAAQ,YAAY,WAAyB,GACpF,SAAC,EAAD,CAAa,MAAM,yBAAe,SAAC,OAAD,CAAM,MAAO,CAAE,aAAc,WAAY,UAAG,EAAQ,YAAY,OAAc,EAAc,EAC7H,IACH,SAAC,GAAD,CAAe,WAAY,GAAa,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAS,CAAE,cAAe,EAAE,aAAa,CAAI,EAC9G,GC/EV,SAAS,GAAW,EAA8D,EAAmB,CACnG,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,yCAAyC,CACtF,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,sBACnD,EACmB,EACvB,CACM,SAAY,EAAK,SAAS,CAGnC,eAAsB,GAAsB,EAAmB,CAC7D,OAAO,IACL,SAAC,GAAD,CAAkB,OAAQ,EAAM,OAAQ,aAAc,EAAM,aAAc,MAAO,EAAM,MAAS,EAChG,EACD,CAGH,eAAsB,GAAyB,EAAmB,CAChE,OAAO,IACL,SAAC,GAAD,CAAqB,OAAQ,EAAM,OAAU,EAC7C,EACD,CC3BH,IAAM,GAAO,EAAiB,CAAE,uWAAI,2NAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCKtB,SAAgB,GAAoB,CAClC,SACA,eACA,SAKC,CACD,GAAM,CAAE,KAAM,IAAgB,CAI9B,OAHK,GAGE,SAAC,GAAD,CAAqB,SAAsB,eAAqB,QAAS,GAFvE,SAAC,GAAD,CAAc,MAAO,EAAE,uBAAuB,CAAE,YAAa,EAAE,6BAA6B,CAAI,EAK3G,SAAS,GAAa,CAAE,QAAO,eAAuD,CACpF,OACE,SAAC,MAAD,CAAK,UAAU,yCAAyC,cAAY,kCAClE,SAAC,EAAD,CAAmB,QAAoB,cAAe,EAClD,EAIV,SAAS,GAAY,CACnB,SACA,eACA,SAKC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAU,GAA+B,EAAW,GAAS,KAAK,CAClE,eAA6C,KAAK,CAClD,CAAC,EAAS,mBAA8D,CAuC9E,OArCA,mBAAgB,CACd,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,GAAa,CAAC,GAAS,OAAQ,OACpC,IAAM,EAAQ,GAA4B,CACxC,eACA,OAAQ,EAAQ,OAChB,YACA,QACA,IAAK,EACL,eAAgB,GAAW,eAAe,QAAQ,SACnD,CAAC,CACF,GAAI,CAAC,EAAM,GAAI,CACb,EAAW,EAAM,MAAM,CACvB,OAGF,OADA,EAAW,OAAU,KACR,CAAO,EAAM,WAAW,GACpC,CACD,EACA,EACA,GAAS,OACT,GAAS,QAAQ,SACjB,GAAS,QAAQ,WACjB,GAAS,QAAQ,UACjB,GAAW,eAAe,QAAQ,SAClC,EACD,CAAC,CAEG,EACA,GAAS,QASZ,UAAC,MAAD,CAAK,UAAU,yCAAyC,cAAY,iCAApE,EACE,SAAC,MAAD,CACE,IAAK,EACL,UAAU,2BACV,6BAA4B,EAAQ,OAAO,SAC3C,OAAQ,EAAQ,EAChB,EACD,GACC,SAAC,EAAD,CACE,MAAO,EAAE,6BAA6B,CACtC,YAAa,EAAQ,MAAQ,EAAQ,UAAY,EAAE,mCAAmC,CACtF,EACA,KACA,IApBJ,SAAC,GAAD,CACE,MAAO,EAAE,6BAA6B,CACtC,YAAa,EAAE,mCAAmC,CAClD,GANe,SAAC,GAAD,CAAc,MAAO,EAAE,uBAAuB,CAAE,YAAa,EAAE,gBAAgB,CAAI,EC7E1G,SAAgB,GAAuB,CACrC,UAGC,CACD,GAAM,CAAE,GAAM,IAAgB,CAQ9B,OAPK,GAOE,SAAC,GAAD,CAAwB,SAAU,GALrC,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,qCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,sBAAsB,CAAE,YAAa,EAAE,gBAAgB,CAAI,EAC5E,EAMZ,SAAS,GAAe,CAAE,UAA2C,CACnE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAA+B,EAAW,GAAe,CACnE,EAAY,GAAW,SAAS,GAChC,CAAC,EAAY,kBAA0D,KAAK,CAC5E,CAAC,EAAQ,kBAAsB,GAAM,CAwC3C,OAtCA,mBAAgB,CACd,GAAI,CAAC,GAAS,MAAQ,CAAC,EAAW,CAChC,EAAc,KAAK,CACnB,EAAU,GAAM,CAChB,OAEF,IAAM,EAAa,IAAI,gBAevB,OAdK,EAAO,aAAa,EAAQ,KAAM,CACrC,YACA,MAAO,GACP,OAAQ,EAAW,OACpB,CAAC,CAAC,KAAM,GAAoB,CACvB,EAAW,OAAO,UACtB,EAAc,GAA0B,EAAO,CAAC,CAChD,EAAU,GAAM,GAChB,CAAC,UAAY,CACR,EAAW,OAAO,UACrB,EAAc,KAAK,CACnB,EAAU,GAAK,GAEjB,KACW,EAAW,OAAO,EAC9B,CAAC,EAAQ,GAAS,KAAM,EAAU,CAAC,CAEjC,EAOD,GAEA,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,qCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,sBAAsB,CAAE,YAAa,EAAE,wBAAwB,CAAI,EACpF,GAIR,UAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,2BAA2B,qBAAmB,gBAAjG,EACE,SAAC,EAAD,CAAa,OAAO,SAAC,OAAD,WAAM,SAAC,SAAD,UAAS,OAAO,EAAQ,MAAQ,EAAQ,KAAK,CAAU,EAAO,EAAI,GAC5F,SAAC,GAAD,CAAe,WAAY,GAAc,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAS,CAAE,cAAe,EAAE,gBAAgB,CAAI,EAClH,IAhBJ,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,qCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,gBAAgB,CAAE,YAAa,EAAE,sBAAsB,CAAI,EAC5E,ECzDZ,SAAS,GAAW,EAA8D,EAAmB,CACnG,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,4CAA4C,CACzF,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,sBACnD,EACmB,EACvB,CACM,SAAY,EAAK,SAAS,CAGnC,eAAsB,GAAyB,EAAmB,CAChE,OAAO,IACL,SAAC,GAAD,CAAqB,OAAQ,EAAM,OAAQ,aAAc,EAAM,aAAc,MAAO,EAAM,MAAS,EACnG,EACD,CAGH,eAAsB,GAA4B,EAAmB,CACnE,OAAO,IACL,SAAC,GAAD,CAAwB,OAAQ,EAAM,OAAU,EAChD,EACD,CC3BH,IAAM,GAAO,EAAiB,CAAE,2KAAI,kHAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCDtB,SAAgB,GAAqB,CACnC,UAGC,CACD,GAAM,CAAE,GAAM,IAAgB,CAQ9B,OAPK,GAOE,SAAC,EAAD,CAAwB,SAAU,GALrC,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,mCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,oBAAoB,CAAE,YAAa,EAAE,cAAc,CAAI,EACxE,EAMZ,SAAS,EAAe,CAAE,UAA2C,CACnE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAU,GAAW,aAAa,MAClC,EAAY,GAAW,SAAS,GAChC,CAAC,EAAY,kBAA0D,KAAK,CAC5E,CAAC,EAAQ,kBAAsB,GAAM,CA0B3C,IAxBA,mBAAgB,CACd,GAAI,CAAC,GAAS,MAAQ,CAAC,EAAW,CAChC,EAAc,KAAK,CACnB,EAAU,GAAM,CAChB,OAEF,IAAM,EAAa,IAAI,gBAevB,OAdK,EAAO,aAAa,EAAQ,KAAM,CACrC,YACA,MAAO,GACP,OAAQ,EAAW,OACpB,CAAC,CAAC,KAAM,GAAoB,CACvB,EAAW,OAAO,UACtB,EAAc,GAA0B,EAAO,CAAC,CAChD,EAAU,GAAM,GAChB,CAAC,UAAY,CACR,EAAW,OAAO,UACrB,EAAc,KAAK,CACnB,EAAU,GAAK,GAEjB,KACW,EAAW,OAAO,EAC9B,CAAC,EAAQ,GAAS,KAAM,EAAU,CAAC,CAElC,CAAC,EACH,OACE,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,mCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,cAAc,CAAE,YAAa,EAAE,oBAAoB,CAAI,EACxE,EAGV,GAAI,EACF,OACE,SAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,mCACjD,SAAC,EAAD,CAAY,MAAO,EAAE,oBAAoB,CAAE,YAAa,EAAE,sBAAsB,CAAI,EAChF,EAGV,IAAM,EAAmB,GAAc,CAAE,KAAM,EAAQ,KAAM,MAAO,EAAS,CAC7E,OACE,UAAC,MAAD,CAAK,UAAU,wBAAwB,cAAY,yBAAyB,qBAAmB,gBAA/F,EACE,SAAC,EAAD,CAAa,OAAO,SAAC,OAAD,WAAM,SAAC,SAAD,UAAS,OAAO,EAAQ,MAAQ,EAAQ,KAAK,CAAU,EAAO,EAAI,GAC5F,SAAC,GAAD,CAAe,WAAY,EAAkB,cAAe,EAAE,cAAc,CAAI,EAC5E,GCvEV,eAAsB,GAA0B,EAAmB,CACjE,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,0CAA0C,CACvF,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,uBACpD,SAAC,GAAD,CAAsB,OAAQ,EAAM,OAAU,EAC1B,EACvB,CACM,SAAY,EAAK,SAAS,CCZnC,IAAM,GAAO,EAAiB,CAAE,4kDAAI,8wCAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCVtB,IAAa,GAA4B,4BAE5B,GAAkB,OAAO,OAAO,CAC3C,OAAQ,iBACR,QAAS,kBACT,OAAQ,iBACT,CAAC,CAEkC,OAAO,OAAO,CAChD,IAAK,GACL,KAAM,SACN,SAAU,CAAC,UAAU,CACrB,WAAY,CACV,QAAS,CACP,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,WAAY,QAAS,UAAW,QAAQ,CACnD,WAAY,CACV,SAAU,CAAE,KAAM,SAAU,CAC5B,MAAO,CAAE,KAAM,SAAU,CACzB,QAAS,CAAE,KAAM,SAAU,CAC3B,MAAO,CAAE,KAAM,CAAC,SAAU,WAAY,QAAQ,CAAE,CACjD,CACF,CACF,CACF,CACF,CAAC,CCnBF,IAAa,GAAc,OAAO,OAAO,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,MAAM,CAAC,CAEhG,SAAS,GAAW,EAA6C,CAC/D,GAAM,CAAE,WAAU,OAAM,WAAU,SAAQ,UAAU,EAAE,CAAE,OAAQ,EAC1D,EAAY,IAAI,KAAK,GAAQ,SAAW,EAAE,EAAE,IAAI,GAAS,CAAC,EAAM,SAAW,EAAM,GAAI,EAAM,CAAC,CAAC,CAE7F,EAAU,EACV,EAAW,IAAI,IACrB,IAAK,IAAM,KAAS,EAAS,CAC3B,IAAM,EAAK,EAAM,SAAW,EAAM,GAClC,EAAS,IAAI,EAAI,CAAE,GAAG,EAAS,IAAI,EAAG,CAAE,GAAG,EAAO,CAAC,CAErD,IAAM,EAAU,IAAI,IACpB,IAAK,IAAM,KAAS,EAAS,QAAQ,CAAE,CACrC,IAAM,EAAU,EAAM,SAAW,EAAM,GACvC,GAAI,CAAC,EAAS,SACd,IAAM,EAAS,EAAM,QAAU,EAAM,MAAQ,GACvC,EAAW,EAAU,IAAI,EAAQ,CACjC,EAAQ,GAAU,OAAS,EAAM,MACjC,GAAc,GAAK,YAAc,EAAE,EAAE,QAAQ,CAAE,WAAY,IAC/D,IAAY,YAAY,EAAM,SAAS,GAAG,EAAM,cAChD,IAAY,EAAM,SAAY,EAAM,UAAY,QAAa,OAAO,EAAM,QAAQ,GAAK,OAAO,EAAM,QAAQ,EAC5G,CACI,EAAO,IAAI,KACb,IAAS,WAAa,IAAS,aAAY,EAAK,IAAI,EAAK,CAE7D,IAAM,EAAW,GAAU,kBAAoB,EAAM,kBAAoB,EAAE,EACvE,IAAS,QAAU,IAAS,UAC3B,IAAU,UAAY,EAAS,KAAK,GAAW,IAAY,SAAW,IAAY,WAAW,GAAG,EAAK,IAAI,OAAO,CACjH,EAAM,WAAW,EAAK,IAAI,QAAQ,CAClC,EAAW,QAAQ,EAAK,IAAI,MAAM,CACtC,IAAM,EAAW,EAAW,KAAK,CAAE,gBAAiB,GAAY,MAAQ,GAAY,IAAI,MAAM,IAAI,CAAC,CAChG,OAAQ,GAA2B,MAAM,QAAQ,EAAK,EAAI,EAAK,OAAS,EAAE,CAAC,IAAI,GAAQ,EAAK,KAAK,IAAI,CAAC,EACrG,EAAS,QAAU,EAAM,kBAAiB,EAAK,IAAI,MAAM,CAC7D,EAAQ,IAAI,EAAS,CACnB,WAAU,UAAS,SACnB,MAAO,GAAU,IAAW,UAAY,EAAS,EAAM,SAAW,EAAM,WAAa,GAAI,OACzF,GAAI,EAAM,UAAY,CAAE,UAAW,EAAM,UAAW,CAAG,EAAE,CACzD,GAAI,EAAM,QAAU,CAAE,QAAS,EAAM,QAAS,CAAG,EAAE,CACnD,QACA,QAAS,EAAM,SAAW,EAAM,UAAY,GAAU,MAAM,QAAU,EAAU,KAAM,aAAe,GACrG,MAAO,GAAU,YAAc,EAAM,aAAe,EAAM,UAAY,EAAM,eAAiB,WAAa,WAAa,WACvH,KAAM,CAAC,GAAG,EAAK,CACf,WAAY,EAAW,IAAI,GAAa,EAAU,YAAY,IAAM,UAAU,CAC9E,WACD,CAAC,CAEJ,MAAO,CAAC,GAAG,EAAQ,QAAQ,CAAC,CAI9B,SAAgB,GAAgB,EAA4C,CAC1E,IAAM,EAAU,OAAO,GAAQ,SAAY,WAAa,EAAO,QAAU,GAAQ,eAC7E,YAAO,GAAQ,SAAY,YAAc,OAAO,GAAY,YAChE,MAAO,CAAE,QAAS,EAAO,QAAQ,KAAK,EAAO,CAAqC,QAAS,EAAQ,KAAK,EAAO,CAAoF,CAIrM,eAAsB,GAAmB,CAAE,SAAQ,eAAc,gBAAwC,EAAE,CAAE,CAC3G,IAAM,EAAkC,EAAE,CACpC,EAAkD,EAAE,CACpD,EAA0C,EAAe,CAC7D,SAAU,EAAe,iBAAiB,IAAiB,gBAC3D,KAAM,WAAY,SAAU,EAAa,QAAS,OAAQ,EAAa,OACvE,SAAU,EAAa,YAAc,EAAE,EAAE,IAAI,IAAS,CACpD,QAAS,SAAS,EAAK,MACvB,GAAI,EAAK,KAAO,KAAO,EAAE,CAAG,CAAE,QAAS,OAAO,EAAK,IAAI,CAAE,CACzD,OAAQ,EAAK,KACb,WAAY,EAAK,MACjB,GAAI,EAAK,QAAQ,KAAO,CAAE,UAAW,EAAK,OAAO,KAAM,CAAG,EAAE,CAC5D,GAAI,EAAK,QAAQ,QAAU,CAAE,QAAS,EAAK,OAAO,QAAS,CAAG,EAAE,CAChE,gBAAiB,EAAK,gBACvB,EAAE,CAAE,MAAO,GACb,CAAG,OACE,EAAY,GAAgB,EAAO,CACzC,GAAI,CAAC,EAAW,EAAO,KAAK,CAAE,SAAU,eAAgB,QAAS,+EAAgF,CAAC,MAEhJ,GAAI,CACF,IAAM,EAAS,MAAM,EAAU,SAAS,CAClC,EAAgB,EAAO,QAAQ,cAAgB,EACjD,GAAS,IAAe,EAAM,SAAW,iBAAiB,KAC9D,IAAM,GAAU,EAAO,SAAW,EAAE,EAAE,OAAO,GAAU,CAAC,GAAS,CAAC,GAC/D,EAAO,WAAa,EAAM,UAAY,EAAO,YAAY,eAAiB,EAAe,CACtF,EAAU,MAAM,QAAQ,WAAW,EAAO,IAAI,GAAU,EAAU,QAAQ,CAC9E,SAAU,EAAO,SAAU,WAAY,EAAO,WAC/C,CAAC,CAAC,CAAC,CACE,EAAQ,EAAQ,SAAS,EAAQ,IACrC,EAAO,SAAW,YAAc,GAA0B,EAAO,OAAO,CAAC,OAAS,kCAAoC,CAAC,EAAM,CAAG,EAAE,CAAC,CACrI,GAAI,EAAM,OACR,GAAI,CACF,IAAM,EAAY,MAAM,EAAU,SAAS,CACrC,EAAU,IAAI,KAAK,EAAU,SAAW,EAAE,EAAE,IAAI,GAAU,CAAC,EAAO,SAAU,EAAO,CAAC,CAAC,CAC3F,MAAM,QAAQ,IAAI,EAAM,IAAI,KAAM,IAAS,CACzC,GAAI,CACF,IAAM,EAAS,EAAQ,IAAI,EAAO,GAAO,SAAS,CAClD,GAAI,CAAC,EAAQ,MAAU,MAAM,iDAAiD,CAC9E,EAAO,GAAS,EAChB,EAAQ,GAAS,CAAE,OAAQ,YAAa,MAAO,MAAM,EAAU,QAAQ,CACrE,SAAU,EAAO,SAAU,WAAY,EAAO,WAC/C,CAAC,CAAE,OACG,EAAQ,CAAE,EAAQ,GAAS,CAAE,OAAQ,WAAY,SAAQ,GAClE,CAAC,OACI,EAAQ,CACf,IAAK,IAAM,KAAS,EAAO,EAAQ,GAAS,CAAE,OAAQ,WAAY,SAAQ,CAG9E,EAAQ,SAAS,EAAQ,IAAU,CACjC,IAAM,EAAS,EAAO,GAClB,EAAO,SAAW,YAAa,EAAQ,KAAK,CAAE,GAAG,EAAQ,GAAG,EAAO,MAAO,CAAC,EAE7E,EAAQ,KAAK,CAAE,GAAG,EAAQ,YAAa,GAAM,CAAC,CAC9C,EAAO,KAAK,CAAE,SAAU,EAAO,SAAU,QAAS,OAAO,GAA0B,EAAO,OAAO,CAAC,SAAY,SAAW,OAAO,GAA0B,EAAO,OAAO,CAAC,QAAQ,CAAG,OAAO,EAAO,OAAO,CAAE,CAAC,GAE9M,OACK,EAAO,CACd,EAAO,KAAK,CAAE,SAAU,eAAgB,QAAS,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAAE,CAAC,CAK9G,OAFI,GAAO,EAAQ,KAAK,EAAM,CAC9B,EAAQ,MAAM,EAAG,KAAO,EAAE,OAAS,UAAY,EAAI,IAAM,EAAE,OAAS,UAAY,EAAI,IAAM,EAAE,SAAS,cAAc,EAAE,SAAS,CAAC,CACxH,CAAE,UAAS,QAAS,EAAQ,QAAQ,GAAW,CAAE,SAAQ,CAclE,SAAgB,GAAoB,EAAiC,CAAE,QAAQ,GAAI,WAAW,GAAI,OAAO,EAAE,EAAsE,EAAE,CAAE,CACnL,IAAM,EAAS,EAAM,MAAM,CAAC,aAAa,CACzC,OAAO,EAAQ,OAAO,IAAU,CAAC,GAAY,EAAM,WAAa,IAC9D,EAAK,MAAM,GAAO,EAAM,KAAK,SAAS,EAAI,CAAC,EAC3C,CAAC,EAAM,QAAS,EAAM,OAAQ,EAAM,UAAW,EAAM,QAAS,EAAM,SAAU,EAAM,KAAM,EAAM,MAAO,EAAM,MAC3G,GAAG,EAAM,KAAM,GAAG,EAAM,WAAY,GAAG,EAAM,SAAS,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,EAAO,CAAC,CC7ItG,SAAgB,GAAc,CAAE,UAAS,WAAU,OAAM,SAAQ,QAAO,WAAU,QAAO,WAStF,CACD,GAAM,CAAE,KAAM,IAAgB,CAC9B,OAAO,UAAC,MAAD,CAAK,UAAU,8BAAf,EACL,UAAC,MAAD,CAAK,UAAU,wBAAwB,KAAK,QAAQ,aAAY,EAAE,gBAAgB,UAAlF,EACE,SAAC,EAAD,CAAM,QAAQ,UAAU,UAAU,mCAA2B,EAAE,gBAAgB,CAAQ,GACvF,UAAC,EAAD,CAAQ,KAAK,UAAU,QAAQ,QAAQ,UAAU,mBAAmB,eAAc,CAAC,EACjF,mBAAiB,MAAM,YAAe,EAAS,GAAG,UADpD,CACuD,EAAE,mBAAmB,CAAC,KAAC,SAAC,OAAD,UAAO,EAAa,EAAS,GAC1G,EAAQ,IAAI,IAAU,UAAC,EAAD,CAA8B,KAAK,UAAU,QAAQ,QAC1E,UAAU,mBAAmB,eAAc,IAAa,EAAO,SAAU,MAAO,EAAO,SACvF,mBAAkB,EAAO,SAAU,YAAe,EAAS,EAAO,SAAS,UAFtD,CAGpB,EAAO,MAAQ,EAAE,uBAAuB,CAAG,EAAO,UACnD,UAAC,OAAD,WAAO,EAAO,QAAQ,EAAO,aAAe,EAAG,EAAO,YAAc,KAAO,GAAU,GAC9E,EAL2B,EAAO,SAKlC,CAAC,CACN,IACN,UAAC,MAAD,CAAK,UAAU,wBAAwB,KAAK,QAAQ,aAAY,EAAE,eAAe,UAAjF,EACE,SAAC,EAAD,CAAM,QAAQ,UAAU,UAAU,mCAA2B,EAAE,eAAe,CAAQ,EACrF,GAAY,IAAK,IAAgB,UAAC,EAAD,CAAkB,KAAK,UAAU,QAAQ,QACzE,UAAU,mBAAmB,eAAc,EAAK,SAAS,EAAI,CAAE,MAAO,EAAE,mBAAmB,IAAM,CACjG,kBAAiB,EAAK,YAAe,EAAM,EAAI,UAFf,CAEkB,EAAE,eAAe,IAAM,CAAC,KAAC,SAAC,OAAD,UAAO,EAAO,IAAQ,EAAS,EAAS,EAFtE,EAEsE,CAAC,EACtH,SAAC,EAAD,CAAQ,KAAK,UAAU,QAAQ,QAAQ,cAAY,gBAAgB,QAAS,WAAU,EAAE,gBAAgB,CAAU,EAC9G,IACN,SAAC,EAAD,CAAM,QAAQ,UAAU,UAAU,kCAA0B,EAAE,qBAAqB,CAAQ,EACvF,GChBR,SAAS,GAAW,EAAoB,CACtC,OAAO,EAAM,MAAQ,UAGvB,SAAS,GAAU,EAA2B,CAI5C,OAHI,IAAU,SAAiB,UAC3B,IAAU,UAAY,IAAU,QAAgB,QAChD,IAAU,WAAa,IAAU,WAAa,IAAU,YAAoB,UACzE,OAGT,SAAgB,GAAa,EAA6E,CACxG,GAAM,CAAE,GAAM,IAAgB,CACxB,EAAY,EAAM,QAAU,EAAM,gBAClC,CAAC,EAAS,kBAAsC,EAAE,CAAC,CACnD,CAAC,EAAS,kBAAuC,EAAE,CAAC,CACpD,CAAC,EAAQ,kBAA+D,EAAE,CAAC,CAC3E,CAAC,EAAU,kBAAwB,GAAG,CACtC,CAAC,EAAM,kBAA8B,EAAE,CAAC,CACxC,CAAC,EAAO,kBAAqB,GAAG,CAChC,CAAC,EAAO,kBAAoC,KAAK,CACjD,CAAC,EAAS,kBAAuB,GAAM,CACvC,CAAC,EAAiB,mBAA8C,KAAK,CAErE,eAAiB,EAAE,CACnB,qBAAsB,SAAY,CACtC,IAAM,EAAW,EAAE,EAAQ,QAC3B,EAAW,GAAK,CAChB,EAAS,KAAK,CACd,GAAI,CACF,IAAM,EAAW,MAAM,GAAmB,CAAE,OAAQ,EAAW,aAAc,EAAM,aAAc,aAAc,EAAM,aAAc,CAAC,CACpI,GAAI,IAAa,EAAQ,QAAS,OAClC,EAAY,GAAY,GAAc,EAAS,EAAS,QAAQ,CAAG,EAAU,EAAS,QAAQ,CAC9F,EAAY,GAAY,GAAc,EAAS,EAAS,QAAQ,CAAG,EAAU,EAAS,QAAQ,CAC9F,EAAW,GAAY,GAAc,EAAS,EAAS,OAAO,CAAG,EAAU,EAAS,OAAO,OACpF,EAAO,CACd,GAAI,IAAa,EAAQ,QAAS,OAClC,EAAW,EAAE,CAAC,CACd,EAAW,EAAE,CAAC,CACd,EAAU,EAAE,CAAC,CACb,EAAS,aAAiB,MAAQ,EAAM,QAAU,EAAE,yBAAyB,CAAC,QACtE,CACJ,IAAa,EAAQ,SAAS,EAAW,GAAM,GAEpD,CAAC,EAAW,EAAM,aAAc,EAAM,aAAc,EAAE,CAAC,EAE1D,oBACO,IAAS,KACD,CAAE,EAAQ,SAAW,IACjC,CAAC,GAAQ,CAAC,CAEb,IAAM,EAA0B,GAAoB,EAAS,CAAE,QAAO,WAAU,OAAM,CAAC,CACjF,GAA4B,GAAoB,EAAS,CAAE,QAAO,WAAU,CAAC,CAC7E,EAAiC,OAAO,YAAY,GAAY,IAAK,GAAgB,CAAC,EAAK,GAAW,OAAO,GAAS,EAAM,KAAK,SAAS,EAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAC/J,IAAK,IAAM,KAAU,EAAS,EAAO,QAAQ,EAAO,YAAc,EAAQ,OAAO,GAAS,EAAM,WAAa,EAAO,SAAS,CAAC,OAC9H,IAAM,OAAc,CAAE,EAAS,GAAG,CAAE,EAAY,GAAG,CAAE,EAAQ,EAAE,CAAC,EAE1D,GAAuB,EAAQ,QAAU,GAAW,EAAO,OAAS,UAAY,OAChF,EAAY,EACd,EAAE,yBAAyB,CAC3B,EACE,EAAE,kBAAkB,CACpB,EAAO,OAAS,EAAE,kBAAkB,CAAG,EAAE,mBAAmB,CAElE,OACE,UAAC,EAAD,CAAS,UAAU,mBAAmB,KAAK,UAAU,cAAY,yBAAjE,EACE,SAAC,EAAD,CACE,UAAU,oBACV,OAAO,SAAC,EAAD,CAAM,GAAG,KAAK,QAAQ,mBAAW,EAAE,gBAAgB,CAAQ,EAClE,QACE,SAAC,EAAD,CAAS,UAAU,qBAAqB,aAAY,EAAE,kBAAkB,WACtE,SAAC,EAAD,CACE,cAAa,GAAgB,OAC7B,MAAO,EAAE,sBAAsB,CAC/B,MAAO,EACP,SAAW,GAAU,EAAS,EAAM,OAAO,MAAM,CACjD,YAAe,EAAS,GAAG,CAC3B,YAAa,EAAE,4BAA4B,CAC3C,EACM,EAEZ,KACE,SAAC,EAAD,CACE,cAAa,GAAgB,QAC7B,MAAO,EAAE,kBAAkB,CAC3B,MAAM,SAAC,GAAD,CAAW,UAAU,UAAY,EACvC,QAAQ,QACR,KAAK,UACL,SAAU,EACV,YAAe,KAAK,IAAS,CAC7B,EAEJ,GACF,SAAC,GAAD,CAAwB,UAAmB,WAAgB,OAAc,SAAQ,MAAO,EAAQ,OAC9F,SAAU,EAAa,MAAO,GAAO,EAAQ,GAAW,EAAQ,SAAS,EAAI,CAAG,EAAQ,OAAO,GAAS,IAAU,EAAI,CAAG,CAAC,GAAG,EAAS,EAAI,CAAC,CAC3I,QAAS,GAAS,GACpB,UAAC,MAAD,CAAK,UAAU,8BAAf,EACE,UAAC,EAAD,CAAM,GAAG,OAAO,QAAQ,mBAAxB,EACE,SAAC,GAAD,CAAa,UAAU,UAAY,MAAE,EAAE,sBAAuB,CAAE,MAAO,EAAS,OAAQ,MAAO,EAAQ,OAAQ,CAAC,CAC3G,IACP,SAAC,EAAD,CAAQ,KAAM,YAAW,EAAmB,EACxC,GACL,EAAO,OAAS,GAAI,SAAC,MAAD,CAAK,UAAU,oBAAoB,KAAK,SAAS,cAAY,2BAC/E,EAAO,IAAI,IAAS,UAAC,IAAD,WAAyB,EAAM,SAAS,KAAG,EAAM,QAAY,EAArD,EAAM,SAA+C,CAAC,CAC/E,EAAG,MACT,UAAC,MAAD,CAAK,UAAU,2BAAf,CACG,CAAC,GAAS,EAAQ,OAAO,GAAU,EAAS,KAAK,GAAS,EAAM,WAAa,EAAO,SAAS,CAAC,CAAC,IAAI,IAAU,UAAC,UAAD,CACtF,UAAU,mBAAmB,aAAY,EAAO,kBADsC,EAE5G,UAAC,MAAD,CAAK,UAAU,mCAAf,EAAyC,SAAC,EAAD,CAAM,QAAQ,mBAAW,EAAO,SAAgB,GACvF,SAAC,EAAD,CAAM,QAAQ,mBAAW,EAAS,OAAO,GAAS,EAAM,WAAa,EAAO,SAAS,CAAC,OAAc,EAAM,GAC3G,EAAS,OAAO,GAAS,EAAM,WAAa,EAAO,SAAS,CAAC,IAAK,GAAU,CAC7E,IAAM,EAAU,GAAG,EAAM,SAAS,GAAG,EAAM,UACrC,EAAW,EAAM,SACjB,EAAQ,EAAM,OAAS,EAAE,kBAAkB,CAC3C,EAAU,EAAM,SAAW,IAC3B,EAAW,IAAoB,EAC/B,EAAO,GAAW,EAAM,CAC9B,OACE,UAAC,SAAD,CACE,KAAK,SAEL,cAAa,GAAgB,OAC7B,UAAW,gBAAgB,EAAW,YAAc,KACpD,mBAAkB,EAClB,mBAAkB,EAAM,KAAK,KAAK,IAAI,CACtC,iBAAgB,EAChB,gBAAe,EAAM,QACrB,kBAAiB,EAAM,UACvB,eAAc,EACd,YAAe,GAAmB,EAAQ,UAX5C,EAaE,SAAC,OAAD,CAAM,UAAU,0BAAkB,EAAS,SAAS,cAAc,EAAI,EAAS,SAAS,WAAW,EAAG,SAAC,GAAD,CAAS,KAAM,GAAM,GAAG,SAAC,GAAD,CAAK,KAAM,GAAM,EAAQ,GACvJ,UAAC,OAAD,CAAM,UAAU,0BAAhB,EACE,SAAC,SAAD,CAAQ,MAAO,WAAQ,EAAe,EACrC,EAAM,SAAW,EAAM,UAAY,GAAQ,SAAC,QAAD,CAAO,MAAO,EAAM,iBAAU,EAAM,QAAgB,EAAG,KAClG,EAAM,WAAY,UAAC,QAAD,CAAO,MAAO,EAAE,8BAA8B,UAA9C,CAAiD,EAAE,0BAA0B,CAAC,KAAG,EAAM,UAAkB,GAAG,KAC9H,GAAY,EAAM,WAAW,OAAS,GAAI,SAAC,QAAD,CAAO,UAAU,gCAAwB,EAAM,SAAS,KAAK,MAAM,CAAS,EAAG,KACrH,IACP,SAAC,OAAD,CAAM,UAAU,0BAAkB,EAAM,KAAK,IAAI,IAAO,SAAC,EAAD,CAAkB,UAAU,iBAAiB,KAAK,OAAO,QAAK,KAAM,cAAO,EAAE,eAAe,IAAM,CAAU,CAA/F,EAA+F,CAAC,CAAQ,GAC7K,SAAC,OAAD,CAAM,UAAU,6BAAqB,EAAe,GACpD,SAAC,EAAD,CAAQ,UAAU,kBAAkB,KAAM,GAAU,EAAM,MAAM,CAAE,iBAC/D,EAAM,MACA,EACF,EAvBF,EAuBE,EAEX,CAAW,EAtCN,EAAO,SAsCD,CAAC,CACb,CAAC,GAAS,CAAC,GAAW,EAAS,SAAW,GACzC,SAAC,EAAD,CACE,MAAM,SAAC,GAAD,CAAS,UAAU,wBAA0B,EACnD,MAAO,EAAQ,SAAW,EAAI,EAAE,gBAAgB,CAAG,EAAE,qBAAqB,CAC1E,YAAa,EAAK,SAAS,OAAO,EAAI,CAAC,EAAQ,KAAK,GAAS,EAAM,KAAK,SAAS,OAAO,CAAC,CACrF,EAAE,0BAA0B,CAAG,EAAQ,SAAW,EAAI,EAAE,sBAAsB,CAAG,EAAE,2BAA2B,CAClH,EACA,KACH,GACC,SAAC,EAAD,CACE,MAAO,EAAE,yBAAyB,CAClC,YAAa,EACb,QAAQ,SAAC,EAAD,CAAY,MAAO,EAAE,gBAAgB,CAAE,MAAM,SAAC,GAAD,CAAW,UAAU,UAAY,EAAE,YAAe,KAAK,IAAS,CAAI,EACzH,EACA,KACA,GACE,GChLd,eAAsB,GAAkB,EAAuG,CAC7I,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,0CAA0C,CACvF,IAAM,oBAAkB,EAAM,aAAa,CAW3C,OAVA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,uBACpD,SAAC,GAAD,CACE,aAAc,EAAM,aACpB,aAAc,EAAM,aACpB,OAAQ,EAAM,OACd,gBAAiB,EAAM,gBACvB,EACkB,EACvB,CACM,SAAY,EAAK,SAAS,CCdnC,IAAM,GAAO,EAAiB,CAAE,u+CAAI,ijCAAI,CAAC,CAE5B,GAAI,GAAK,EACT,GAAkB,GAAK,UACvB,GAAY,GAAK,UACL,GAAK,UAE9B,GAAuB,GAAK,UAAU,CCTtC,SAAgB,IAAiB,CAC/B,IAAM,6BAA8B,GAAiB,GAAW,GAAU,CAK1E,MAAO,CAAE,qBAHN,EAAa,IAA2C,GAAU,EAAK,EAAK,CAC7E,CAAC,EAAO,CAED,CAAG,SAAQ,CCVtB,IAAa,GAA+B,+BAE/B,GAAqB,OAAO,OAAO,CAC9C,OAAQ,oBACR,aAAc,2BACd,UAAW,wBACX,YAAa,0BACb,eAAgB,6BAChB,iBAAkB,+BAClB,OAAQ,oBACR,YAAa,0BACb,OAAQ,oBACR,OAAQ,oBACR,UAAW,uBACX,OAAQ,oBACR,SAAU,sBACV,MAAO,mBACP,MAAO,mBACP,SAAU,uBACV,gBAAiB,+BACjB,gBAAiB,+BAClB,CAAC,CAEqC,OAAO,OAAO,CACnD,IAAK,GACL,KAAM,SACN,SAAU,CAAC,OAAO,CAClB,WAAY,CACV,KAAM,CACJ,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,KAAM,OAAQ,YAAa,QAAS,OAAO,CACtD,WAAY,CACV,GAAI,CAAE,KAAM,SAAU,CACtB,KAAM,CAAE,KAAM,SAAU,CACxB,UAAW,CAAE,KAAM,SAAU,CAC7B,MAAO,CAAE,KAAM,UAAW,QAAS,EAAG,CACtC,KAAM,CAAE,KAAM,CAAC,SAAU,SAAS,CAAE,CACpC,OAAQ,CAAE,KAAM,UAAW,CAC3B,YAAa,CAAE,KAAM,UAAW,CAChC,SAAU,CAAE,KAAM,UAAW,CAC9B,CACF,CACF,CACF,CACF,CAAC,CCzCF,IAAM,GAAiB,CACrB,CAAE,KAAM,SAAU,SAAU,SAAU,CACtC,CAAE,KAAM,QAAS,SAAU,QAAS,CACpC,CAAE,KAAM,uBAAwB,SAAU,YAAa,CACvD,CAAE,KAAM,cAAe,SAAU,QAAS,CAC1C,CAAE,KAAM,UAAW,SAAU,UAAW,CACxC,CAAE,KAAM,OAAQ,SAAU,OAAQ,CACnC,CAED,SAAS,GAAa,EAAkB,CACtC,IAAM,EAAQ,GAAe,UAAW,GAAS,EAAK,WAAa,EAAS,CAC5E,OAAO,IAAU,GAAK,GAAe,OAAS,EAIhD,SAAgB,GAAsB,EAAY,CAChD,GAAI,IAAO,QAAS,MAAO,QAC3B,GAAI,IAAO,SAAU,MAAO,SAC5B,IAAK,IAAM,KAAQ,GACjB,GAAI,EAAK,KAAK,KAAK,EAAG,CAAE,OAAO,EAAK,SAEtC,MAAO,UAIT,SAAgB,GAA0B,EAAW,EAAW,CAG9D,OAFW,GAAa,GAAsB,EAAE,CAEzC,CADI,GAAa,GAAsB,EAAE,CACpC,EAAM,EAAE,cAAc,EAAE,CAOtC,SAAgB,GAA8B,EAAmC,EAAoC,CAEnH,OADI,EAAc,OAAS,EAAU,GAC9B,EAAe,KAAM,GAAS,EAAc,IAAI,EAAK,CAAC,CAU/D,SAAgB,GAA4B,EAAgC,EAAsC,IAAI,IAAO,CAC3H,IAAM,EAAO,IAAI,IACX,EAAU,EAAE,CAClB,IAAK,IAAM,KAAQ,EAAa,CAC9B,IAAM,EAAK,OAAO,EAAK,CACvB,GAAI,CAAC,GAAM,EAAK,IAAI,EAAG,CAAE,SACzB,EAAK,IAAI,EAAG,CACZ,IAAM,EAAQ,EAAO,IAAI,EAAG,CAC5B,EAAQ,KAAK,CACX,KACA,GAAI,IAAU,OAAY,EAAE,CAAG,CAAE,QAAO,CACzC,CAAC,CAGJ,OADA,EAAQ,MAAM,EAAM,IAAU,GAA0B,EAAK,GAAI,EAAM,GAAG,CAAC,CACpE,ECpDT,SAAS,EAAkB,EAAiC,CAC1D,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,MAAO,EAAE,CACpD,IAAM,EAAQ,UAAW,EAAS,EAAO,MAAQ,OACjD,GAAI,CAAC,MAAM,QAAQ,EAAM,CAAE,MAAO,EAAE,CACpC,IAAM,EAAuB,EAAE,CACzB,EAAO,IAAI,IACX,EAAO,EAAM,OAAQ,GAA6C,OAAO,GAAS,YAAhC,EAAyC,CAC3F,EAAO,IAAI,IAAI,EAAK,IAAI,GAAQ,CAAC,OAAO,EAAK,SAAS,CAAE,EAAK,CAAC,CAAC,CAC/D,EAAW,IAAI,IACrB,IAAK,IAAM,KAAQ,EACjB,GAAI,EAAK,UAAY,EAAK,IAAI,EAAK,SAAS,CAAE,CAC5C,IAAM,EAAW,EAAS,IAAI,EAAK,SAAS,EAAI,EAAE,CAClD,EAAS,KAAK,EAAK,CACnB,EAAS,IAAI,EAAK,SAAU,EAAS,CAGzC,IAAM,EAAS,GAAqB,CAClC,IAAM,EAAQ,CAAC,CAAE,KAAM,EAAM,MAAO,EAAG,CAAC,CACxC,KAAO,EAAM,QAAQ,CACnB,GAAM,CAAE,OAAM,SAAU,EAAM,KAAK,CAC7B,EAAK,OAAO,EAAK,UAAY,GAAG,CACtC,GAAI,CAAC,GAAM,EAAK,IAAI,EAAG,CAAE,SACzB,EAAK,IAAI,EAAG,CACZ,IAAM,EAAc,EAAS,IAAI,EAAG,EAAI,EAAE,CACpC,EAAiB,MAAM,QAAQ,EAAK,eAAe,CAAG,EAAK,eAAe,OAAO,GAAQ,OAAO,GAAS,SAAS,CAAG,EAAE,CACvH,EAAU,EAAe,SAAS,SAAS,CAAG,SAChD,EAAe,SAAS,mBAAmB,CAAG,mBAC9C,EAAe,SAAS,aAAa,CAAG,OAAS,SACrD,EAAK,KAAK,CAAE,KAAI,iBAAgB,KAAM,OAAO,EAAK,OAAS,EAAK,SAAW,OAAY,EAAK,UAAU,EAAK,UAAU,CAAE,UACrH,QACA,KAAM,SACN,GAAI,EAAY,OAAS,CAAE,YAAa,GAAM,SAAU,EAAQ,EAAG,CAAG,EAAE,CAAG,CAAC,CAC9E,IAAK,IAAI,EAAI,EAAY,OAAS,EAAG,GAAK,EAAG,IAAK,EAAM,KAAK,CAAE,KAAM,EAAY,GAAI,MAAO,EAAQ,EAAG,CAAC,GAG5G,IAAK,IAAM,KAAQ,GAAU,CAAC,EAAK,UAAY,CAAC,EAAK,IAAI,EAAK,SAAS,GAAE,EAAM,EAAK,CAEpF,IAAK,IAAM,KAAQ,EAAM,EAAM,EAAK,CACpC,OAAO,EAIT,SAAgB,EAA0B,EAA+B,CACvE,IAAM,EAAS,IAAI,IACnB,IAAK,IAAM,KAAO,EAAM,IAAK,IAAM,KAAQ,EAAI,gBAAkB,EAAE,CAAE,EAAO,IAAI,GAAO,EAAO,IAAI,EAAK,EAAI,GAAK,EAAE,CAClH,OAAO,GAA4B,CAAC,GAAG,EAAO,MAAM,CAAC,CAAE,EAAO,CAIhE,IAAa,EAA4B,uBACzC,SAAgB,EAAe,EAAmB,CAAE,OAAO,GAAK,KAAO,EACvE,SAAgB,EAAyB,EAAsC,CAE7E,OADI,EAAK,KAAK,EAAe,CAAS,EAAK,IAAI,GAAO,EAAe,EAAI,CAAG,CAAE,GAAG,EAAK,QAAS,GAAM,CAAG,EAAI,CACrG,CAAC,CAAE,GAAI,EAA2B,KAAM,QAAS,QAAS,SAAU,MAAO,EAChF,KAAM,SAAU,QAAS,GAAM,YAAa,EAAK,OAAS,EAAG,SAAU,GAAM,CAC7E,GAAG,EAAK,IAAI,IAAQ,CAAE,GAAG,EAAK,MAAO,EAAI,MAAQ,EAAG,EAAE,CAAC,CAE3D,SAAgB,GAAuB,EAAiB,CAAE,OAAO,EAAyB,EAAkB,EAAO,CAAC,CCkBpH,SAAS,GAAkB,EAAmB,CAI5C,OAHI,MAAM,QAAQ,EAAI,eAAe,EAAI,EAAI,eAAe,OAAS,EAC5D,EAAI,eAEN,EAAI,QAAU,CAAC,OAAO,EAAI,QAAQ,CAAC,CAAG,EAAE,CAGjD,SAAS,GAAQ,EAAmB,CAClC,GAAI,EAAe,EAAI,CAAE,MAAO,QAChC,GAAI,EAAI,OAAS,SAAU,MAAO,QAClC,IAAM,EAAU,GAAkB,EAAI,CAAC,KAAM,GAAS,IAAS,YAAY,EAAI,EAAI,QAEnF,OADK,EACE,GAAsB,OAAO,EAAQ,CAAC,CADxB,OAIvB,SAAS,GAAiB,EAAY,CACpC,OAAQ,GAAsB,EAAG,CAAjC,CACE,IAAK,SAAU,OAAO,SAAC,GAAD,CAAQ,KAAM,GAAM,EAC1C,IAAK,QAAS,OAAO,SAAC,GAAD,CAAW,KAAM,GAAM,EAC5C,IAAK,YAAa,OAAO,SAAC,GAAD,CAAiB,KAAM,GAAM,EACtD,IAAK,QAAS,OAAO,SAAC,GAAD,CAAQ,KAAM,GAAM,EACzC,QAAS,OAAO,SAAC,GAAD,CAAK,KAAM,GAAM,GAIrC,SAAS,GAAQ,CAAE,OAA8B,CAM/C,OALI,EAAe,EAAI,EAAS,SAAC,GAAD,CAAQ,KAAM,GAAM,EAChD,EAAI,OAAS,UAAiB,SAAC,GAAD,CAAQ,KAAM,GAAM,EAClD,EAAI,UAAY,oBAA2B,SAAC,GAAD,CAAW,KAAM,GAAM,EAClE,EAAI,UAAY,UAAiB,SAAC,GAAD,CAAQ,KAAM,GAAM,EACrD,EAAI,OAAS,UAAiB,SAAC,GAAD,CAAiB,KAAM,GAAM,GACxD,SAAC,GAAD,CAAK,KAAM,GAAM,EAG1B,SAAS,GAAqB,CAAE,QAAO,SAAiE,CACtG,IAAM,EAAc,GAAgB,CAC9B,CAAC,EAAS,kBAAsC,KAAK,EAC3D,mBAAgB,CACd,IAAM,MAAgB,GAAO,CACvB,EAAU,GAAyB,EAAM,MAAQ,UAAY,GAAO,CAG1E,OAFA,OAAO,iBAAiB,cAAe,EAAQ,CAC/C,OAAO,iBAAiB,UAAW,EAAO,KAC7B,CACX,OAAO,oBAAoB,cAAe,EAAQ,CAClD,OAAO,oBAAoB,UAAW,EAAO,GAE9C,CAAC,EAAM,CAAC,CACX,IAAM,GAAe,EAAmB,EAAS,MAC/C,SAAC,MAAD,CAAK,UAAW,EAAS,uBAAyB,6BAC/C,EAAM,KAAK,EAAM,IACZ,EAAK,OAAS,aAAoB,SAAC,IAAD,CAAG,UAAU,yBAAgD,CAAlB,OAAO,IAAW,CAC/F,EAAK,OAAS,SAAgB,UAAC,MAAD,CAAK,UAAU,8BAAf,CAA4D,EAAK,KAAM,EAAK,MAAY,EAA/C,SAAS,IAAsC,EAExH,UAAC,MAAD,CAAK,UAAU,yBAAuC,mBAAsB,EAAK,UAAY,EAAW,EAAK,GAAG,UAAhH,EACE,UAAC,SAAD,CACE,KAAK,SACL,KAAK,WACL,iBAAgB,EAAK,GACrB,cAAa,EAAK,QAAU,OAC5B,aAAY,EAAK,OAAS,OAC1B,SAAU,EAAK,SACf,YAAe,CACb,GAAI,EAAK,SAAU,CACjB,EAAW,IAAY,EAAK,GAAK,KAAO,EAAK,GAAG,CAChD,OAEF,EAAK,UAAU,CACf,GAAO,WAbX,EAgBE,SAAC,OAAD,CAAM,UAAU,6BAAqB,EAAK,KAAY,GACtD,SAAC,OAAD,UAAO,EAAK,MAAa,EACxB,EAAK,UAAW,SAAC,MAAD,UAAM,EAAK,SAAe,EAAG,KAC7C,EAAK,UAAW,SAAC,EAAD,CAAc,KAAM,GAAM,EAAG,KACvC,GACR,EAAK,UAAY,IAAY,EAAK,GAAK,EAAY,EAAK,SAAU,GAAK,CAAG,KACvE,EAvBuC,EAAK,GAuB5C,CAER,CACE,EAER,2BACE,SAAC,MAAD,CACE,UAAU,wBACV,cAAa,GAAmB,gBAChC,KAAK,OACL,MAAO,CACL,KAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,WAAa,IAAI,CAAC,CAC7D,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,YAAc,IAAI,CAAC,CAC9D,CACD,cAAgB,GAAU,EAAM,iBAAiB,CACjD,cAAgB,GAAU,EAAM,gBAAgB,UAE/C,EAAY,EAAM,MAAM,CACrB,EACN,GAAe,SAAS,KACzB,CAGH,SAAS,GAAY,EAAe,EAAe,CACjD,IAAM,EAAQ,EAAM,aAAa,CAAC,QAAQ,EAAM,aAAa,CAAC,CAE9D,MADI,CAAC,GAAS,EAAQ,EAAU,GACzB,gCAAG,EAAM,MAAM,EAAG,EAAM,EAAC,SAAC,OAAD,CAAM,UAAU,cAAM,EAAM,MAAM,EAAO,EAAQ,EAAM,OAAO,CAAQ,EAAC,EAAM,MAAM,EAAQ,EAAM,OAAO,CAAI,GAG9I,SAAgB,GAAe,EAA0C,CASvE,OARK,EAAM,QAQJ,SAAC,GAAD,CAAoB,OAAQ,EAAM,OAAU,GAN/C,SAAC,EAAD,CACE,MAAM,8BACN,YAAY,mEACZ,EAMR,SAAS,GACP,EACA,EACA,EACA,EACA,CACA,GAAM,CAAC,EAAY,kBAA2G,KAAK,CAC7H,CAAC,EAAW,kBAAyB,EAAE,CACvC,EAAS,GAAW,SAAS,OAC7B,EAAY,GAAW,SAAS,GAChC,EAAM,GAAG,GAAQ,SAAS,GAAG,GAAQ,aACrC,EAAU,GAAY,MAAQ,EAAM,EAAa,KACjD,EAAO,GAAS,MAAQ,EAAE,CA+DhC,OA7DA,mBAAgB,CAAE,EAAa,EAAE,EAAK,CAAC,GAAQ,SAAU,GAAQ,WAAW,CAAC,EAE7E,mBAAgB,CACd,GAAI,CAAC,GAAa,CAAC,GAAQ,UAAY,CAAC,EAAW,CACjD,GAAI,CAAC,EAAW,OAChB,EAAc,KAAK,CACnB,OAEF,IAAM,EAAc,GAA2B,EAAS,GACtD,GAAS,SAAS,KAAO,GACzB,GAAS,SAAS,QAAQ,WAAa,EAAO,UAC9C,GAAS,SAAS,QAAQ,aAAe,EAAO,WAAW,CACvD,CAAE,UAAW,EACf,EACE,EAAU,SAAY,CAC1B,GAAI,EAAO,QAAS,OACpB,IAAI,EAAa,IACjB,GAAI,CACF,IAAM,EAAU,CACd,MAAO,GAAuB,YAAW,SAAU,EAAO,SAC1D,iBAAkB,EAAO,WAAY,SACtC,CACK,EAAS,MAAM,EAAO,aAAa,CAAE,GAAG,EAAS,MAAO,IAAM,CAAC,CACrE,GAAI,EAAO,QAAS,OACpB,IAAM,EAAQ,CAAC,GAAI,EAAO,OAAS,EAAE,CAAE,CACnC,EAAa,EAAO,WACxB,IAAK,IAAI,EAAO,EAAG,EAAO,GAAa,GAAe,KAAkC,IAAQ,CAC9F,IAAM,EAAO,MAAM,EAAO,aAAa,CAAE,GAAG,EAAS,OAAQ,EAAY,SAAU,OAAO,EAAO,SAAS,CAAE,MAAO,IAAM,CAAC,CAC1H,GAAI,EAAO,QAAS,OACpB,EAAM,KAAK,GAAG,EAAK,MAAM,CACzB,EAAa,EAAK,WAEpB,GAAI,EAAO,QAAS,OACpB,EAAe,GAAY,CACzB,IAAM,EAAO,CAAE,MAAK,KAAM,GAAuB,CAAE,GAAG,EAAQ,QAAO,CAAC,CAAE,QAAS,GAAe,KAAkC,OAAQ,GAAO,CAOjJ,OALE,GAAS,MAAQ,EAAK,KACtB,EAAQ,SAAW,EAAK,QACxB,EAAQ,UAAY,EAAK,SACzB,GAAc,EAAQ,KAAM,EAAK,KAAK,CAC/B,EACF,GACP,MACI,CACN,GAAI,EAAO,QAAS,OACpB,EAAe,GACT,GAAS,MAAQ,GAAO,EAAQ,QAAU,CAAC,EAAQ,SAAW,EAAQ,KAAK,SAAW,EAAU,EAC7F,CAAE,MAAK,KAAM,EAAE,CAAE,QAAS,GAAO,OAAQ,GAAM,CACtD,CACF,EAAa,KAEV,EAAO,UACV,EAAQ,WAAW,EAAS,EAAW,GAI3C,OADK,GAAS,KACD,CAAE,EAAY,SAAS,CAAE,aAAa,EAAM,GAGxD,CAAC,EAAQ,EAAW,EAAW,GAAQ,SAAU,GAAQ,WAAY,EAAW,EAAK,EAAQ,EAAU,CAAC,CAEpG,CAAE,OAAM,cAAe,EAA0B,EAAK,CAAE,OAAQ,GAAS,QAAU,GAAO,QAAS,GAAS,SAAW,GAAO,aAAgB,EAAa,GAAS,EAAQ,EAAE,CAAE,CAGzL,SAAS,GAAmB,CAAE,UAA4C,CACxE,GAAM,CAAE,GAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CAEK,CAAE,OAAM,gBAAe,SAAQ,UAAS,YAAa,GAAmB,EAAQ,EADpE,GAA4B,EACmD,CAAW,EAAO,CAmBnH,OAjBK,GAAW,SAAS,QAAQ,SAQ7B,GAEA,SAAC,EAAD,CACE,MAAO,EAAE,wBAAwB,CACjC,YAAa,EAAE,iCAAiC,CAChD,EAGF,EAAK,SAAW,GAAU,SAAC,EAAD,CAAY,MAAM,oBAAoB,YAAY,sCAAwC,GACjH,gCACJ,IAAW,UAAC,SAAD,CAAQ,KAAK,SAAS,QAAS,WAA/B,CAAyC,WAAS,KAAK,IAAI,EAAG,EAAK,OAAS,EAAE,CAAC,uBAA6B,IACxH,SAAC,GAAD,CACU,SAAc,OAAqB,gBAAiB,CADrC,GAAG,EAAU,SAAS,QAAQ,SAAS,GAAG,EAAU,SAAS,QAAQ,aAChC,CAC7D,IAnBC,SAAC,EAAD,CACE,MAAO,EAAE,wBAAwB,CACjC,YAAY,8EACZ,EAmBR,SAAS,GAAmB,CAC1B,SACA,OACA,iBAKC,CACD,GAAM,CAAE,KAAM,IAAgB,CACxB,oBAAuB,GAA2B,EAAO,CAAE,CAAC,EAAO,CAAC,CACpE,6BACJ,EAAO,cACD,EAAO,aAAa,KACpB,EAAO,aAAa,CAC3B,CACK,EAAmB,GAAW,gBAAgB,SAAS,UAAY,KACnE,EAAgB,GAAW,SAAS,OAAO,MAAQ,GAAW,SAAS,QAAQ,UAAY,KAC3F,oBACH,GAAuB,EAAe,EAAI,CAAG,EAAE,sBAAsB,CAAG,EAAI,KAC7E,CAAC,EAAE,CACJ,CACK,oBACH,GAAsB,CACrB,GAAI,EAAI,OAAS,SAAU,OAAO,EAAE,yBAAyB,CAC7D,GAAI,EAAI,QAAS,CACf,IAAM,EAAM,mBAAmB,EAAI,UAC7B,EAAQ,EAAE,EAAI,CACpB,OAAO,IAAU,EAAM,EAAE,yBAAyB,CAAG,EAEvD,MAAO,IAET,CAAC,EAAE,CACJ,CACK,oBAAkC,GAAe,CACrD,IAAM,EAAM,mBAAmB,IACzB,EAAQ,EAAE,EAAI,CACpB,OAAO,IAAU,EAAM,EAAK,GAC3B,CAAC,EAAE,CAAC,CACD,oBACE,EAAc,IAAK,IAAY,CACnC,GAAG,EACH,MAAO,EAAO,OAAS,EAAmB,EAAO,GAAG,CACrD,EAAE,CACH,CAAC,EAAoB,EAAc,CACpC,CACK,CAAC,EAAO,kBAAqB,GAAG,CAChC,CAAC,EAAS,kBAAuB,IAAI,IAAc,CACnD,CAAC,EAAU,sBAA8B,IAAI,IACjD,EAAK,OAAQ,GAAQ,EAAI,UAAY,EAAe,EAAI,CAAC,CAAC,IAAK,GAAQ,EAAI,GAAG,CAC/E,CAAC,CACI,CAAC,EAAS,kBAAuB,CAAE,KAAM,GAAM,GAAI,GAAO,CAAC,CAC3D,CAAC,EAAY,kBAAwD,KAAK,CAC1E,CAAC,GAAkB,kBAAmD,KAAK,CAC3E,gBAA4C,KAAK,CACjD,gBAA8C,KAAK,CACnD,CAAC,EAAa,mBAAsC,KAAK,CACzD,CAAC,GAAU,kBAAwB,IAAI,IAAc,CACrD,CAAC,EAAQ,mBAAqC,KAAK,EAEzD,mBAAgB,CACd,EAAa,GAAY,CACvB,GAAI,EAAQ,2BAA8B,CAAE,OAAO,EACnD,IAAM,EAAO,IAAI,IAAI,EAAQ,CAE7B,OADA,EAAK,IAAI,EAA0B,CAC5B,GACP,EACD,CAAC,EAAc,CAAC,EAEnB,mBAAgB,CACV,GAAoB,EAAK,KAAM,GAAQ,EAAI,KAAO,EAAiB,EACrE,EAAY,IAAI,IAAI,CAAC,EAAiB,CAAC,CAAC,CACxC,GAAU,EAAiB,EACjB,IACV,EAAY,IAAI,IAAM,CACtB,GAAU,KAAK,GAEhB,CAAC,EAAkB,EAAK,CAAC,EAE5B,mBAAgB,CACd,IAAM,EAAU,IAAI,IAAI,EAAsB,IAAK,GAAW,EAAO,GAAG,CAAC,CACzE,EAAY,GAAY,CACtB,GAAI,EAAQ,OAAS,EAAG,OAAO,EAC/B,IAAM,EAAO,IAAI,IAAI,CAAC,GAAG,EAAQ,CAAC,OAAQ,GAAO,EAAQ,IAAI,EAAG,CAAC,CAAC,CAClE,OAAO,EAAK,OAAS,EAAQ,KAAO,EAAU,GAC9C,EACD,CAAC,EAAsB,CAAC,CAE3B,IAAM,GAAyB,GAAsB,CACnD,GAAI,EAAI,OAAS,SAAU,OAC3B,IAAM,EAAS,GAAW,SAAS,OAC9B,GAAQ,UACR,EAAO,kBAAkB,EAAI,GAAI,CACpC,MAAO,EAAI,KACX,MAAO,GACP,SAAU,EAAO,SACjB,iBAAkB,EAAO,WAC1B,CAAC,CAAC,UAAY,GAAG,EAGd,OAA4B,CAChC,EAAY,IAAI,IAAM,CACtB,GAAU,KAAK,CACf,IAAM,EAAS,GAAW,SAAS,OAC9B,GAAQ,UACR,EAAO,oBAAoB,CAC9B,MAAO,GACP,SAAU,EAAO,SACjB,iBAAkB,EAAO,WAC1B,CAAC,CAAC,UAAY,GAAG,EAGd,qBAA4B,CAChC,IAAM,EAAO,EAAM,MAAM,CAAC,aAAa,CAEvC,GADkB,EAAK,OAAS,GAAK,EAAQ,KAAO,EAElD,OAAO,EAAK,OAAQ,GAAQ,CAC1B,IAAM,EAAQ,GAAkB,EAAI,CAC9B,EAAW,EAAa,EAAI,CAAC,aAAa,CAC1C,EAAgB,EAAM,KAAK,IAAI,CAAC,aAAa,CAC7C,EAAY,CAAC,GACd,EAAS,EAAI,CAAC,aAAa,CAAC,SAAS,EAAK,EAC1C,EAAS,SAAS,EAAK,EACvB,EAAc,SAAS,EAAK,CAC3B,EAAY,GAA8B,EAAO,EAAQ,CAC/D,MAAO,CAAC,EAAe,EAAI,EAAI,GAAa,GAC5C,CAAC,IAAK,IAAS,CAAE,GAAG,EAAK,MAAO,EAAG,EAAE,CAEzC,IAAM,EAA4B,EAAE,CACpC,OAAO,EAAK,OAAQ,GAAQ,CAC1B,KAAO,EAAgB,QAAU,EAAgB,GAAG,GAAG,EAAK,EAAI,OAAO,EAAgB,KAAK,CAC5F,IAAM,EAAiB,EAAgB,OAAS,EAEhD,OADI,EAAI,aAAe,CAAC,EAAS,IAAI,EAAI,GAAG,EAAE,EAAgB,KAAK,EAAI,MAAM,CACtE,CAAC,GACR,EACD,CAAC,EAAU,EAAS,EAAO,EAAU,EAAM,EAAa,CAAC,CAEtD,IAAa,EAAmB,IAAsB,CAC1D,GAAI,EAAI,OAAS,SAAU,CACzB,EAAa,GAAY,CACvB,IAAM,EAAO,IAAI,IAAI,EAAQ,CAE7B,OADI,EAAK,IAAI,EAAI,GAAG,CAAE,EAAK,OAAO,EAAI,GAAG,CAAO,EAAK,IAAI,EAAI,GAAG,CACzD,GACP,CACF,OAEF,IAAM,EAAU,GAAY,OAAQ,GAAU,EAAM,OAAS,SAAS,CAAC,IAAK,GAAU,EAAM,GAAG,CAC3F,EACJ,GAAI,EAAM,UAAY,EAAQ,CAC5B,IAAM,EAAO,EAAQ,QAAQ,EAAO,CAC9B,EAAK,EAAQ,QAAQ,EAAI,GAAG,CAClC,EAAO,EAAO,GAAK,EAAK,EACpB,IAAI,IAAI,CAAC,EAAI,GAAG,CAAC,CACjB,IAAI,IAAI,EAAQ,MAAM,KAAK,IAAI,EAAM,EAAG,CAAE,KAAK,IAAI,EAAM,EAAG,CAAG,EAAE,CAAC,MAC7D,EAAM,SAAW,EAAM,SAChC,EAAO,IAAI,IAAI,GAAS,CACpB,EAAK,IAAI,EAAI,GAAG,CAAE,EAAK,OAAO,EAAI,GAAG,CAAO,EAAK,IAAI,EAAI,GAAG,EAEhE,EAAO,IAAI,IAAI,CAAC,EAAI,GAAG,CAAC,CAE1B,GAAI,EAAK,OAAS,EAAG,CACnB,IAAqB,CACrB,OAEF,IAAM,EAAU,EAAK,IAAI,EAAI,GAAG,CAC5B,EACA,EAAK,KAAM,GAAU,EAAM,OAAS,UAAY,EAAK,IAAI,EAAM,GAAG,CAAC,CACvE,GAAI,CAAC,EAAS,CACZ,IAAqB,CACrB,OAEF,EAAY,EAAK,CACjB,GAAU,EAAQ,GAAG,CACrB,GAAsB,EAAQ,EAE1B,IAAe,EAAmB,IAAsB,CAC5D,EAAM,gBAAgB,CACtB,EAAM,iBAAiB,CACvB,EAAc,KAAK,CACnB,GAAe,CAAE,EAAG,EAAM,QAAS,EAAG,EAAM,QAAS,QAAO,CAAC,EAEzD,yBAA0C,CAC9C,CAAE,KAAM,QAAS,MAAO,EAAE,0BAA0B,CAAE,CACtD,CAAE,KAAM,OAAQ,GAAI,eAAgB,MAAO,EAAE,uCAAuC,CAAE,MAAM,SAAC,GAAD,CAAG,KAAM,GAAM,EAAE,SAAU,CAAC,GAAS,EAAQ,OAAS,EAAG,WAAc,CAAE,EAAS,GAAG,CAAE,EAAW,IAAI,IAAM,EAAK,CAC7M,CAAE,KAAM,OAAQ,GAAI,QAAS,MAAO,EAAE,gCAAgC,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,SAAU,IAAK,SAAU,GAAS,OAAS,EAAG,WAAc,GAAI,CACxK,CAAE,CAAC,EAAQ,KAAM,EAAO,GAAS,KAAM,EAAE,CAAC,CACrC,qBAAuB,GAAkC,CAC7D,CAAE,KAAM,QAAS,MAAO,EAAS,EAAI,CAAE,MAAM,SAAC,GAAD,CAAc,MAAO,EAAE,CACpE,CAAE,KAAM,OAAQ,GAAI,YAAa,MAAO,EAAE,0BAA0B,CAAE,MAAM,SAAC,GAAD,CAAQ,KAAM,GAAM,EAAE,WAAc,KAAK,UAAU,WAAW,UAAU,KAAK,UAAU,EAAK,KAAM,EAAE,CAAC,CAAE,CACnL,CAAE,KAAM,OAAQ,GAAI,QAAS,MAAO,EAAE,iCAAiC,CAAE,MAAM,SAAC,GAAD,CAAW,KAAM,GAAM,EAAE,SAAU,IAAK,SAAU,CAAC,GAAW,SAAW,EAAe,EAAI,CAAE,WAAc,CAAE,IAAM,EAAS,GAAW,SAAS,OAAY,GAAa,GAAQ,KAAK,eAAgB,CAAE,SAAU,EAAI,GAAI,SAAU,EAAO,SAAU,iBAAkB,EAAO,WAAY,CAAC,EAAK,CACjX,CAAE,CAAC,EAAU,EAAG,EAAQ,GAAW,QAAQ,CAAC,EAC7C,mBAAgB,CACT,GAAY,EAAoB,KAAK,EACzC,CAAC,EAAW,CAAC,CAEhB,IAAM,GAAkB,GAAgC,CACtD,GAAI,IAAe,EAAM,CACvB,EAAc,KAAK,CACnB,OAGF,IAAM,GADM,IAAS,SAAW,GAAkB,IACjC,SAAS,uBAAuB,CAC7C,GAAM,EAAoB,EAAK,CACnC,EAAc,EAAK,EAGf,GAAoB,GAAqB,CAC7C,EAAY,GAAY,CACtB,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAS,CAAE,EAAK,OAAO,EAAS,CACxC,EAAK,IAAI,EAAS,CAChB,GACP,EAGJ,OACE,UAAC,MAAD,CACE,UAAU,uBACV,cAAY,kBACZ,qBAAmB,OACnB,KAAK,OACL,SAAU,EACV,UAAY,GAAU,EACf,EAAM,SAAW,EAAM,UAAY,EAAM,IAAI,aAAa,GAAK,MAClE,EAAM,gBAAgB,CACtB,EAAY,IAAI,IAAI,EAAK,OAAQ,GAAQ,EAAI,OAAS,SAAS,CAAC,IAAK,GAAQ,EAAI,GAAG,CAAC,CAAC,YAT5F,EAaE,SAAC,EAAD,CACE,UAAU,kBACV,cAAY,eACZ,OACE,SAAC,EAAD,WACE,SAAC,EAAD,CACE,IAAK,GACL,UAAW,EAAQ,KAAO,SAAW,OACrC,MAAO,EAAE,yBAAyB,CAClC,MAAM,SAAC,GAAD,CAAQ,KAAM,GAAM,EAC1B,KAAK,UACL,YAAe,GAAe,SAAS,CACvC,EACM,EAEZ,QACE,SAAC,EAAD,CACE,UAAU,iBACV,cAAY,cACZ,cAAa,GAAmB,OAChC,MAAO,EACP,SAAW,GAAU,EAAS,EAAM,OAAO,MAAM,CACjD,YAAe,EAAS,GAAG,CAC3B,YAAa,EAAE,8BAA8B,CAC7C,MAAO,EAAE,wBAAwB,CACjC,EAEJ,KACE,SAAC,EAAD,WACE,SAAC,EAAD,CACE,IAAK,GACL,MAAO,EAAE,4BAA4B,CACrC,MAAM,SAAC,GAAD,CAAU,KAAM,GAAM,EAC5B,KAAK,UACL,YAAe,GAAe,WAAW,CACzC,EACM,EAEZ,GACF,UAAC,MAAD,CAAK,UAAU,aAAa,cAAY,wBAAxC,EACE,SAAC,OAAD,CAAM,UAAU,WAAW,iBAAc,GACzC,SAAC,OAAD,CAAM,UAAU,4BAAoB,EAAE,uBAAuB,CAAQ,EACpE,EAAQ,MAAO,SAAC,OAAD,CAAM,UAAU,qCAA6B,EAAE,uBAAuB,CAAQ,EAAG,KAChG,EAAQ,IAAK,SAAC,OAAD,CAAM,UAAU,iCAAyB,EAAE,qBAAqB,CAAQ,EAAG,KACrF,IACN,SAAC,MAAD,CACE,UAAU,UACV,cAAY,qBACZ,QAAU,GAAU,CACd,EAAM,SAAW,EAAM,eAAe,IAAqB,EAEjE,cAAgB,GAAU,CAClB,EAAM,OAAuB,QAAQ,MAAM,EAAE,GAAY,EAAO,IAAW,CAAC,WAGnF,GAAY,SAAW,GACtB,SAAC,EAAD,CACE,UAAU,gBACV,MAAO,EAAE,yBAAyB,CAClC,YAAa,EAAE,+BAA+B,CAC9C,EACA,GAAY,IAAK,GAAQ,CAC3B,IAAM,EAAa,GAAS,IAAI,EAAI,GAAG,CACjC,EAAW,EAAI,SAAW,GAC1B,EAAa,EAAS,IAAI,EAAI,GAAG,CACvC,OACE,UAAC,MAAD,CAEE,UAAW,QAAQ,GAAQ,EAAI,GAAG,EAAa,OAAS,KAAK,EAAW,OAAS,KACjF,cAAa,EAAe,EAAI,CAAG,wBAA0B,YAAY,EAAI,KAC7E,cAAa,GAAmB,OAChC,MAAO,CAAE,YAAa,gCAAgC,EAAI,MAAM,mFAAoF,CACpJ,KAAK,WACL,gBAAe,EACf,SAAU,EAAa,EAAI,GAC3B,QAAU,GAAU,GAAU,EAAK,EAAM,CACzC,cAAgB,GAAU,CACnB,GAAS,IAAI,EAAI,GAAG,GACvB,EAAY,IAAI,IAAI,CAAC,EAAI,GAAG,CAAC,CAAC,CAC1B,EAAI,OAAS,UAAU,GAAsB,EAAI,EAEvD,GAAY,EAAO,EAAe,EAAI,CAAG,IAAW,CAAG,GAAQ,EAAI,CAAC,WAfxE,EAkBE,SAAC,SAAD,CACE,KAAK,SACL,UAAU,QACV,cAAa,GAAmB,eAChC,SAAU,CAAC,EAAI,YACf,SAAU,GACV,QAAU,GAAU,CAClB,EAAM,iBAAiB,CAClB,EAAI,aACT,EAAa,GAAY,CACvB,IAAM,EAAO,IAAI,IAAI,EAAQ,CAG7B,OAFI,EAAK,IAAI,EAAI,GAAG,CAAE,EAAK,OAAO,EAAI,GAAG,CACpC,EAAK,IAAI,EAAI,GAAG,CACd,GACP,WAGH,EAAI,YAAe,GAAa,SAAC,EAAD,CAAa,KAAM,GAAM,GAAG,SAAC,EAAD,CAAc,KAAM,GAAM,EAAI,KACpF,GACT,SAAC,OAAD,CAAM,UAAU,gBAAM,SAAC,GAAD,CAAc,MAAO,EAAO,GAClD,SAAC,OAAD,CAAM,UAAU,sBACd,SAAC,OAAD,CAAM,UAAU,cAAM,GAAY,EAAS,EAAI,CAAE,EAAM,CAAQ,EAC1D,EACN,EAAQ,MAAO,SAAC,OAAD,CAAM,UAAU,+BAAqB,SAAC,OAAD,CAAM,UAAU,gBAAQ,EAAa,EAAI,CAAQ,EAAO,EAAG,KAC/G,EAAQ,IAAK,SAAC,OAAD,CAAM,UAAU,0BAAkB,EAAe,EAAI,CAAG,GAAK,IAAI,EAAI,KAAY,EAAG,KAC9F,EA1CC,EAAI,GA0CL,EAER,CACE,GACN,SAAC,EAAD,CACE,KAAM,GAAQ,IAAoB,IAAe,UACjD,WAAY,GACZ,YAAe,EAAc,KAAK,CAClC,oBAAqB,CAAC,GAAgB,CACtC,UAAU,mBACV,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,UAAC,MAAD,CAAK,UAAU,iCAAf,EACE,SAAC,MAAD,CAAK,UAAU,+BAAuB,EAAE,yBAAyB,CAAO,EACvE,EAAsB,IAAK,GAAW,CACrC,IAAM,EAAS,EAAQ,IAAI,EAAO,GAAG,CACrC,OACE,UAAC,SAAD,CACE,KAAK,SACL,UAAU,qBACV,cAAa,EAAS,OAAS,QAE/B,YAAe,GAAiB,EAAO,GAAG,UAL5C,EAOE,SAAC,GAAD,CACE,QAAS,EACT,aAAgB,GAAiB,EAAO,GAAG,CAC3C,SAAU,GACV,aACA,MAAO,EAAO,MACd,UAAU,oBACV,GACF,SAAC,OAAD,CAAM,UAAU,0BAA0B,0BAAa,GAAiB,EAAO,GAAG,CAAQ,EACzF,EAAO,MACD,EAbF,EAAO,GAaL,EAEX,EACF,SAAC,MAAD,CAAK,UAAU,wBAA0B,GACzC,SAAC,SAAD,CACE,KAAK,SACL,UAAU,uCACV,SAAU,EAAQ,OAAS,EAC3B,YAAe,EAAW,IAAI,IAAM,UAEnC,EAAE,yBAAyB,CACrB,EACL,GACO,GACf,SAAC,EAAD,CACE,KAAM,GAAQ,IAAoB,IAAe,YACjD,WAAY,GACZ,YAAe,EAAc,KAAK,CAClC,oBAAqB,CAAC,GAAkB,CACxC,UAAU,mBACV,eAAgB,CAAE,cAAgB,GAAU,EAAM,iBAAiB,CAAE,WAErE,UAAC,MAAD,CAAK,UAAU,gEAAf,EACE,SAAC,MAAD,CAAK,UAAU,+BAAuB,EAAE,oBAAoB,CAAO,EACjE,CAAC,OAAQ,KAAK,CAAW,IAAK,GAAW,CACzC,IAAM,EACF,EADU,IAAW,OACnB,uBACA,qBAAqB,CACrB,EAAU,EAAQ,GAClB,MAAe,EAAY,IAAa,CAAE,GAAG,GAAU,GAAS,CAAC,EAAQ,GAAS,EAAE,CAC1F,OACE,UAAC,SAAD,CACE,KAAK,SACL,UAAU,qBACV,cAAa,GAAmB,aAChC,cAAa,EAAU,OAAS,QAEhC,QAAS,WANX,EAQE,SAAC,GAAD,CACW,UACT,SAAU,EACV,SAAU,GACV,aACO,QACP,UAAU,oBACV,EACD,EACM,EAZF,EAYE,EAEX,EACF,SAAC,MAAD,CAAK,UAAU,wBAA0B,GACzC,UAAC,SAAD,CACE,KAAK,SACL,UAAU,wCACV,cAAa,GAAmB,UAChC,YAAe,EAAY,IAAI,IAAI,EAAK,OAAQ,GAAQ,EAAI,YAAY,CAAC,IAAK,GAAQ,EAAI,GAAG,CAAC,CAAC,UAJjG,EAME,SAAC,GAAD,CAAW,KAAM,GAAI,UAAU,0BAA4B,EAC1D,EAAE,sBAAsB,CAClB,IACT,UAAC,SAAD,CACE,KAAK,SACL,UAAU,wCACV,cAAa,GAAmB,YAChC,YAAe,EAAY,IAAI,IAAI,EAAK,OAAO,EAAe,CAAC,IAAK,GAAQ,EAAI,GAAG,CAAC,CAAC,UAJvF,EAME,SAAC,GAAD,CAAW,KAAM,GAAI,UAAU,0BAA4B,EAC1D,EAAE,wBAAwB,CACpB,GACL,GACO,EACd,GAAc,SAAC,GAAD,CAAsB,MAAO,EAAa,UAAa,GAAe,KAAK,CAAI,EAAG,KAC7F,GCpvBV,eAAsB,GAAoB,EAAyG,CACjJ,GAAI,CAAC,EAAM,aAAc,MAAU,UAAU,4CAA4C,CACzF,IAAM,oBAAkB,EAAM,aAAa,CAM3C,OALA,EAAK,QACH,SAAC,EAAD,CAAqB,KAAM,EAAM,aAAe,EAAM,uBACpD,SAAC,GAAD,CAAgB,OAAQ,EAAM,OAAU,EACpB,EACvB,CACM,SAAY,EAAK,SAAS,CCXnC,IAAM,cAAkB,UAAa,CAAE,sCAAU,MAAM,OAAO,kFAA2C,IAAK,EAAE,CAChH,SAAgB,GAAmB,CAAE,gBAA+C,CACnF,EAAa,UAAU,IAAI,cAAc,CACzC,IAAM,oBAAwB,EAAa,CAE3C,OADA,EAAK,QAAO,SAAC,WAAD,CAAU,UAAU,SAAC,IAAD,CAAG,KAAK,kBAAS,qBAAsB,YAAE,SAAC,GAAD,EAAc,EAAW,EAAC,KACtF,EAAK,SAAS,CCL5B,SAAS,GAAa,CAAE,eAA2D,CAClF,GAAM,CAAC,EAAO,kBAA0C,KAAK,CACvD,CAAC,EAAO,kBAAoC,KAAK,CACjD,CAAC,EAAM,kBAAoB,GAAG,CAC9B,eAAoB,EAAE,CACtB,eAAiC,KAAK,EAC5C,uBAAsB,CAAE,EAAW,WAAc,EAAE,CAAC,CACpD,eAAe,EAAK,EAAa,CAChC,GAAI,CAAC,EAAM,OACX,IAAM,EAAU,EAAE,EAAW,QAC7B,GAAI,CACH,IAAM,EAAS,EAAY,MAAM,EAAK,MAAM,CAAC,CAC7C,GAAI,IAAY,EAAW,QAAS,OACpC,GAAI,CAAC,EAAO,GAAI,MAAU,MAAM,GAAG,EAAO,MAAM,KAAK,IAAI,EAAO,MAAM,OAAO,CAC7E,EAAS,EAAO,MAAM,CAAE,EAAQ,EAAK,KAAK,CAAE,EAAS,KAAK,OAClD,EAAO,CAAM,IAAY,EAAW,UAAW,EAAS,KAAK,CAAE,EAAS,OAAO,EAAM,CAAC,GAEhG,IAAM,EAAM,GAAO,OAAO,QAAQ,EAAK,IAAU,KAAK,IAAI,EAAK,EAAM,eAAe,CAAE,EAAE,EAAI,EAC5F,OAAO,UAAC,MAAD,CAAK,UAAU,aAAa,sBAAqB,EAAQ,SAAW,EAAQ,QAAU,iBAAtF,EACN,UAAC,SAAD,YAAQ,UAAC,MAAD,YAAK,SAAC,KAAD,UAAI,eAAiB,YAAC,IAAD,UAAG,2DAA4D,EAAM,IACvG,SAAC,SAAD,CAAQ,YAAe,EAAM,SAAS,OAAO,UAAE,eAAqB,YAAC,QAAD,CAAO,IAAK,EAAO,KAAK,OAAO,OAAO,QAAQ,UAAO,SAAU,GAAS,KAAK,EAAK,EAAM,OAAO,QAAQ,GAAG,CAAI,EAAS,GAC1L,IAAS,SAAC,IAAD,CAAG,KAAK,iBAAS,EAAU,EACpC,CAAC,GAAS,CAAC,IAAS,SAAC,IAAD,CAAG,UAAU,4BAAmB,2EAA4E,EAChI,IAAS,iCAAE,SAAC,KAAD,UAAK,EAAU,aAAC,MAAD,CAAK,UAAU,8BAAf,EAAoC,UAAC,OAAD,WAAO,EAAM,QAAQ,WAAW,UAAc,cAAC,OAAD,WAAO,EAAM,QAAQ,YAAY,WAAe,cAAC,OAAD,WAAM,OAAK,EAAM,QAAQ,mBAAqB,IAAI,MAAU,aAAC,OAAD,UAAO,EAAM,aAAa,OAAc,EAAM,IACvQ,SAAC,MAAD,CAAK,QAAQ,eAAe,KAAK,MAAM,aAAW,sBAAsB,sBAAqB,EAAM,OAAO,gBACxG,EAAM,OAAO,KAAK,EAAO,KAAM,SAAC,OAAD,CAA0B,EAAG,EAAI,IAAO,EAAM,OAAO,OAAQ,EAAG,IAAM,EAAM,eAAiB,EAAM,IAAK,MAAO,KAAK,IAAI,EAAG,IAAO,EAAM,OAAO,OAAS,EAAE,CAAE,OAAQ,EAAM,eAAiB,EAAM,IAAK,KAAK,yBAAe,UAAC,QAAD,WAAO,SAAO,EAAM,QAAQ,KAAG,EAAM,eAAe,MAAW,GAAO,CAArR,EAAM,QAA+Q,CAAC,CAC5T,aAAC,QAAD,YAAO,SAAC,QAAD,WAAO,UAAC,KAAD,YAAI,SAAC,KAAD,UAAI,iBAAmB,YAAC,KAAD,UAAI,UAAY,YAAC,KAAD,UAAI,UAAY,YAAC,KAAD,UAAI,WAAa,EAAK,GAAQ,YAAC,QAAD,UAAQ,EAAM,OAAO,KAAK,EAAM,KAAM,UAAC,KAAD,YAAY,UAAC,KAAD,WAAK,EAAM,OAAO,MAAI,EAAM,MAAW,aAAC,KAAD,UAAK,EAAM,MAAW,YAAC,KAAD,UAAK,EAAM,UAAe,YAAC,KAAD,UAAK,EAAM,mBAAqB,IAAS,EAAK,EAAxI,EAAwI,CAAC,CAAS,EAAQ,GAAG,GACpT,GAEP,SAAgB,GAAmB,CAAE,eAAc,eAAsF,CACxI,IAAM,oBAAkB,EAAa,CAA2D,OAAzD,EAAK,QAAO,SAAC,GAAD,CAA2B,cAAe,EAAC,KAAe,EAAK,SAAS","names":[],"ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,66,67,68,69],"sources":["../../../packages/view-components/src/tokens.ts","../../../packages/view-components/src/theme.tsx","../../../packages/view-components/src/useWorkspaceClientConnected.ts","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/arrow-down-wide-narrow.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/arrow-up-down.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/arrow-up-narrow-wide.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/bone.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/box.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/braces.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/camera.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/case-sensitive.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/chevrons-right.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/circle-user-round.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/clapperboard.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/clock.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/copy.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/crosshair.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/database.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/ellipsis.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file-code-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file-down.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file-text.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/film.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/filter.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/focus.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder-open.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/globe.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/grid-2x2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/hard-drive.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/hexagon.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/image.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/layers.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/lightbulb.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/list.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/maximize-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/minimize-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/minus.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/moon.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/mouse-pointer-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/move-3d.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/music.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/package.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/paintbrush.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/pin.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/plus.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/puzzle.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/search-x.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/settings-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/settings.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/shapes.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/shield-check.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/star-off.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/star.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/sun.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/table-2.js","../../../../../node_modules/.pnpm/lucide-react@0.460.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/type.js","../../../packages/view-components/src/inspector-form-model.ts","../../../packages/view-components/src/InspectorForm.tsx","../../../packages/view-components/src/ErrorNotice.tsx","../../../packages/view-components/src/page-tab-icons.ts","../../../packages/view-components/src/PageTabStrip.tsx","../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js","../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js","../../../../../node_modules/.pnpm/react-dom@19.2.8_react@19.2.8/node_modules/react-dom/cjs/react-dom-client.production.js","../../../../../node_modules/.pnpm/react-dom@19.2.8_react@19.2.8/node_modules/react-dom/client.js","../../../packages/view-workspace-core/src/id.ts","../../../packages/view-workspace-core/src/contract.ts","../../../packages/view-workspace-core/src/workspace-state.ts","../../../packages/view-workspace-core/src/command-error.ts","../../../packages/view-workspace-core/src/view-trace.ts","../../../packages/view-workspace-core/src/resource-open.ts","../../../packages/view-workspace-core/src/engine-presentation.ts","../../../packages/view-workspace-core/src/adopt-surface.ts","../../../packages/view-workspace-core/src/render-resize-sync.ts","../../../packages/view-workspace-core/src/preview-surface.ts","../../../packages/view-workspace-core/src/resource-page.ts","../../../packages/view-plugin-material/src/identity.ts","../../../packages/view-plugin-mesh/src/identity.ts","../../../packages/view-plugin-texture/src/identity.ts","../../../packages/view-plugin-display/src/ui/run-observer.ts","../../../packages/view-workspace-core/src/locale-bridge.ts","../../../packages/view-workspace-core/src/plugin-i18n.ts","../../../packages/view-plugin-content-browser/src/i18n/index.ts","../../../packages/view-plugin-content-browser/src/i18n/useTranslation.ts","../../../packages/view-plugin-content-browser/src/schema.ts","../../../packages/view-plugin-content-browser/src/ui/format.ts","../../../packages/view-plugin-content-browser/src/ui/icons.ts","../../../packages/view-plugin-content-browser/src/ui/derived-view.ts","../../../packages/view-plugin-content-browser/src/ui/CBDetailsList.tsx","../../../packages/view-plugin-content-browser/src/ui/CBGrid.tsx","../../../packages/view-plugin-content-browser/src/ui/CBNavigationBar.tsx","../../../packages/view-plugin-content-browser/src/ui/preview/media-preview-policy.ts","../../../packages/view-plugin-content-browser/src/ui/preview/MediaPreview.tsx","../../../packages/view-plugin-content-browser/src/ui/preview/ext-language.ts","../../../packages/view-plugin-content-browser/src/ui/preview/code-preview-policy.ts","../../../packages/view-plugin-content-browser/src/ui/preview/highlighter.ts","../../../packages/view-plugin-content-browser/src/ui/preview/CodePreview.tsx","../../../packages/view-plugin-content-browser/src/ui/preview/FileContentPreview.tsx","../../../packages/view-plugin-content-browser/src/ui/resize-handle.tsx","../../../packages/view-plugin-content-browser/src/ui/CBPreviewPanel.tsx","../../../packages/view-plugin-content-browser/src/ui/runtime-packs.ts","../../../packages/view-plugin-content-browser/src/ui/RuntimePacksPanel.tsx","../../../packages/view-plugin-content-browser/src/ui/workspace-catalog.ts","../../../packages/view-plugin-content-browser/src/ui/ContentBrowserPanel.tsx","../../../packages/view-plugin-content-browser/src/ui/mount.tsx","../../../packages/view-plugin-inspector/src/i18n/index.ts","../../../packages/view-plugin-inspector/src/i18n/useTranslation.ts","../../../packages/view-plugin-inspector/src/schema.ts","../../../packages/view-plugin-inspector/src/inspection.ts","../../../packages/view-plugin-inspector/src/ui/InspectorPanel.tsx","../../../packages/view-plugin-inspector/src/ui/mount.tsx","../../../packages/view-plugin-material/src/i18n/index.ts","../../../packages/view-plugin-material/src/i18n/useTranslation.ts","../../../packages/view-workspace-core/src/inspection-presentation.ts","../../../packages/view-plugin-material/src/ui/MaterialPanel.tsx","../../../packages/view-plugin-material/src/preview-navigation.ts","../../../packages/view-plugin-material/src/ui/MaterialPreviewPanel.tsx","../../../packages/view-plugin-material/src/ui/mount.tsx","../../../packages/view-plugin-mesh/src/i18n/index.ts","../../../packages/view-plugin-mesh/src/i18n/useTranslation.ts","../../../packages/view-plugin-mesh/src/ui/MeshPreviewPanel.tsx","../../../packages/view-plugin-mesh/src/ui/MeshPropertiesPanel.tsx","../../../packages/view-plugin-mesh/src/ui/mount.tsx","../../../packages/view-plugin-texture/src/i18n/index.ts","../../../packages/view-plugin-texture/src/i18n/useTranslation.ts","../../../packages/view-plugin-texture/src/ui/TexturePreviewPanel.tsx","../../../packages/view-plugin-texture/src/ui/TexturePropertiesPanel.tsx","../../../packages/view-plugin-texture/src/ui/mount.tsx","../../../packages/view-plugin-asset/src/i18n/index.ts","../../../packages/view-plugin-asset/src/i18n/useTranslation.ts","../../../packages/view-plugin-asset/src/ui/AssetPropertiesPanel.tsx","../../../packages/view-plugin-asset/src/ui/mount.tsx","../../../packages/view-plugin-plugins/src/i18n/index.ts","../../../packages/view-plugin-plugins/src/i18n/useTranslation.ts","../../../packages/view-plugin-plugins/src/schema.ts","../../../packages/view-plugin-plugins/src/ui/plugin-entries.ts","../../../packages/view-plugin-plugins/src/ui/PluginFilters.tsx","../../../packages/view-plugin-plugins/src/ui/PluginsPanel.tsx","../../../packages/view-plugin-plugins/src/ui/mount.tsx","../../../packages/view-plugin-scene-tree/src/i18n/index.ts","../../../packages/view-plugin-scene-tree/src/i18n/useTranslation.ts","../../../packages/view-plugin-scene-tree/src/schema.ts","../../../packages/view-plugin-scene-tree/src/hierarchy-filters.ts","../../../packages/view-plugin-scene-tree/src/hierarchy.ts","../../../packages/view-plugin-scene-tree/src/ui/SceneTreePanel.tsx","../../../packages/view-plugin-scene-tree/src/ui/mount.tsx","../../../../view-plugins/rhi-debug/ui.tsx","../../../../view-plugins/profiler/ui.tsx"],"sourcesContent":["export const themeNames = ['light', 'dark'] as const;\nexport type ThemeName = (typeof themeNames)[number];\n\nexport const typographyTokens = {\n title: '--fx-type-title',\n heading: '--fx-type-heading',\n body: '--fx-type-body',\n ui: '--fx-type-ui',\n label: '--fx-type-label',\n compact: '--fx-type-compact',\n caption: '--fx-type-caption',\n code: '--fx-type-code',\n} as const;\n\nexport const colorTokens = {\n surface: {\n canvas: '--fx-color-surface-canvas',\n sidebar: '--fx-color-surface-sidebar',\n raised: '--fx-color-surface-raised',\n inset: '--fx-color-surface-inset',\n hover: '--fx-color-surface-hover',\n selected: '--fx-color-surface-selected',\n },\n text: {\n primary: '--fx-color-text-primary',\n secondary: '--fx-color-text-secondary',\n muted: '--fx-color-text-muted',\n disabled: '--fx-color-text-disabled',\n inverse: '--fx-color-text-inverse',\n link: '--fx-color-text-link',\n },\n border: {\n subtle: '--fx-color-border-subtle',\n default: '--fx-color-border-default',\n control: '--fx-color-border-control',\n strong: '--fx-color-border-strong',\n focus: '--fx-color-border-focus',\n essential: '--fx-color-border-essential',\n },\n action: {\n primaryBackground: '--fx-color-action-primary-bg',\n primaryForeground: '--fx-color-action-primary-fg',\n primaryHover: '--fx-color-action-primary-hover',\n primaryPressed: '--fx-color-action-primary-pressed',\n secondaryBackground: '--fx-color-action-secondary-bg',\n secondaryForeground: '--fx-color-action-secondary-fg',\n secondaryHover: '--fx-color-action-secondary-hover',\n disabledBackground: '--fx-color-action-disabled-bg',\n disabledForeground: '--fx-color-action-disabled-fg',\n dangerBackground: '--fx-color-action-danger-bg',\n dangerForeground: '--fx-color-action-danger-fg',\n },\n selection: {\n background: '--fx-color-selection-bg',\n foreground: '--fx-color-selection-fg',\n indicator: '--fx-color-selection-indicator',\n },\n brand: {\n accent: '--fx-color-brand-accent',\n text: '--fx-color-brand-text',\n soft: '--fx-color-brand-soft',\n onAccent: '--fx-color-brand-on-accent',\n },\n status: {\n successForeground: '--fx-color-status-success-fg',\n successBackground: '--fx-color-status-success-bg',\n warningForeground: '--fx-color-status-warning-fg',\n warningBackground: '--fx-color-status-warning-bg',\n errorForeground: '--fx-color-status-error-fg',\n errorBackground: '--fx-color-status-error-bg',\n infoForeground: '--fx-color-status-info-fg',\n infoBackground: '--fx-color-status-info-bg',\n },\n scrim: '--fx-color-scrim',\n choiceIndicator: '--fx-color-choice-indicator',\n} as const;\n\nexport const surfaceTokens = colorTokens.surface;\n\nexport const statusTokens = {\n success: {\n foreground: '--fx-color-status-success-fg',\n background: '--fx-color-status-success-bg',\n },\n warning: {\n foreground: '--fx-color-status-warning-fg',\n background: '--fx-color-status-warning-bg',\n },\n error: {\n foreground: '--fx-color-status-error-fg',\n background: '--fx-color-status-error-bg',\n },\n info: {\n foreground: '--fx-color-status-info-fg',\n background: '--fx-color-status-info-bg',\n },\n} as const;\n\nexport const spaceTokens = {\n inline: '--fx-space-inline',\n control: '--fx-space-control',\n stack: '--fx-space-stack',\n section: '--fx-space-section',\n page: '--fx-space-page',\n} as const;\n\nexport const shapeTokens = {\n radius: {\n control: '--fx-radius-control',\n card: '--fx-radius-card',\n popover: '--fx-radius-popover',\n dialog: '--fx-radius-dialog',\n composer: '--fx-radius-composer',\n pill: '--fx-radius-pill',\n },\n border: {\n width: '--fx-border-width',\n focusWidth: '--fx-border-focus-width',\n focusOffset: '--fx-border-focus-offset',\n },\n shadow: {\n subtle: '--fx-shadow-subtle',\n floating: '--fx-shadow-floating',\n dialog: '--fx-shadow-dialog',\n },\n} as const;\n\nexport const motionTokens = {\n feedback: '--fx-motion-feedback',\n hover: '--fx-motion-hover',\n expand: '--fx-motion-expand',\n panel: '--fx-motion-panel',\n easing: '--fx-motion-ease',\n} as const;\n\nexport const layerTokens = {\n content: '--fx-layer-content',\n sticky: '--fx-layer-sticky',\n popover: '--fx-layer-popover',\n dialog: '--fx-layer-dialog',\n toast: '--fx-layer-toast',\n tooltip: '--fx-layer-tooltip',\n} as const;\n\nexport const componentTokens = {\n controlHeightCompact: '--fx-component-control-height-compact',\n controlHeightDefault: '--fx-component-control-height-default',\n controlHeightLarge: '--fx-component-control-height-large',\n controlIconSize: '--fx-component-control-icon-size',\n controlIconHitAreaMin: '--fx-component-control-icon-hit-area-min',\n fieldHeightDefault: '--fx-component-field-height-default',\n navigationRowHeight: '--fx-component-navigation-row-height',\n editorRowHeight: '--fx-component-editor-row-height',\n panelHeaderHeight: '--fx-component-panel-header-height',\n navigationRailWidth: '--fx-component-navigation-rail-width',\n panelConfigMinWidth: '--fx-component-panel-config-min-width',\n panelConfigMaxWidth: '--fx-component-panel-config-max-width',\n panelChatMinWidth: '--fx-component-panel-chat-min-width',\n panelChatDefaultWidth: '--fx-component-panel-chat-default-width',\n menuRowHeight: '--fx-component-menu-row-height',\n menuMinWidth: '--fx-component-menu-min-width',\n dialogMaxWidth: '--fx-component-dialog-max-width',\n dialogPadding: '--fx-component-dialog-padding',\n conversationMaxWidth: '--fx-component-conversation-max-width',\n conversationMessageGap: '--fx-component-conversation-message-gap',\n composerRadius: '--fx-component-composer-radius',\n composerMinHeight: '--fx-component-composer-min-height',\n composerTextMaxHeight: '--fx-component-composer-text-max-height',\n tooltipDelay: '--fx-component-tooltip-delay',\n spinnerDuration: '--fx-component-status-spinner-duration',\n buttonRadius: '--fx-component-button-radius',\n choiceSize: '--fx-component-choice-size',\n choiceDotSize: '--fx-component-choice-dot-size',\n} as const;\n\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\n\nimport { themeNames, type ThemeName } from './tokens';\n\nconst THEME_STORAGE_KEY = 'forgeax-view-theme';\n\ntype ThemeContextValue = {\n theme: ThemeName;\n setTheme: (theme: ThemeName) => void;\n toggleTheme: () => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport type ThemeProviderProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n children: ReactNode;\n defaultTheme?: ThemeName;\n theme?: ThemeName;\n onThemeChange?: (theme: ThemeName) => void;\n persist?: boolean;\n applyToDocument?: boolean;\n /** Skip the layout wrapper `div` when it would break viewport flex/height chains. */\n unstyled?: boolean;\n};\n\nexport function isThemeName(value: unknown): value is ThemeName {\n return typeof value === 'string' && themeNames.includes(value as ThemeName);\n}\n\nexport function getStoredTheme(fallback: ThemeName = 'light'): ThemeName {\n if (typeof window === 'undefined') return fallback;\n const stored = window.localStorage.getItem(THEME_STORAGE_KEY);\n return isThemeName(stored) ? stored : fallback;\n}\n\nexport function applyTheme(theme: ThemeName, target?: HTMLElement) {\n const element = target ?? (typeof document === 'undefined' ? undefined : document.documentElement);\n if (element) element.dataset.theme = theme;\n}\n\nexport function initializeTheme(fallback: ThemeName = 'light') {\n const theme = getStoredTheme(fallback);\n applyTheme(theme);\n return theme;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'light',\n theme: controlledTheme,\n onThemeChange,\n persist = false,\n applyToDocument = true,\n unstyled = false,\n className,\n ...props\n}: ThemeProviderProps) {\n const [internalTheme, setInternalTheme] = useState<ThemeName>(() =>\n persist ? getStoredTheme(defaultTheme) : defaultTheme,\n );\n const theme = controlledTheme ?? internalTheme;\n\n const setTheme = useCallback(\n (nextTheme: ThemeName) => {\n if (!controlledTheme) setInternalTheme(nextTheme);\n if (persist && typeof window !== 'undefined') {\n window.localStorage.setItem(THEME_STORAGE_KEY, nextTheme);\n }\n onThemeChange?.(nextTheme);\n },\n [controlledTheme, onThemeChange, persist],\n );\n\n useEffect(() => {\n if (applyToDocument) applyTheme(theme);\n }, [applyToDocument, theme]);\n\n const value = useMemo(\n () => ({\n theme,\n setTheme,\n toggleTheme: () => setTheme(theme === 'light' ? 'dark' : 'light'),\n }),\n [setTheme, theme],\n );\n\n return (\n <ThemeContext.Provider value={value}>\n {unstyled ? (\n children\n ) : (\n <div\n {...props}\n className={['fx-ui', className].filter(Boolean).join(' ')}\n data-theme={applyToDocument ? undefined : theme}\n >\n {children}\n </div>\n )}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) throw new Error('useTheme must be used inside ThemeProvider');\n return context;\n}\n","import { useSyncExternalStore } from 'react';\n\ntype WorkspaceConnectionClient = {\n transport?: { connected?: boolean; request?: unknown };\n onDisconnect?: (listener: () => void) => () => void;\n};\n\nfunction readConnected(client?: WorkspaceConnectionClient | null) {\n const transport = client?.transport;\n return Boolean(transport && typeof transport.request === 'function' && transport.connected !== false);\n}\n\nexport function useWorkspaceClientConnected(client?: WorkspaceConnectionClient | null) {\n return useSyncExternalStore(\n (onChange) => client?.onDisconnect?.(onChange) ?? (() => {}),\n () => readConnected(client),\n () => readConnected(client),\n );\n}\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowDownWideNarrow = createLucideIcon(\"ArrowDownWideNarrow\", [\n [\"path\", { d: \"m3 16 4 4 4-4\", key: \"1co6wj\" }],\n [\"path\", { d: \"M7 20V4\", key: \"1yoxec\" }],\n [\"path\", { d: \"M11 4h10\", key: \"1w87gc\" }],\n [\"path\", { d: \"M11 8h7\", key: \"djye34\" }],\n [\"path\", { d: \"M11 12h4\", key: \"q8tih4\" }]\n]);\n\nexport { ArrowDownWideNarrow as default };\n//# sourceMappingURL=arrow-down-wide-narrow.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUpDown = createLucideIcon(\"ArrowUpDown\", [\n [\"path\", { d: \"m21 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n]);\n\nexport { ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUpNarrowWide = createLucideIcon(\"ArrowUpNarrowWide\", [\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }],\n [\"path\", { d: \"M11 12h4\", key: \"q8tih4\" }],\n [\"path\", { d: \"M11 16h7\", key: \"uosisv\" }],\n [\"path\", { d: \"M11 20h10\", key: \"jvxblo\" }]\n]);\n\nexport { ArrowUpNarrowWide as default };\n//# sourceMappingURL=arrow-up-narrow-wide.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Bone = createLucideIcon(\"Bone\", [\n [\n \"path\",\n {\n d: \"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z\",\n key: \"w610uw\"\n }\n ]\n]);\n\nexport { Bone as default };\n//# sourceMappingURL=bone.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Box = createLucideIcon(\"Box\", [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n key: \"hh9hay\"\n }\n ],\n [\"path\", { d: \"m3.3 7 8.7 5 8.7-5\", key: \"g66t2b\" }],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }]\n]);\n\nexport { Box as default };\n//# sourceMappingURL=box.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Braces = createLucideIcon(\"Braces\", [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n]);\n\nexport { Braces as default };\n//# sourceMappingURL=braces.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Camera = createLucideIcon(\"Camera\", [\n [\n \"path\",\n {\n d: \"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\",\n key: \"1tc9qg\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"13\", r: \"3\", key: \"1vg3eu\" }]\n]);\n\nexport { Camera as default };\n//# sourceMappingURL=camera.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CaseSensitive = createLucideIcon(\"CaseSensitive\", [\n [\"path\", { d: \"m3 15 4-8 4 8\", key: \"1vwr6u\" }],\n [\"path\", { d: \"M4 13h6\", key: \"1r9ots\" }],\n [\"circle\", { cx: \"18\", cy: \"12\", r: \"3\", key: \"1kchzo\" }],\n [\"path\", { d: \"M21 9v6\", key: \"anns31\" }]\n]);\n\nexport { CaseSensitive as default };\n//# sourceMappingURL=case-sensitive.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronLeft = createLucideIcon(\"ChevronLeft\", [\n [\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]\n]);\n\nexport { ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronsRight = createLucideIcon(\"ChevronsRight\", [\n [\"path\", { d: \"m6 17 5-5-5-5\", key: \"xnjwq\" }],\n [\"path\", { d: \"m13 17 5-5-5-5\", key: \"17xmmf\" }]\n]);\n\nexport { ChevronsRight as default };\n//# sourceMappingURL=chevrons-right.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleUserRound = createLucideIcon(\"CircleUserRound\", [\n [\"path\", { d: \"M18 20a6 6 0 0 0-12 0\", key: \"1qehca\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"4\", key: \"1h16sb\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { CircleUserRound as default };\n//# sourceMappingURL=circle-user-round.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clapperboard = createLucideIcon(\"Clapperboard\", [\n [\n \"path\",\n { d: \"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z\", key: \"1tn4o7\" }\n ],\n [\"path\", { d: \"m6.2 5.3 3.1 3.9\", key: \"iuk76l\" }],\n [\"path\", { d: \"m12.4 3.4 3.1 4\", key: \"6hsd6n\" }],\n [\"path\", { d: \"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\", key: \"ltgou9\" }]\n]);\n\nexport { Clapperboard as default };\n//# sourceMappingURL=clapperboard.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"Clock\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Crosshair = createLucideIcon(\"Crosshair\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"22\", x2: \"18\", y1: \"12\", y2: \"12\", key: \"l9bcsi\" }],\n [\"line\", { x1: \"6\", x2: \"2\", y1: \"12\", y2: \"12\", key: \"13hhkx\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"6\", y2: \"2\", key: \"10w3f3\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"22\", y2: \"18\", key: \"15g9kq\" }]\n]);\n\nexport { Crosshair as default };\n//# sourceMappingURL=crosshair.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Database = createLucideIcon(\"Database\", [\n [\"ellipse\", { cx: \"12\", cy: \"5\", rx: \"9\", ry: \"3\", key: \"msslwz\" }],\n [\"path\", { d: \"M3 5V19A9 3 0 0 0 21 19V5\", key: \"1wlel7\" }],\n [\"path\", { d: \"M3 12A9 3 0 0 0 21 12\", key: \"mv7ke4\" }]\n]);\n\nexport { Database as default };\n//# sourceMappingURL=database.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Ellipsis = createLucideIcon(\"Ellipsis\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n]);\n\nexport { Ellipsis as default };\n//# sourceMappingURL=ellipsis.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileCode2 = createLucideIcon(\"FileCode2\", [\n [\"path\", { d: \"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4\", key: \"1pf5j1\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"m5 12-3 3 3 3\", key: \"oke12k\" }],\n [\"path\", { d: \"m9 18 3-3-3-3\", key: \"112psh\" }]\n]);\n\nexport { FileCode2 as default };\n//# sourceMappingURL=file-code-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileDown = createLucideIcon(\"FileDown\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M12 18v-6\", key: \"17g6i2\" }],\n [\"path\", { d: \"m9 15 3 3 3-3\", key: \"1npd3o\" }]\n]);\n\nexport { FileDown as default };\n//# sourceMappingURL=file-down.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileText = createLucideIcon(\"FileText\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M10 9H8\", key: \"b1mrlr\" }],\n [\"path\", { d: \"M16 13H8\", key: \"t4e002\" }],\n [\"path\", { d: \"M16 17H8\", key: \"z1uh3a\" }]\n]);\n\nexport { FileText as default };\n//# sourceMappingURL=file-text.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst File = createLucideIcon(\"File\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }]\n]);\n\nexport { File as default };\n//# sourceMappingURL=file.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Film = createLucideIcon(\"Film\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M7 3v18\", key: \"bbkbws\" }],\n [\"path\", { d: \"M3 7.5h4\", key: \"zfgn84\" }],\n [\"path\", { d: \"M3 12h18\", key: \"1i2n21\" }],\n [\"path\", { d: \"M3 16.5h4\", key: \"1230mu\" }],\n [\"path\", { d: \"M17 3v18\", key: \"in4fa5\" }],\n [\"path\", { d: \"M17 7.5h4\", key: \"myr1c1\" }],\n [\"path\", { d: \"M17 16.5h4\", key: \"go4c1d\" }]\n]);\n\nexport { Film as default };\n//# sourceMappingURL=film.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Filter = createLucideIcon(\"Filter\", [\n [\"polygon\", { points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\", key: \"1yg77f\" }]\n]);\n\nexport { Filter as default };\n//# sourceMappingURL=filter.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Focus = createLucideIcon(\"Focus\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }],\n [\"path\", { d: \"M3 7V5a2 2 0 0 1 2-2h2\", key: \"aa7l1z\" }],\n [\"path\", { d: \"M17 3h2a2 2 0 0 1 2 2v2\", key: \"4qcy5o\" }],\n [\"path\", { d: \"M21 17v2a2 2 0 0 1-2 2h-2\", key: \"6vwrx8\" }],\n [\"path\", { d: \"M7 21H5a2 2 0 0 1-2-2v-2\", key: \"ioqczr\" }]\n]);\n\nexport { Focus as default };\n//# sourceMappingURL=focus.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FolderOpen = createLucideIcon(\"FolderOpen\", [\n [\n \"path\",\n {\n d: \"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\",\n key: \"usdka0\"\n }\n ]\n]);\n\nexport { FolderOpen as default };\n//# sourceMappingURL=folder-open.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Folder = createLucideIcon(\"Folder\", [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n]);\n\nexport { Folder as default };\n//# sourceMappingURL=folder.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Globe = createLucideIcon(\"Globe\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n]);\n\nexport { Globe as default };\n//# sourceMappingURL=globe.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Grid2x2 = createLucideIcon(\"Grid2x2\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M3 12h18\", key: \"1i2n21\" }],\n [\"path\", { d: \"M12 3v18\", key: \"108xh3\" }]\n]);\n\nexport { Grid2x2 as default };\n//# sourceMappingURL=grid-2x2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst HardDrive = createLucideIcon(\"HardDrive\", [\n [\"line\", { x1: \"22\", x2: \"2\", y1: \"12\", y2: \"12\", key: \"1y58io\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ],\n [\"line\", { x1: \"6\", x2: \"6.01\", y1: \"16\", y2: \"16\", key: \"sgf278\" }],\n [\"line\", { x1: \"10\", x2: \"10.01\", y1: \"16\", y2: \"16\", key: \"1l4acy\" }]\n]);\n\nexport { HardDrive as default };\n//# sourceMappingURL=hard-drive.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Hexagon = createLucideIcon(\"Hexagon\", [\n [\n \"path\",\n {\n d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\",\n key: \"yt0hxn\"\n }\n ]\n]);\n\nexport { Hexagon as default };\n//# sourceMappingURL=hexagon.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Image = createLucideIcon(\"Image\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n]);\n\nexport { Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Layers = createLucideIcon(\"Layers\", [\n [\n \"path\",\n {\n d: \"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z\",\n key: \"8b97xw\"\n }\n ],\n [\"path\", { d: \"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65\", key: \"dd6zsq\" }],\n [\"path\", { d: \"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65\", key: \"ep9fru\" }]\n]);\n\nexport { Layers as default };\n//# sourceMappingURL=layers.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Lightbulb = createLucideIcon(\"Lightbulb\", [\n [\n \"path\",\n {\n d: \"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\",\n key: \"1gvzjb\"\n }\n ],\n [\"path\", { d: \"M9 18h6\", key: \"x1upvd\" }],\n [\"path\", { d: \"M10 22h4\", key: \"ceow96\" }]\n]);\n\nexport { Lightbulb as default };\n//# sourceMappingURL=lightbulb.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst List = createLucideIcon(\"List\", [\n [\"path\", { d: \"M3 12h.01\", key: \"nlz23k\" }],\n [\"path\", { d: \"M3 18h.01\", key: \"1tta3j\" }],\n [\"path\", { d: \"M3 6h.01\", key: \"1rqtza\" }],\n [\"path\", { d: \"M8 12h13\", key: \"1za7za\" }],\n [\"path\", { d: \"M8 18h13\", key: \"1lx6n3\" }],\n [\"path\", { d: \"M8 6h13\", key: \"ik3vkj\" }]\n]);\n\nexport { List as default };\n//# sourceMappingURL=list.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Maximize2 = createLucideIcon(\"Maximize2\", [\n [\"polyline\", { points: \"15 3 21 3 21 9\", key: \"mznyad\" }],\n [\"polyline\", { points: \"9 21 3 21 3 15\", key: \"1avn1i\" }],\n [\"line\", { x1: \"21\", x2: \"14\", y1: \"3\", y2: \"10\", key: \"ota7mn\" }],\n [\"line\", { x1: \"3\", x2: \"10\", y1: \"21\", y2: \"14\", key: \"1atl0r\" }]\n]);\n\nexport { Maximize2 as default };\n//# sourceMappingURL=maximize-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Minimize2 = createLucideIcon(\"Minimize2\", [\n [\"polyline\", { points: \"4 14 10 14 10 20\", key: \"11kfnr\" }],\n [\"polyline\", { points: \"20 10 14 10 14 4\", key: \"rlmsce\" }],\n [\"line\", { x1: \"14\", x2: \"21\", y1: \"10\", y2: \"3\", key: \"o5lafz\" }],\n [\"line\", { x1: \"3\", x2: \"10\", y1: \"21\", y2: \"14\", key: \"1atl0r\" }]\n]);\n\nexport { Minimize2 as default };\n//# sourceMappingURL=minimize-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Minus = createLucideIcon(\"Minus\", [[\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }]]);\n\nexport { Minus as default };\n//# sourceMappingURL=minus.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Moon = createLucideIcon(\"Moon\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\", key: \"a7tn18\" }]\n]);\n\nexport { Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MousePointer2 = createLucideIcon(\"MousePointer2\", [\n [\n \"path\",\n {\n d: \"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z\",\n key: \"edeuup\"\n }\n ]\n]);\n\nexport { MousePointer2 as default };\n//# sourceMappingURL=mouse-pointer-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Move3d = createLucideIcon(\"Move3d\", [\n [\"path\", { d: \"M5 3v16h16\", key: \"1mqmf9\" }],\n [\"path\", { d: \"m5 19 6-6\", key: \"jh6hbb\" }],\n [\"path\", { d: \"m2 6 3-3 3 3\", key: \"tkyvxa\" }],\n [\"path\", { d: \"m18 16 3 3-3 3\", key: \"1d4glt\" }]\n]);\n\nexport { Move3d as default };\n//# sourceMappingURL=move-3d.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Music = createLucideIcon(\"Music\", [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n]);\n\nexport { Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Package = createLucideIcon(\"Package\", [\n [\n \"path\",\n {\n d: \"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\",\n key: \"1a0edw\"\n }\n ],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }],\n [\"path\", { d: \"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7\", key: \"yx3hmr\" }],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }]\n]);\n\nexport { Package as default };\n//# sourceMappingURL=package.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Paintbrush = createLucideIcon(\"Paintbrush\", [\n [\"path\", { d: \"m14.622 17.897-10.68-2.913\", key: \"vj2p1u\" }],\n [\n \"path\",\n {\n d: \"M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z\",\n key: \"18tc5c\"\n }\n ],\n [\n \"path\",\n {\n d: \"M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15\",\n key: \"ytzfxy\"\n }\n ]\n]);\n\nexport { Paintbrush as default };\n//# sourceMappingURL=paintbrush.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Pin = createLucideIcon(\"Pin\", [\n [\"path\", { d: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n]);\n\nexport { Pin as default };\n//# sourceMappingURL=pin.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Plus = createLucideIcon(\"Plus\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n]);\n\nexport { Plus as default };\n//# sourceMappingURL=plus.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Puzzle = createLucideIcon(\"Puzzle\", [\n [\n \"path\",\n {\n d: \"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z\",\n key: \"w46dr5\"\n }\n ]\n]);\n\nexport { Puzzle as default };\n//# sourceMappingURL=puzzle.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RefreshCw = createLucideIcon(\"RefreshCw\", [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n]);\n\nexport { RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst SearchX = createLucideIcon(\"SearchX\", [\n [\"path\", { d: \"m13.5 8.5-5 5\", key: \"1cs55j\" }],\n [\"path\", { d: \"m8.5 8.5 5 5\", key: \"a8mexj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"path\", { d: \"m21 21-4.3-4.3\", key: \"1qie3q\" }]\n]);\n\nexport { SearchX as default };\n//# sourceMappingURL=search-x.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Settings2 = createLucideIcon(\"Settings2\", [\n [\"path\", { d: \"M20 7h-9\", key: \"3s1dr2\" }],\n [\"path\", { d: \"M14 17H5\", key: \"gfn3mx\" }],\n [\"circle\", { cx: \"17\", cy: \"17\", r: \"3\", key: \"18b49y\" }],\n [\"circle\", { cx: \"7\", cy: \"7\", r: \"3\", key: \"dfmy0x\" }]\n]);\n\nexport { Settings2 as default };\n//# sourceMappingURL=settings-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Settings = createLucideIcon(\"Settings\", [\n [\n \"path\",\n {\n d: \"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\",\n key: \"1qme2f\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Settings as default };\n//# sourceMappingURL=settings.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Shapes = createLucideIcon(\"Shapes\", [\n [\n \"path\",\n {\n d: \"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z\",\n key: \"1bo67w\"\n }\n ],\n [\"rect\", { x: \"3\", y: \"14\", width: \"7\", height: \"7\", rx: \"1\", key: \"1bkyp8\" }],\n [\"circle\", { cx: \"17.5\", cy: \"17.5\", r: \"3.5\", key: \"w3z12y\" }]\n]);\n\nexport { Shapes as default };\n//# sourceMappingURL=shapes.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ShieldCheck = createLucideIcon(\"ShieldCheck\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { ShieldCheck as default };\n//# sourceMappingURL=shield-check.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst SlidersHorizontal = createLucideIcon(\"SlidersHorizontal\", [\n [\"line\", { x1: \"21\", x2: \"14\", y1: \"4\", y2: \"4\", key: \"obuewd\" }],\n [\"line\", { x1: \"10\", x2: \"3\", y1: \"4\", y2: \"4\", key: \"1q6298\" }],\n [\"line\", { x1: \"21\", x2: \"12\", y1: \"12\", y2: \"12\", key: \"1iu8h1\" }],\n [\"line\", { x1: \"8\", x2: \"3\", y1: \"12\", y2: \"12\", key: \"ntss68\" }],\n [\"line\", { x1: \"21\", x2: \"16\", y1: \"20\", y2: \"20\", key: \"14d8ph\" }],\n [\"line\", { x1: \"12\", x2: \"3\", y1: \"20\", y2: \"20\", key: \"m0wm8r\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"2\", y2: \"6\", key: \"14e1ph\" }],\n [\"line\", { x1: \"8\", x2: \"8\", y1: \"10\", y2: \"14\", key: \"1i6ji0\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"18\", y2: \"22\", key: \"1lctlv\" }]\n]);\n\nexport { SlidersHorizontal as default };\n//# sourceMappingURL=sliders-horizontal.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst StarOff = createLucideIcon(\"StarOff\", [\n [\"path\", { d: \"M8.34 8.34 2 9.27l5 4.87L5.82 21 12 17.77 18.18 21l-.59-3.43\", key: \"16m0ql\" }],\n [\"path\", { d: \"M18.42 12.76 22 9.27l-6.91-1L12 2l-1.44 2.91\", key: \"1vt8nq\" }],\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }]\n]);\n\nexport { StarOff as default };\n//# sourceMappingURL=star-off.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"Star\", [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Table2 = createLucideIcon(\"Table2\", [\n [\n \"path\",\n {\n d: \"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\",\n key: \"gugj83\"\n }\n ]\n]);\n\nexport { Table2 as default };\n//# sourceMappingURL=table-2.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Type = createLucideIcon(\"Type\", [\n [\"polyline\", { points: \"4 7 4 4 20 4 20 7\", key: \"1nosan\" }],\n [\"line\", { x1: \"9\", x2: \"15\", y1: \"20\", y2: \"20\", key: \"swin9y\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"4\", y2: \"20\", key: \"1tx1rr\" }]\n]);\n\nexport { Type as default };\n//# sourceMappingURL=type.js.map\n","import type { InspectorFormField, InspectorFormFieldKind, InspectorFormGroup } from './InspectorForm';\n/** @param {string | number | undefined | null} key */\nexport function formatInspectorFieldLabel(key?: string | number | null) {\n if (key == null) return '';\n const text = String(key);\n if (!text) return '';\n return text\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .split(/[\\s_-]+/)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\n/** @param {unknown} value */\nfunction numericComponents(value: unknown): number[] | null {\n if (!Array.isArray(value)) return null;\n if (value.length === 0) return null;\n if (!value.every((entry) => typeof entry === 'number' && Number.isFinite(entry))) return null;\n return value;\n}\n\n/** @param {unknown} schema */\nfunction schemaTypeName(schema: unknown) {\n if (typeof schema === 'string') return schema.toLowerCase();\n if (schema && typeof schema === 'object' && 'type' in schema && typeof schema.type === 'string') return schema.type.toLowerCase();\n return '';\n}\n\nconst HEX_COLOR = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n\n/** @param {unknown} value */\nfunction isAssetRefRecord(value: unknown) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = (value as Record<string, unknown>);\n const identity = record.guid ?? record.id;\n if (typeof identity !== 'string' || identity.trim() === '') return false;\n return Object.values(record).every((entry) => entry == null || typeof entry !== 'object');\n}\n\n/**\n * @param {unknown} schema\n * @param {unknown} value\n * @returns {'bool' | 'number' | 'vector3' | 'vector4' | 'color' | 'asset' | 'enum' | 'text'}\n */\nexport function resolveInspectorFieldKind(schema: unknown, value: unknown): InspectorFormFieldKind {\n const type = schemaTypeName(schema);\n\n if (typeof value === 'boolean' || type.includes('bool')) return 'bool';\n if (typeof value === 'number' || type === 'f32' || type === 'f64' || type === 'i32' || type === 'u32' || type === 'number') {\n return 'number';\n }\n\n const array = numericComponents(value);\n if (array?.length === 3) return 'vector3';\n if (array?.length === 4) return 'vector4';\n\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const record = (value as Record<string, unknown>);\n if (typeof record.x === 'number' && typeof record.y === 'number' && typeof record.z === 'number') {\n return typeof record.w === 'number' ? 'vector4' : 'vector3';\n }\n }\n\n if (type.includes('enum') || (schema && typeof schema === 'object' && Array.isArray((schema as Record<string, unknown>).enum))) {\n return 'enum';\n }\n if (type.includes('color') || (typeof value === 'string' && HEX_COLOR.test(value))) return 'color';\n if (type.includes('asset') || type.includes('guid') || type.includes('ref') || isAssetRefRecord(value)) return 'asset';\n\n if (Array.isArray(value) || (value && typeof value === 'object')) return 'text';\n return 'text';\n}\n\n/** @param {unknown} value @param {string} kind */\nexport function normalizeInspectorFieldValue(value: unknown, kind: string): InspectorFormField[\"value\"] {\n if (value === undefined) return 'Unavailable';\n\n if (kind === 'vector3') {\n const array = numericComponents(value);\n if (array?.length === 3) return { x: array[0], y: array[1], z: array[2] };\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const record = (value as Record<string, number>);\n return { x: record.x ?? 0, y: record.y ?? 0, z: record.z ?? 0 };\n }\n return { x: 0, y: 0, z: 0 };\n }\n\n if (kind === 'vector4') {\n const array = numericComponents(value);\n if (array?.length === 4) return { x: array[0], y: array[1], z: array[2], w: array[3] };\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const record = (value as Record<string, number>);\n return { x: record.x ?? 0, y: record.y ?? 0, z: record.z ?? 0, w: record.w ?? 0 };\n }\n return { x: 0, y: 0, z: 0, w: 0 };\n }\n\n if (kind === 'asset' && value && typeof value === 'object' && !Array.isArray(value)) {\n const record = (value as Record<string, unknown>);\n return String(record.name ?? record.guid ?? record.id ?? '');\n }\n\n if (kind === 'bool' || kind === 'number') return value;\n if (typeof value === 'object') return JSON.stringify(value);\n return value;\n}\n\n/** @param {string} key @param {string} label @param {string} kind @param {unknown} value @param {string[] | undefined} [options] */\nfunction freezeField(key: string, label: string, kind: InspectorFormFieldKind, value: unknown, options?: string[]): InspectorFormField {\n return Object.freeze({\n key,\n label,\n kind,\n value: normalizeInspectorFieldValue(value, kind),\n ...(options === undefined ? {} : { options: Object.freeze([...options]) }),\n });\n}\n\nfunction freezeGroup(group: InspectorFormGroup): InspectorFormGroup {\n return Object.freeze({\n key: group.key,\n name: group.name,\n ...(group.category === undefined ? {} : { category: group.category }),\n fields: Object.freeze(group.fields),\n ...(group.groups === undefined ? {} : { groups: Object.freeze(group.groups) }),\n });\n}\n\n/** @param {unknown} value */\nfunction objectListItems(value: unknown): Record<string, unknown>[] | null {\n if (!Array.isArray(value) || value.length === 0) return null;\n if (!value.every((entry) => entry && typeof entry === 'object' && !Array.isArray(entry))) return null;\n return value;\n}\n\n/**\n * @param {Record<string, unknown>} record\n * @param {string} keyPrefix\n */\nfunction partitionRecord(record: Record<string, unknown>, keyPrefix: string): { fields: InspectorFormField[]; groups: InspectorFormGroup[] } {\n const fields: InspectorFormField[] = [];\n const groups: InspectorFormGroup[] = [];\n for (const [key, value] of Object.entries(record)) {\n if (value === undefined || value === null) continue;\n if (typeof value === 'string' && value.trim() === '') continue;\n const path = keyPrefix ? `${keyPrefix}.${key}` : key;\n const name = formatInspectorFieldLabel(key);\n const listed = objectListItems(value);\n if (listed) {\n const child = arrayToGroup(listed, path, name);\n if (child) groups.push(child);\n continue;\n }\n const kind = resolveInspectorFieldKind(undefined, value);\n const nestedObject = value && typeof value === 'object' && !Array.isArray(value)\n && kind !== 'vector3' && kind !== 'vector4' && kind !== 'asset';\n if (nestedObject) {\n const child = recordToGroup((value as Record<string, unknown>), path, name, 'all');\n if (child) groups.push(child);\n continue;\n }\n fields.push(freezeField(key, name, kind, value));\n }\n return { fields, groups };\n}\n\n/** @param {Record<string, unknown>} record @param {string} key @param {string} name @param {'all' | 'type' | 'capability'} category */\nfunction recordToGroup(record: Record<string, unknown>, key: string, name: string, category: NonNullable<InspectorFormGroup[\"category\"]>): InspectorFormGroup | null {\n const partitioned = partitionRecord(record, key);\n if (partitioned.fields.length === 0 && partitioned.groups.length === 0) return null;\n return freezeGroup({\n key,\n name,\n category,\n fields: partitioned.fields,\n groups: partitioned.groups,\n });\n}\n\n/** @param {Record<string, unknown>[]} items @param {string} path @param {string} name */\nfunction arrayToGroup(items: Record<string, unknown>[], path: string, name: string): InspectorFormGroup | null {\n const groups: InspectorFormGroup[] = [];\n for (const [index, item] of items.entries()) {\n const label = item.name ?? item.id ?? item.slotName ?? item.guid ?? String(index);\n const child = recordToGroup(item, `${path}.${index}`, formatInspectorFieldLabel(String(label)), 'type');\n if (child) groups.push(child);\n }\n if (groups.length === 0) return null;\n return freezeGroup({\n key: path,\n name,\n category: 'capability',\n fields: [],\n groups,\n });\n}\n\nfunction identityFactFields(inspection: Record<string, unknown>): InspectorFormField[] {\n const asset = inspection.asset && typeof inspection.asset === 'object' ? inspection.asset as Record<string, unknown> : {};\n const source = inspection.source && typeof inspection.source === 'object' ? inspection.source as Record<string, unknown> : {};\n const ddc = inspection.ddc && typeof inspection.ddc === 'object' ? inspection.ddc as Record<string, unknown> : {};\n const facts: [string, string, unknown][] = [\n ['guid', 'GUID', inspection.guid ?? asset.guid],\n ['kind', 'Kind', asset.kind],\n ['name', 'Name', asset.name],\n ['path', 'Path', asset.path],\n ['source', 'Source', source.path ?? asset.sourcePath],\n ['revision', 'Revision', inspection.revision ?? asset.revision ?? source.revision],\n ['package', 'Package', asset.packageId ?? asset.packageUrl],\n ['ddc', 'DDC', ddc.state],\n ];\n const fields = [];\n for (const [key, label, value] of facts) {\n if (value === undefined || value === null) continue;\n if (typeof value === 'string' && value.trim() === '') continue;\n fields.push(freezeField(key, label, resolveInspectorFieldKind(undefined, value), value));\n }\n return fields;\n}\n\n/**\n * @param {unknown} inspection\n * @param {{ identityTitle?: string }} [options]\n */\nexport function inspectorFormGroupsFromInspection(inspection: unknown, options: { identityTitle?: string } = {}): readonly InspectorFormGroup[] {\n if (!inspection || typeof inspection !== 'object' || Array.isArray(inspection)) {\n return Object.freeze([]);\n }\n const identityTitle = options.identityTitle ?? 'Asset';\n const identityFields = identityFactFields(inspection as Record<string, unknown>);\n const meta = (inspection as Record<string, unknown>).meta;\n let metaFields: InspectorFormField[] = [];\n let nested: InspectorFormGroup[] = [];\n if (meta && typeof meta === 'object' && !Array.isArray(meta)) {\n const partitioned = partitionRecord((meta as Record<string, unknown>), 'meta');\n metaFields = partitioned.fields;\n nested = partitioned.groups;\n }\n const groups: InspectorFormGroup[] = [];\n const fields = [...identityFields, ...metaFields];\n if (fields.length) {\n groups.push(freezeGroup({\n key: 'identity',\n name: identityTitle,\n category: 'type',\n fields,\n groups: [],\n }));\n }\n groups.push(...nested);\n return Object.freeze(groups);\n}\n","import { Box } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport {\n Checkbox,\n CollapsibleSection,\n PropertyRow,\n Select,\n TextInput,\n} from './components';\nimport { inspectorFormGroupsFromInspection } from './inspector-form-model';\n\nexport type InspectorFormFieldKind =\n | 'vector3'\n | 'vector4'\n | 'number'\n | 'bool'\n | 'text'\n | 'enum'\n | 'color'\n | 'asset';\n\nexport type InspectorFormField = {\n key: string;\n label: string;\n kind: InspectorFormFieldKind;\n value: unknown;\n options?: readonly string[];\n};\n\nexport type InspectorFormGroup = {\n key: string;\n name: string;\n category?: 'all' | 'type' | 'capability';\n fields: readonly InspectorFormField[];\n groups?: readonly InspectorFormGroup[];\n};\n\nconst READ_ONLY = { readOnly: true, tabIndex: -1 as const };\n\nfunction VectorField({\n axes,\n vector,\n}: {\n axes: readonly ('x' | 'y' | 'z' | 'w')[];\n vector: Record<'x' | 'y' | 'z' | 'w', number>;\n}) {\n return (\n <span className={`fx-inspector-form__vec${axes.length > 3 ? ' fx-inspector-form__vec--4' : ''}`}>\n {axes.map((axis) => (\n <span className={`fx-inspector-form__vcell fx-inspector-form__vcell--${axis}`} key={axis}>\n <span className=\"fx-inspector-form__axis\">{axis.toUpperCase()}</span>\n <span className=\"fx-inspector-form__numfield\">\n <TextInput\n className=\"fx-inspector-form__input fx-inspector-form__input--number\"\n type=\"number\"\n value={vector[axis]}\n {...READ_ONLY}\n />\n </span>\n </span>\n ))}\n </span>\n );\n}\n\nexport function InspectorFieldControl({ field }: { field: InspectorFormField }) {\n if (field.kind === 'vector3' && typeof field.value === 'object' && field.value !== null) {\n const vector = field.value as Record<'x' | 'y' | 'z', number>;\n return <VectorField axes={['x', 'y', 'z']} vector={{ ...vector, w: 0 }} />;\n }\n if (field.kind === 'vector4' && typeof field.value === 'object' && field.value !== null) {\n const vector = field.value as Record<'x' | 'y' | 'z' | 'w', number>;\n return <VectorField axes={['x', 'y', 'z', 'w']} vector={vector} />;\n }\n if (field.kind === 'bool') {\n return (\n <Checkbox\n className=\"fx-inspector-form__checkbox\"\n checked={field.value === true}\n disabled\n hideLabel\n label={field.label}\n />\n );\n }\n if (field.kind === 'enum') {\n return (\n <span className=\"fx-inspector-form__select\">\n <Select className=\"fx-inspector-form__input\" value={String(field.value)} disabled>\n {(field.options ?? [String(field.value)]).map((option) => (\n <option value={option} key={option}>{option}</option>\n ))}\n </Select>\n </span>\n );\n }\n if (field.kind === 'color') {\n return (\n <span className=\"fx-inspector-form__color\">\n <span className=\"fx-inspector-form__swatch\" aria-hidden style={{ background: String(field.value) }} />\n <TextInput className=\"fx-inspector-form__input fx-inspector-form__input--hex\" value={String(field.value)} {...READ_ONLY} />\n </span>\n );\n }\n if (field.kind === 'asset') {\n const empty = !String(field.value);\n return (\n <span className=\"fx-inspector-form__asset\">\n <span className={`fx-inspector-form__asset-thumb${empty ? ' is-empty' : ''}`}>{empty ? null : <Box size={16} />}</span>\n <span className=\"fx-inspector-form__asset-body\">\n <span className=\"fx-inspector-form__asset-combo\">\n <span className={`fx-inspector-form__asset-label${empty ? ' is-empty' : ''}`}>{empty ? 'None' : String(field.value)}</span>\n </span>\n </span>\n </span>\n );\n }\n return (\n <span className={field.kind === 'number' ? 'fx-inspector-form__numfield fx-inspector-form__numfield--solo' : undefined}>\n <TextInput\n className={`fx-inspector-form__input ${field.kind === 'number' ? 'fx-inspector-form__input--number' : 'fx-inspector-form__input--text'}`}\n type={field.kind === 'number' ? 'number' : 'text'}\n value={String(field.value)}\n {...READ_ONLY}\n />\n </span>\n );\n}\n\nfunction FormGroup({\n group,\n nested = false,\n}: {\n group: InspectorFormGroup;\n nested?: boolean;\n}) {\n const [open, setOpen] = useState(true);\n const category = group.category === 'all' ? 'all' : group.category === 'capability' ? 'cap' : 'type';\n return (\n <div className={`fx-inspector-form__group fx-inspector-form__group--${category}${nested ? ' is-nested' : ''}`}>\n <CollapsibleSection\n open={open}\n onOpenChange={setOpen}\n title={(\n <span className=\"fx-inspector-form__title\">\n <span className=\"fx-inspector-form__icon\"><Box size={13} strokeWidth={1.7} /></span>\n <span>{group.name}</span>\n </span>\n )}\n >\n <div className=\"fx-inspector-form__fields\">\n {group.fields.map((field) => (\n <div className=\"fx-inspector-form__row\" key={field.key} data-testid={`inspector-form-field-${group.key}-${field.key}`}>\n <PropertyRow className=\"fx-inspector-form__property\" label={<span title={field.key}>{field.label}</span>}>\n <InspectorFieldControl field={field} />\n </PropertyRow>\n </div>\n ))}\n {(group.groups ?? []).map((child) => (\n <FormGroup group={child} key={child.key} nested />\n ))}\n </div>\n </CollapsibleSection>\n </div>\n );\n}\n\nexport function InspectorForm({\n groups,\n inspection,\n identityTitle,\n className,\n empty,\n}: {\n groups?: readonly InspectorFormGroup[];\n inspection?: unknown;\n identityTitle?: string;\n className?: string;\n empty?: ReactNode;\n}) {\n const resolved = groups ?? inspectorFormGroupsFromInspection(\n inspection,\n identityTitle === undefined ? {} : { identityTitle },\n ) as InspectorFormGroup[];\n if (resolved.length === 0) return empty ?? null;\n return (\n <div className={['fx-inspector-form', className].filter(Boolean).join(' ')} data-view-readonly=\"true\">\n {resolved.map((group) => (\n <FormGroup group={group} key={group.key} />\n ))}\n </div>\n );\n}\n","import { AlertCircle, Check, Copy, X } from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Button, IconButton, Text } from './components';\n\nexport type ErrorNoticeInput = {\n title: ReactNode;\n description?: ReactNode;\n hint?: ReactNode;\n code?: string;\n details?: ReactNode;\n detailsLabel?: string;\n /** Plain text written to the clipboard when the user copies details. */\n copyText?: string;\n copyLabel?: string;\n copiedLabel?: string;\n /** Default true: stays until the user clicks close. */\n persistent?: boolean;\n /** Used only when persistent is false. */\n duration?: number;\n closeLabel?: string;\n onDismiss?: () => void;\n};\n\nexport type ErrorNoticeItem = ErrorNoticeInput & {\n id: number;\n persistent: boolean;\n};\n\nexport type ErrorNoticeProps = ErrorNoticeInput & {\n id?: number;\n onClose: () => void;\n};\n\ntype Listener = () => void;\n\nlet nextId = 0;\nlet notices: ErrorNoticeItem[] = [];\nconst listeners = new Set<Listener>();\nconst timers = new Map<number, ReturnType<typeof setTimeout>>();\n\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\nexport function subscribeErrorNotices(listener: Listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nexport function getErrorNotices() {\n return notices;\n}\n\nexport function showErrorNotice(input: ErrorNoticeInput): number {\n const id = ++nextId;\n const persistent = input.persistent !== false;\n notices = [...notices, { ...input, id, persistent }];\n emit();\n if (!persistent) {\n const duration = input.duration ?? 8000;\n if (duration > 0) {\n timers.set(\n id,\n setTimeout(() => {\n timers.delete(id);\n dismissErrorNotice(id);\n }, duration),\n );\n }\n }\n return id;\n}\n\nexport function dismissErrorNotice(id: number) {\n const timer = timers.get(id);\n if (timer !== undefined) {\n clearTimeout(timer);\n timers.delete(id);\n }\n const current = notices.find((notice) => notice.id === id);\n if (!current) return;\n notices = notices.filter((notice) => notice.id !== id);\n emit();\n current.onDismiss?.();\n}\n\nfunction resolveCopyText(copyText?: string, details?: ReactNode) {\n if (typeof copyText === 'string' && copyText.trim() !== '') return copyText;\n if (typeof details === 'string' && details.trim() !== '') return details;\n return undefined;\n}\n\nexport function ErrorNotice({\n title,\n description,\n hint,\n code,\n details,\n detailsLabel = '详细信息',\n copyText,\n copyLabel = '复制详细信息',\n copiedLabel = '已复制',\n closeLabel = '关闭错误提示',\n onClose,\n}: ErrorNoticeProps) {\n const [copied, setCopied] = useState(false);\n const clipboardText = resolveCopyText(copyText, details);\n\n useEffect(() => {\n if (!copied) return undefined;\n const timer = setTimeout(() => setCopied(false), 2000);\n return () => clearTimeout(timer);\n }, [copied]);\n\n async function handleCopyDetails() {\n if (!clipboardText) return;\n try {\n await navigator.clipboard.writeText(clipboardText);\n setCopied(true);\n } catch {\n // Clipboard may be unavailable; ignore rather than surfacing a second error.\n }\n }\n\n return (\n <div className=\"fx-error-notice fx-status--error\" role=\"alert\">\n <AlertCircle className=\"fx-icon fx-error-notice__icon\" aria-hidden />\n <div className=\"fx-error-notice__body\">\n <strong className=\"fx-error-notice__title\">{title}</strong>\n {code ? (\n <Text as=\"code\" variant=\"code\" className=\"fx-error-notice__code\">\n {code}\n </Text>\n ) : null}\n {description ? (\n <Text variant=\"body\" className=\"fx-error-notice__description\">\n {description}\n </Text>\n ) : null}\n {hint ? (\n <Text variant=\"caption\" className=\"fx-error-notice__hint\">\n {hint}\n </Text>\n ) : null}\n {details ? (\n <details className=\"fx-error-notice__details\" open>\n <summary className=\"fx-error-notice__details-summary\">\n <span>{detailsLabel}</span>\n {clipboardText ? (\n <Button\n type=\"button\"\n variant=\"quiet\"\n size=\"compact\"\n className=\"fx-error-notice__copy\"\n leadingIcon={\n copied ? (\n <Check className=\"fx-icon\" aria-hidden />\n ) : (\n <Copy className=\"fx-icon\" aria-hidden />\n )\n }\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n void handleCopyDetails();\n }}\n >\n {copied ? copiedLabel : copyLabel}\n </Button>\n ) : null}\n </summary>\n <pre className=\"fx-error-notice__details-body\">{details}</pre>\n </details>\n ) : null}\n </div>\n <IconButton\n label={closeLabel}\n icon={<X className=\"fx-icon\" />}\n variant=\"quiet\"\n size=\"compact\"\n onClick={onClose}\n />\n </div>\n );\n}\n\nconst STACK_PEEK = 8;\nconst STACK_GAP = 8;\nconst STACK_MAX_BEHIND = 2;\n\nfunction stackMetrics(items: ErrorNoticeItem[], heights: Record<number, number>, expanded: boolean) {\n const heightOf = (id: number) => heights[id] ?? 0;\n const frontHeight = items[0] ? heightOf(items[0].id) : 0;\n let y = 0;\n const slots = items.map((item, index) => {\n const height = heightOf(item.id);\n const peekIndex = Math.min(index, STACK_MAX_BEHIND);\n const slotY = expanded ? y : Math.max(0, frontHeight - height + peekIndex * STACK_PEEK);\n if (expanded) y += height + STACK_GAP;\n return {\n id: item.id,\n y: slotY,\n z: items.length - index,\n interactive: expanded || index === 0,\n };\n });\n const stackHeight = expanded\n ? items.reduce((sum, item, index) => sum + heightOf(item.id) + (index > 0 ? STACK_GAP : 0), 0)\n : frontHeight + Math.min(Math.max(items.length - 1, 0), STACK_MAX_BEHIND) * STACK_PEEK;\n return { slots, stackHeight };\n}\n\nexport function ErrorNoticeStack({\n items,\n inline = false,\n onClose,\n}: {\n items: ErrorNoticeItem[];\n inline?: boolean;\n onClose: (id: number) => void;\n}) {\n const [expanded, setExpanded] = useState(false);\n const [heights, setHeights] = useState<Record<number, number>>({});\n const slotNodes = useRef(new Map<number, HTMLDivElement>());\n const stacked = items.length > 1;\n const open = stacked && expanded;\n\n const measure = useCallback(() => {\n setHeights((current) => {\n let changed = Object.keys(current).length !== items.length;\n const next: Record<number, number> = {};\n for (const item of items) {\n const height = slotNodes.current.get(item.id)?.offsetHeight ?? 0;\n next[item.id] = height;\n if (current[item.id] !== height) changed = true;\n }\n return changed ? next : current;\n });\n }, [items]);\n\n useLayoutEffect(() => {\n measure();\n const observer = new ResizeObserver(measure);\n for (const item of items) {\n const node = slotNodes.current.get(item.id);\n if (node) observer.observe(node);\n }\n return () => observer.disconnect();\n }, [items, measure]);\n\n const { slots, stackHeight } = useMemo(\n () => stackMetrics(items, heights, open),\n [items, heights, open],\n );\n\n if (items.length === 0) return null;\n\n return (\n <div\n className={['fx-error-notice-region', 'fx-ui', inline && 'fx-error-notice-region--inline']\n .filter(Boolean)\n .join(' ')}\n aria-live=\"assertive\"\n data-count={items.length}\n data-expanded={open ? '' : undefined}\n data-ready={items.every((item) => (heights[item.id] ?? 0) > 0) ? '' : undefined}\n onMouseEnter={stacked ? () => setExpanded(true) : undefined}\n onMouseLeave={stacked ? () => setExpanded(false) : undefined}\n onFocus={stacked ? () => setExpanded(true) : undefined}\n onBlur={\n stacked\n ? (event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setExpanded(false);\n }\n }\n : undefined\n }\n style={\n {\n '--fx-error-notice-stack-height': `${stackHeight}px`,\n } as CSSProperties\n }\n >\n {items.map((notice) => {\n const slot = slots.find((entry) => entry.id === notice.id)!;\n return (\n <div\n className=\"fx-error-notice-slot\"\n key={notice.id}\n ref={(node) => {\n if (node) slotNodes.current.set(notice.id, node);\n else slotNodes.current.delete(notice.id);\n }}\n data-inert={slot.interactive ? undefined : ''}\n style={\n {\n '--fx-error-notice-y': `${slot.y}px`,\n '--fx-error-notice-z': slot.z,\n } as CSSProperties\n }\n >\n <ErrorNotice\n {...notice}\n {...(notice.closeLabel === undefined ? {} : { closeLabel: notice.closeLabel })}\n onClose={() => onClose(notice.id)}\n />\n </div>\n );\n })}\n </div>\n );\n}\n\nexport function ErrorNoticeHost() {\n const items = useSyncExternalStore(subscribeErrorNotices, getErrorNotices, getErrorNotices);\n const ordered = useMemo(() => [...items].reverse(), [items]);\n if (typeof document === 'undefined' || ordered.length === 0) return null;\n return createPortal(\n <ErrorNoticeStack items={ordered} onClose={dismissErrorNotice} />,\n document.body,\n );\n}\n","import {\n Box,\n Clapperboard,\n File,\n FileCode2,\n FileText,\n Image,\n Music,\n Package,\n Puzzle,\n Settings2,\n Type,\n type LucideIcon,\n} from 'lucide-react';\n\nexport type PageKind =\n | 'scene'\n | 'model'\n | 'image'\n | 'audio'\n | 'font'\n | 'pack'\n | 'code'\n | 'doc'\n | 'config'\n | 'plugin';\n\nconst ICON_BY_KIND: Record<PageKind, LucideIcon> = {\n scene: Clapperboard,\n model: Box,\n image: Image,\n audio: Music,\n font: Type,\n pack: Package,\n code: FileCode2,\n doc: FileText,\n config: Settings2,\n plugin: Puzzle,\n};\n\nconst EXT_KIND: ReadonlyArray<readonly [readonly string[], PageKind]> = [\n [['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'py'], 'code'],\n [['md', 'markdown', 'txt'], 'doc'],\n [['png', 'jpg', 'jpeg', 'webp', 'gif', 'svg', 'ico', 'hdr'], 'image'],\n [['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'opus'], 'audio'],\n [['glb', 'gltf', 'fbx'], 'model'],\n [['ttf', 'otf', 'woff2'], 'font'],\n];\n\nexport function pageKindOf(input: { typeId: string; resourcePath?: string }): PageKind {\n const path = (input.resourcePath ?? '').toLowerCase();\n if (path) {\n if (path.endsWith('.scene.json')) return 'scene';\n if (path.endsWith('.pack.json')) return path.includes('scene') ? 'scene' : 'pack';\n const ext = path.split(/[?#]/u, 1)[0]?.split('.').pop() ?? '';\n for (const [exts, kind] of EXT_KIND) if (exts.includes(ext)) return kind;\n if (path.endsWith('forge.json') || path.endsWith('package.json')) return 'config';\n }\n const id = input.typeId.toLowerCase();\n for (const kind of Object.keys(ICON_BY_KIND) as PageKind[]) {\n if (id.includes(kind)) return kind;\n }\n if (id.includes('scene') || id.includes('level')) return 'scene';\n if (id.includes('workbench') || id.includes('wb-') || id.includes('plugin')) return 'plugin';\n return 'config';\n}\n\nexport function iconForPage(input: { typeId: string; resourcePath?: string }): LucideIcon {\n const path = (input.resourcePath ?? '').toLowerCase();\n const kind = pageKindOf(input);\n if (!path && kind === 'config' && !input.typeId.toLowerCase().includes('config')) return File;\n return ICON_BY_KIND[kind];\n}\n","import {\n ChevronsRight,\n Minus,\n Pin,\n Plus,\n X,\n type LucideIcon,\n} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport { ContextMenu, type MenuItem } from './components';\nimport { iconForPage } from './page-tab-icons';\n\nexport type PageTabItem = {\n id: string;\n title: string;\n typeId: string;\n icon?: LucideIcon;\n resourcePath?: string;\n closable?: boolean;\n dirty?: boolean;\n tooltip?: string;\n};\n\nexport type PageTabNewTypeOption = {\n typeId: string;\n title: string;\n};\n\nexport type PageTabStripLabels = {\n tabList: string;\n newPage: string;\n allPages: string;\n noOpenableTypes: string;\n closeTab: string;\n contextClose: string;\n contextCloseOthers: string;\n contextCloseToRight: string;\n};\n\nconst DEFAULT_LABELS: PageTabStripLabels = {\n tabList: '已打开的页面',\n newPage: '新建页面',\n allPages: '全部页面',\n noOpenableTypes: '没有可新建的类型',\n closeTab: '关闭标签页',\n contextClose: '关闭',\n contextCloseOthers: '关闭其他',\n contextCloseToRight: '关闭右侧',\n};\n\nfunction classes(...names: Array<string | false | null | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nfunction useAnchoredMenu(anchorRef: RefObject<HTMLElement | null>) {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const openAtAnchor = useCallback(\n (align: 'start' | 'end' = 'start') => {\n const el = anchorRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n setPosition({\n x: align === 'end' ? rect.right : rect.left,\n y: rect.bottom + 4,\n });\n setOpen(true);\n },\n [anchorRef],\n );\n\n return { open, setOpen, position, openAtAnchor };\n}\n\nexport type PageTabStripProps = {\n pages: readonly PageTabItem[];\n activePageId: string | null;\n onSelect: (pageId: string) => void;\n onClose?: (pageId: string) => void;\n onCloseOthers?: (pageId: string) => void;\n onCloseToRight?: (pageId: string) => void;\n onReorder?: (pageId: string, toIndex: number) => void;\n newPageTypes?: readonly PageTabNewTypeOption[];\n onNewPage?: (typeId: string) => void;\n labels?: Partial<PageTabStripLabels>;\n className?: string;\n};\n\nexport function PageTabStrip({\n pages,\n activePageId,\n onSelect,\n onClose,\n onCloseOthers,\n onCloseToRight,\n onReorder,\n newPageTypes = [],\n onNewPage,\n labels: labelOverrides,\n className,\n}: PageTabStripProps): ReactElement | null {\n const labels = { ...DEFAULT_LABELS, ...labelOverrides };\n const listRef = useRef<HTMLDivElement>(null);\n const newButtonRef = useRef<HTMLButtonElement>(null);\n const overflowButtonRef = useRef<HTMLButtonElement>(null);\n const dragKeyRef = useRef<string | null>(null);\n const [draggingKey, setDraggingKey] = useState<string | null>(null);\n const [overflowing, setOverflowing] = useState(false);\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number; pageId: string } | null>(\n null,\n );\n const newMenu = useAnchoredMenu(newButtonRef);\n const overflowMenu = useAnchoredMenu(overflowButtonRef);\n const menuId = useId();\n\n useEffect(() => {\n if (!activePageId) return;\n listRef.current\n ?.querySelector(`[data-page-id=\"${CSS.escape(activePageId)}\"]`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [activePageId]);\n\n useEffect(() => {\n const el = listRef.current;\n if (!el) return;\n const measure = () => setOverflowing(el.scrollWidth - el.clientWidth > 1);\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n return () => ro.disconnect();\n }, [pages.length]);\n\n useEffect(() => {\n const end = () => {\n dragKeyRef.current = null;\n setDraggingKey(null);\n };\n window.addEventListener('pointerup', end);\n return () => window.removeEventListener('pointerup', end);\n }, []);\n\n const handleTabClick = useCallback(\n (pageId: string) => {\n if (pageId === activePageId) return;\n onSelect(pageId);\n },\n [activePageId, onSelect],\n );\n\n const handlePointerDown = useCallback((event: ReactPointerEvent, pageId: string) => {\n if (event.button !== 0) return;\n if ((event.target as HTMLElement).closest('[data-page-close]')) return;\n dragKeyRef.current = pageId;\n }, []);\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent) => {\n const dragKey = dragKeyRef.current;\n if (!dragKey || event.buttons !== 1 || !onReorder) return;\n const overId = (event.target as HTMLElement)\n .closest('[data-page-id]')\n ?.getAttribute('data-page-id');\n if (!overId || overId === dragKey) return;\n const toIndex = pages.findIndex((page) => page.id === overId);\n if (toIndex < 0) return;\n setDraggingKey(dragKey);\n onReorder(dragKey, toIndex);\n },\n [onReorder, pages],\n );\n\n const closePage = useCallback(\n (pageId: string) => {\n onClose?.(pageId);\n },\n [onClose],\n );\n\n if (pages.length === 0) return null;\n\n const contextPage = contextMenu\n ? pages.find((page) => page.id === contextMenu.pageId)\n : undefined;\n const contextItems: MenuItem[] = contextMenu && contextPage\n ? [\n {\n id: 'close',\n label: labels.contextClose,\n icon: <X className=\"fx-icon\" aria-hidden />,\n disabled: !contextPage.closable,\n onSelect: () => closePage(contextMenu.pageId),\n },\n {\n id: 'close-others',\n label: labels.contextCloseOthers,\n icon: <Minus className=\"fx-icon\" aria-hidden />,\n onSelect: () => {\n onCloseOthers?.(contextMenu.pageId);\n onSelect(contextMenu.pageId);\n },\n },\n {\n id: 'close-right',\n label: labels.contextCloseToRight,\n icon: <ChevronsRight className=\"fx-icon\" aria-hidden />,\n onSelect: () => onCloseToRight?.(contextMenu.pageId),\n },\n ]\n : [];\n\n const newPageMenuItems: MenuItem[] =\n newPageTypes.length === 0\n ? [{ id: 'empty', label: labels.noOpenableTypes, disabled: true }]\n : newPageTypes.map((type) => {\n const Icon = iconForPage({ typeId: type.typeId });\n return {\n id: type.typeId,\n label: type.title,\n icon: <Icon className=\"fx-icon\" aria-hidden />,\n onSelect: () => onNewPage?.(type.typeId),\n };\n });\n\n const overflowMenuItems: MenuItem[] = pages.map((page) => {\n const Icon = page.icon ?? iconForPage({ typeId: page.typeId, ...(page.resourcePath === undefined ? {} : { resourcePath: page.resourcePath }) });\n const mark = activePageId === page.id ? '●' : '○';\n const label = page.dirty ? `${page.title} *` : page.title;\n return {\n id: page.id,\n label: (\n <>\n <span className=\"fx-page-tab-menu__mark\">{mark}</span>\n <span className=\"fx-page-tab-menu__label\">{label}</span>\n </>\n ),\n icon: <Icon className=\"fx-icon\" aria-hidden />,\n selected: activePageId === page.id,\n onSelect: () => onSelect(page.id),\n };\n });\n\n return (\n <div className={classes('fx-page-tab-strip', 'fx-ui', className)} data-fx-slot=\"PageTabs\">\n <div className=\"fx-page-tab-strip__scope\">\n <div\n ref={listRef}\n className=\"fx-page-tab-strip__list\"\n role=\"tablist\"\n aria-label={labels.tabList}\n onPointerMove={handlePointerMove}\n >\n {pages.map((page) => {\n const active = activePageId === page.id;\n const Icon =\n page.icon ?? iconForPage({ typeId: page.typeId, ...(page.resourcePath === undefined ? {} : { resourcePath: page.resourcePath }) });\n const closable = page.closable !== false;\n const tabClass = classes(\n 'fx-page-tab',\n active && 'is-active',\n !closable && 'is-pinned',\n page.dirty && 'is-dirty',\n draggingKey === page.id && 'is-drag',\n );\n return (\n <button\n key={page.id}\n type=\"button\"\n className={tabClass}\n role=\"tab\"\n aria-selected={active}\n data-page-id={page.id}\n data-dirty={page.dirty ? '1' : undefined}\n title={page.tooltip ?? page.resourcePath ?? page.title}\n onClick={() => handleTabClick(page.id)}\n onAuxClick={(event) => {\n if (event.button === 1 && closable) {\n event.preventDefault();\n closePage(page.id);\n }\n }}\n onContextMenu={(event) => {\n event.preventDefault();\n setContextMenu({ x: event.clientX, y: event.clientY, pageId: page.id });\n }}\n onPointerDown={(event) => handlePointerDown(event, page.id)}\n >\n <Icon className=\"fx-page-tab__icon\" aria-hidden />\n <span className=\"fx-page-tab__label\">{page.title}</span>\n {page.dirty ? <span className=\"fx-page-tab__dirty\" aria-hidden>*</span> : null}\n {closable ? (\n <span\n className=\"fx-page-tab__close\"\n role=\"button\"\n aria-label={labels.closeTab}\n data-page-close={page.id}\n onClick={(event) => {\n event.stopPropagation();\n closePage(page.id);\n }}\n >\n <X className=\"fx-page-tab__close-icon\" aria-hidden />\n </span>\n ) : (\n <Pin className=\"fx-page-tab__pin\" aria-hidden />\n )}\n </button>\n );\n })}\n </div>\n\n <button\n ref={newButtonRef}\n type=\"button\"\n className=\"fx-page-tab-btn fx-page-tab-btn--new\"\n title={labels.newPage}\n aria-label={labels.newPage}\n aria-haspopup=\"menu\"\n aria-expanded={newMenu.open}\n aria-controls={`${menuId}-new`}\n onClick={() => {\n if (newMenu.open) newMenu.setOpen(false);\n else newMenu.openAtAnchor('start');\n }}\n >\n <Plus className=\"fx-page-tab-btn__icon\" aria-hidden />\n </button>\n\n <div className=\"fx-page-tab-strip__actions\">\n {overflowing ? (\n <button\n ref={overflowButtonRef}\n type=\"button\"\n className=\"fx-page-tab-btn\"\n title={labels.allPages}\n aria-haspopup=\"menu\"\n aria-expanded={overflowMenu.open}\n aria-controls={`${menuId}-overflow`}\n onClick={() => {\n if (overflowMenu.open) overflowMenu.setOpen(false);\n else overflowMenu.openAtAnchor('end');\n }}\n >\n <ChevronsRight className=\"fx-page-tab-btn__icon\" aria-hidden />\n <span>{pages.length}</span>\n </button>\n ) : null}\n </div>\n </div>\n\n <ContextMenu\n open={contextMenu !== null}\n x={contextMenu?.x ?? 0}\n y={contextMenu?.y ?? 0}\n items={contextItems}\n onClose={() => setContextMenu(null)}\n label={contextPage?.title ?? labels.tabList}\n />\n\n <ContextMenu\n open={newMenu.open}\n x={newMenu.position.x}\n y={newMenu.position.y}\n items={newPageMenuItems}\n onClose={() => newMenu.setOpen(false)}\n label={labels.newPage}\n containerProps={{ id: `${menuId}-new` }}\n />\n\n <ContextMenu\n open={overflowMenu.open}\n x={overflowMenu.position.x}\n y={overflowMenu.position.y}\n items={overflowMenuItems}\n onClose={() => overflowMenu.setOpen(false)}\n label={labels.allPages}\n containerProps={{ id: `${menuId}-overflow` }}\n />\n </div>\n );\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.8\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.8\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.8\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.8\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.8\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","let sequence = 0;\n\n/**\n * Generate an identifier in both browser and Node consumers. The workspace\n * contract is imported by the frontend bundle, so it must not depend on a\n * Node-only module. `crypto.randomUUID` remains the preferred source while\n * the other branches keep tests and older browser targets deterministic in\n * shape without introducing another runtime.\n */\nexport function createWorkspaceId(prefix = 'workspace') {\n const crypto = globalThis.crypto;\n if (typeof crypto?.randomUUID === 'function') {\n return `${prefix}:${crypto.randomUUID()}`;\n }\n if (typeof crypto?.getRandomValues === 'function') {\n const values = new Uint32Array(4);\n crypto.getRandomValues(values);\n return `${prefix}:${Array.from(values, (value) => value.toString(16).padStart(8, '0')).join('')}`;\n }\n sequence = (sequence + 1) >>> 0;\n return `${prefix}:${Date.now().toString(36)}-${sequence.toString(36)}-${Math.random()\n .toString(36)\n .slice(2)}`;\n}\n","import type { EngineWorkspaceTarget, EngineWorkspaceProject, EngineWorkspaceAsset, EngineWorkspaceCameraResult, EngineWorkspaceAssetBinding } from '@forgeax/engine/app';\nimport { createWorkspaceId } from './id.ts';\nimport { serializeWorkspaceSceneSelection } from './scene-selection.ts';\n\nexport type WorkspaceTarget = Partial<EngineWorkspaceTarget> & Pick<EngineWorkspaceTarget, 'targetId'>;\nexport type WorkspaceProject = EngineWorkspaceProject;\nexport type WorkspaceDdc = { state?: string; guid?: string; desiredKey?: string; receiptUrl?: string; hint?: string };\nexport type WorkspaceAsset = EngineWorkspaceAsset & {\n sourcePath?: string;\n sourceKind?: string; packageId?: string; packageUrl?: string; cookReceiptUrl?: string;\n label?: string; revision?: string; previewable?: boolean; ddc?: WorkspaceDdc;\n};\nexport type WorkspaceInspection = {\n guid?: string; kind?: string; asset?: WorkspaceAsset; source?: { path?: string; kind?: string; revision?: string };\n meta?: Record<string, unknown>; ddc?: WorkspaceDdc; revision?: string;\n};\nexport type WorkspaceSceneSelection = {\n targetId?: string; targetGeneration?: number; primary: { entityId: string; label?: string };\n};\nexport type WorkspaceResourceOpen = { asset: WorkspaceAsset; preview?: WorkspacePreview };\nexport type WorkspaceTab = { tabId: string; kind: string; selected: boolean; state?: string; width?: number; height?: number; target?: WorkspaceTarget | null; targetId?: string; run?: unknown };\nexport type WorkspaceRequest = { apiVersion: string; operation: string; clientId: string; requestId: string; args: Record<string, unknown>; token?: string };\nexport type WorkspacePreview = {\n target: WorkspaceTarget; asset?: WorkspaceAsset | null; assetBinding?: EngineWorkspaceAssetBinding;\n camera?: EngineWorkspaceCameraResult['camera']; cameraVersion?: number; interaction?: Pick<NonNullable<EngineWorkspaceCameraResult['interaction']>, 'interactionId'> | null;\n};\nexport type WorkspaceOpenRequest = {\n requestId: string; sequence: number; asset: WorkspaceAsset; preview?: WorkspacePreview;\n target?: WorkspaceTarget; inspection?: WorkspaceInspection;\n};\nexport type WorkspaceState = {\n apiVersion?: string; revision?: number; selectedTabId?: string | null; tabs?: readonly WorkspaceTab[];\n project?: WorkspaceProject | null; projectTarget?: WorkspaceTarget | null; assets?: readonly WorkspaceAsset[] | null;\n preview?: WorkspacePreview | null; previews?: readonly WorkspacePreview[]; editorPreview?: WorkspacePreview | null;\n play?: { target: WorkspaceTarget; phase?: string } | null; targetBinding?: string;\n inspection?: WorkspaceInspection | null; openRequest?: WorkspaceOpenRequest | null;\n resourceOpens?: Map<string, WorkspaceResourceOpen> | Record<string, WorkspaceResourceOpen>;\n sceneSelection?: WorkspaceSceneSelection | null; workspaceTargetLost?: boolean; projectPhase?: string; browserGeneration?: number;\n};\n\n/**\n * Public wire contract for the user workspace. The contract is deliberately\n * transport agnostic: the CLI and the browser client both send these calls to\n * the same Engine Host service. No command implementation lives in the\n * frontend.\n */\nexport const VIEW_WORKSPACE_API_VERSION = 'forgeax.view.workspace/1';\n\nexport const VIEW_WORKSPACE_SERVICES = Object.freeze({\n capabilities: 'forgeax.view.workspace.capabilities',\n call: 'forgeax.view.workspace.call',\n});\n\n/** Host service for Content Browser source preview. Not a workspace CLI operation. */\nexport const VIEW_FILE_GET_SERVICE = 'forgeax.view.file.get';\n\nexport const VIEW_WORKSPACE_STATE_TOPIC = 'forgeax.view.workspace.state';\n\nexport const VIEW_PAGE_TYPES = Object.freeze({\n editor: 'editor',\n display: 'display',\n plugins: 'plugins',\n material: 'material',\n mesh: 'mesh',\n texture: 'texture',\n asset: 'asset',\n});\n\nexport const VIEW_WORKSPACE_COOK_MODES = Object.freeze(['rebuild', 'cold-cook']);\n\nexport const VIEW_WORKSPACE_CORE_OPERATIONS = Object.freeze([\n 'tabs.get',\n 'tabs.select',\n 'scene.select',\n 'scene.pick',\n 'scene.clear',\n 'project.open',\n 'project.close',\n 'project.reopen',\n]);\n\nexport const VIEW_WORKSPACE_DOMAIN_OPERATIONS = Object.freeze([\n ...VIEW_WORKSPACE_CORE_OPERATIONS,\n 'display.bind', 'display.status',\n 'assets.list',\n 'asset.inspect',\n 'asset-source.rebuild',\n 'asset-source.cold-cook',\n 'asset.open',\n 'runtime-pack.inspect', 'runtime-pack.admit', 'runtime-pack.generate',\n 'runtime-pack.snapshot', 'runtime-pack.restore', 'runtime-pack.withdraw',\n 'runtime-pack.plugin-install', 'runtime-pack.plugin-inspect', 'runtime-pack.plugin-dispose',\n 'runtime-pack.prepare',\n 'play.start', 'play.ready', 'play.stop', 'target.control', 'target.select', 'target.pick', 'entity.highlight',\n 'preview.close',\n 'preview.capture',\n 'preview.resize',\n 'camera.get',\n 'camera.begin',\n 'camera.update',\n 'camera.commit',\n 'camera.abort',\n 'scene-tree.get',\n 'entity.inspect',\n 'entity.focus',\n 'run.start', 'run.status', 'run.reload', 'run.stop', 'run.capture', 'run.eval', 'run.find', 'run.focus', 'run.camera.get', 'run.camera.set', 'run.camera.release',\n]);\n\n// The CLI/help surface is derived from both ordinary workspace and inspector\n// plugin contributions. Inspector calls use their own Engine Host services.\nexport const VIEW_WORKSPACE_OPERATIONS = Object.freeze([\n ...VIEW_WORKSPACE_DOMAIN_OPERATIONS,\n 'plugins.sources',\n 'plugins.inspect',\n 'plugins.watch',\n]);\n\nexport const VIEW_DISPLAY_TAB_ID = 'forgeax-cli-display';\nexport const VIEW_WORKSPACE_TAB_ID = 'forgeax-user-workspace';\n\nconst OPERATION_SET = new Set(VIEW_WORKSPACE_OPERATIONS);\n\nconst OPAQUE_WORKSPACE_DIAGNOSTICS = new Set([\n 'the contribution executor to return a result',\n 'the producer operation to succeed',\n 'the workspace command to complete',\n 'Inspect the resident View workspace and retry.',\n 'Inspect the provider snapshot and retry.',\n 'Inspect detail and repair the owning producer before retrying.',\n 'Inspect the browser page failure details.',\n 'Inspect the Engine command or tool result.',\n 'Refresh the inspector source and retry.',\n 'the View workspace provider to complete the operation',\n 'the View API provider to complete the operation',\n]);\n\nexport function isOpaqueWorkspaceDiagnostic(value: unknown) {\n if (typeof value !== 'string') return true;\n const text = value.trim();\n if (text === '') return true;\n if (OPAQUE_WORKSPACE_DIAGNOSTICS.has(text)) return true;\n if (/^the browser workspace operation \\S+ to complete$/.test(text)) return true;\n if (/^(?:workspace|inspector) operation \\S+ to complete$/.test(text)) return true;\n if (/^Engine .+ to succeed$/.test(text)) return true;\n return false;\n}\n\nfunction workspaceErrorMessage(code: string, expected: string | undefined, hint: string | undefined) {\n const parts: string[] = [];\n for (const value of [expected, hint]) {\n if (typeof value !== 'string') continue;\n const text = value.trim();\n if (!text || parts.includes(text)) continue;\n parts.push(text);\n }\n const real = parts.filter((text) => !isOpaqueWorkspaceDiagnostic(text));\n const chosen = real.length > 0 ? real : parts;\n return chosen.length > 0 ? `${code}: ${chosen.join(' — ')}` : String(code ?? 'view-workspace-error');\n}\n\nexport class ViewWorkspaceError extends Error {\n declare readonly code: string;\n declare readonly expected: string | undefined;\n declare readonly hint: string | undefined;\n declare readonly detail: Record<string, unknown>;\n constructor(code: string, expected: string | undefined, hint: string | undefined, detail: Record<string, unknown> = {}) {\n super(workspaceErrorMessage(code, expected, hint));\n this.name = 'ViewWorkspaceError';\n this.code = code;\n this.expected = expected;\n this.hint = hint;\n this.detail = detail;\n }\n}\n\nexport function workspaceError(code: string, expected: string | undefined, hint: string | undefined, detail: Record<string, unknown> = {}) {\n return new ViewWorkspaceError(code, expected, hint, detail);\n}\n\nexport function requireWorkspaceString(value: unknown, field: string) {\n if (typeof value !== 'string' || value.trim() === '') {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be a non-empty string`,\n `Provide a non-empty ${field}.`,\n { field },\n );\n }\n return value;\n}\n\nexport function requireWorkspaceObject(value: unknown, field: string) {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be an object`,\n `Provide an object for ${field}.`,\n { field },\n );\n }\n return value as Record<string, unknown>;\n}\n\nexport function requireWorkspaceInteger(value: unknown, field: string, { min = 0 } = {}) {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < min) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be an integer >= ${min}`,\n `Provide a valid ${field}.`,\n { field, min },\n );\n }\n return value;\n}\n\nexport function cloneWorkspaceValue<T>(value: T): T {\n if (value === undefined) return value;\n return JSON.parse(JSON.stringify(value));\n}\n\nexport function jsonUnchanged(left: unknown, right: unknown) {\n if (left === right) return true;\n if (left == null || right == null) return left === right;\n return JSON.stringify(left) === JSON.stringify(right);\n}\n\nfunction omitUiTelemetry(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(omitUiTelemetry);\n if (!value || typeof value !== 'object') return value;\n const next: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value)) {\n if (key === 'frameId' || key === 'cameraVersion' || key === 'interaction' || key === 'inputVersion') continue;\n if (key === 'camera' && nested && typeof nested === 'object' && !Array.isArray(nested)) {\n if ('control' in nested && nested.control !== undefined) next.camera = { control: nested.control };\n continue;\n }\n next[key] = omitUiTelemetry(nested);\n }\n return next;\n}\n\n/**\n * Stable UI identity for a workspace snapshot. Omits per-frame telemetry so\n * camera orbit, submitted frame ids, play input versions, and revision bumps\n * do not rebuild panels. Nested `tabs[].target.frameId` is included in the walk.\n */\nexport function workspaceUiFingerprint(state: WorkspaceState | null | undefined) {\n if (!state) return '';\n const { revision: _revision, ...rest } = state;\n return JSON.stringify(omitUiTelemetry(rest));\n}\n\nexport function createWorkspaceRequest(operation: string, args: Record<string, unknown> = {}, { clientId, token, requestId }: { clientId?: string; token?: string; requestId?: string } = {}) {\n if (!OPERATION_SET.has(operation)) {\n throw workspaceError(\n 'view-workspace-operation-unknown',\n 'operation to be present in the View workspace API',\n 'Refresh the workspace API capabilities and use a supported operation.',\n { operation },\n );\n }\n const request: WorkspaceRequest = {\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n operation,\n clientId: requireWorkspaceString(clientId, 'clientId'),\n requestId: requestId === undefined ? createWorkspaceId('request') : requireWorkspaceString(requestId, 'requestId'),\n args: requireWorkspaceObject(args, 'args'),\n };\n if (token !== undefined) request.token = requireWorkspaceString(token, 'token');\n return Object.freeze(request);\n}\n\nexport function assertWorkspaceRequest(value: unknown) {\n const request = requireWorkspaceObject(value, 'request');\n if (request.apiVersion !== VIEW_WORKSPACE_API_VERSION) {\n throw workspaceError(\n 'view-workspace-version-mismatch',\n `API version ${VIEW_WORKSPACE_API_VERSION}`,\n 'Install a matching View workspace client.',\n { actual: request.apiVersion, expected: VIEW_WORKSPACE_API_VERSION },\n );\n }\n if (typeof request.operation !== 'string' || !OPERATION_SET.has(request.operation)) {\n throw workspaceError(\n 'view-workspace-operation-unknown',\n 'operation to be present in the View workspace API',\n 'Refresh the workspace API capabilities and use a supported operation.',\n { operation: request.operation },\n );\n }\n requireWorkspaceString(request.clientId, 'clientId');\n requireWorkspaceString(request.requestId, 'requestId');\n requireWorkspaceObject(request.args, 'args');\n return request as WorkspaceRequest;\n}\n\nexport function workspaceCapabilities({\n ready = true,\n headed = ready,\n reason,\n code,\n operations = VIEW_WORKSPACE_OPERATIONS,\n}: { ready?: boolean; headed?: boolean; reason?: unknown; code?: unknown; operations?: readonly string[] } = {}) {\n return {\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n ready: Boolean(ready),\n headed: Boolean(headed),\n operations: [...operations],\n ...(reason === undefined ? {} : { reason: String(reason) }),\n ...(code === undefined ? {} : { code: String(code) }),\n };\n}\n\nexport function serializeWorkspaceTarget(target: WorkspaceTarget): WorkspaceTarget;\nexport function serializeWorkspaceTarget(target: null | undefined): null;\nexport function serializeWorkspaceTarget(target: WorkspaceTarget | null | undefined): WorkspaceTarget | null;\nexport function serializeWorkspaceTarget(target: WorkspaceTarget | null | undefined): WorkspaceTarget | null {\n if (!target) return null;\n requireWorkspaceString(target.targetId, 'target.targetId');\n return {\n targetId: target.targetId,\n ...(target.generation === undefined ? {} : { generation: target.generation }),\n ...(target.sessionId === undefined ? {} : { sessionId: String(target.sessionId) }),\n ...(target.worldId === undefined ? {} : { worldId: String(target.worldId) }),\n headed: target.headed === true,\n ...(target.frameId === undefined ? {} : { frameId: target.frameId }),\n ...(target.width === undefined ? {} : { width: target.width }),\n ...(target.height === undefined ? {} : { height: target.height }),\n ...(target.url === undefined ? {} : { url: String(target.url) }),\n ...(target.surface === undefined || typeof target.surface !== 'string'\n ? {}\n : { surface: target.surface }),\n };\n}\n\nexport function serializeWorkspaceProject(project: WorkspaceProject | null | undefined) {\n if (!project) return null;\n requireWorkspaceString(project.id, 'project.id');\n requireWorkspaceString(project.root, 'project.root');\n return {\n id: project.id,\n root: project.root,\n ...(project.name === undefined ? {} : { name: String(project.name) }),\n ...(project.revision === undefined ? {} : { revision: String(project.revision) }),\n };\n}\n\nexport function serializeWorkspaceAsset(asset: WorkspaceAsset) {\n requireWorkspaceString(asset.guid, 'asset.guid');\n requireWorkspaceString(asset.kind, 'asset.kind');\n return {\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: String(asset.name) }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: String(asset.sourceKey) }),\n ...(asset.path === undefined ? {} : { path: String(asset.path) }),\n ...(asset.sourcePath === undefined ? {} : { sourcePath: String(asset.sourcePath) }),\n ...(asset.sourceKind === undefined ? {} : { sourceKind: String(asset.sourceKind) }),\n ...(asset.packageId === undefined ? {} : { packageId: String(asset.packageId) }),\n ...(asset.packageUrl === undefined ? {} : { packageUrl: String(asset.packageUrl) }),\n ...(asset.cookReceiptUrl === undefined ? {} : { cookReceiptUrl: String(asset.cookReceiptUrl) }),\n ...(asset.label === undefined ? {} : { label: String(asset.label) }),\n ...(asset.revision === undefined ? {} : { revision: String(asset.revision) }),\n ...(asset.previewable === undefined ? {} : { previewable: Boolean(asset.previewable) }),\n ...(serializeWorkspaceDdc(asset.ddc) === undefined ? {} : { ddc: serializeWorkspaceDdc(asset.ddc) }),\n };\n}\n\nexport function serializeWorkspaceDdc(ddc: WorkspaceDdc | null | undefined) {\n if (!ddc || typeof ddc !== 'object' || Array.isArray(ddc)) return undefined;\n const state = ddc.state === undefined ? undefined : String(ddc.state);\n return cloneWorkspaceValue({\n ...(state === undefined ? {} : { state }),\n ...(ddc.guid === undefined ? {} : { guid: String(ddc.guid) }),\n ...(ddc.desiredKey === undefined ? {} : { desiredKey: String(ddc.desiredKey) }),\n ...(ddc.receiptUrl === undefined ? {} : { receiptUrl: String(ddc.receiptUrl) }),\n ...(ddc.hint === undefined ? {} : { hint: String(ddc.hint) }),\n });\n}\n\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest): WorkspaceOpenRequest;\nexport function serializeWorkspaceOpenRequest(request: null | undefined): null;\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest | null | undefined): WorkspaceOpenRequest | null;\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest | null | undefined): WorkspaceOpenRequest | null {\n if (!request) return null;\n requireWorkspaceString(request.requestId, 'openRequest.requestId');\n requireWorkspaceInteger(request.sequence, 'openRequest.sequence', { min: 1 });\n const asset = serializeWorkspaceAsset(request.asset);\n const previewTarget = request.preview?.target ?? request.target;\n const previewAsset = request.preview?.asset ?? (previewTarget ? asset : undefined);\n return {\n requestId: request.requestId,\n sequence: request.sequence,\n asset,\n ...(previewTarget\n ? {\n preview: {\n asset: previewAsset ? serializeWorkspaceAsset(previewAsset) : asset,\n target: serializeWorkspaceTarget(previewTarget),\n },\n }\n : {}),\n ...(request.inspection\n ? { inspection: serializeWorkspaceInspection(request.inspection) }\n : {}),\n };\n}\n\nexport function serializeWorkspaceResourceOpens(opens: WorkspaceState['resourceOpens']) {\n if (!opens || typeof opens !== 'object') return undefined;\n const entries = opens instanceof Map ? [...opens.entries()] : Object.entries(opens);\n const serialized: Record<string, { asset: WorkspaceAsset; preview?: WorkspacePreview }> = {};\n for (const [kind, entry] of entries) {\n if (typeof kind !== 'string' || !entry?.asset) continue;\n const asset = serializeWorkspaceAsset(entry.asset);\n const previewTarget = entry.preview?.target;\n serialized[kind] = {\n asset,\n ...(previewTarget\n ? {\n preview: {\n asset: serializeWorkspaceAsset(entry.preview?.asset ?? asset),\n target: serializeWorkspaceTarget(previewTarget),\n },\n }\n : {}),\n };\n }\n return serialized;\n}\n\nexport function workspaceInspectionFactRows(inspection: WorkspaceInspection | null | undefined) {\n if (!inspection || typeof inspection !== 'object' || Array.isArray(inspection)) {\n return Object.freeze([]);\n }\n const asset: Partial<WorkspaceAsset> = inspection.asset && typeof inspection.asset === 'object' ? inspection.asset : {};\n const rows: { label: string; value: string }[] = [];\n const add = (label: string, value: unknown) => {\n if (value === undefined || value === null) return;\n if (typeof value === 'string' && value.trim() === '') return;\n rows.push(\n Object.freeze({\n label,\n value: typeof value === 'object' ? JSON.stringify(value) : String(value),\n }),\n );\n };\n add('GUID', inspection.guid ?? asset.guid);\n add('Kind', asset.kind);\n add('Name', asset.name);\n add('Path', asset.path);\n add('Source', inspection.source?.path ?? asset.sourcePath);\n add('Revision', inspection.revision ?? asset.revision ?? inspection.source?.revision);\n add('Package', asset.packageId ?? asset.packageUrl);\n if (inspection.ddc?.state) add('DDC', inspection.ddc.state);\n const meta = inspection.meta;\n if (meta && typeof meta === 'object' && !Array.isArray(meta)) {\n for (const [key, value] of Object.entries(meta)) add(key, value);\n }\n return Object.freeze(rows);\n}\n\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection): WorkspaceInspection;\nexport function serializeWorkspaceInspection(inspection: null | undefined): null;\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection | null | undefined): WorkspaceInspection | null;\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection | null | undefined): WorkspaceInspection | null {\n if (!inspection) return null;\n const guid = requireWorkspaceString(inspection.guid ?? inspection.asset?.guid, 'inspection.guid');\n const asset = serializeWorkspaceAsset({\n ...inspection.asset,\n guid,\n kind: requireWorkspaceString(inspection.asset?.kind ?? inspection.kind, 'inspection.kind'),\n });\n const source = inspection.source;\n return {\n guid,\n asset,\n ...(source === undefined || source === null\n ? {}\n : {\n source: {\n ...(source.path === undefined ? {} : { path: String(source.path) }),\n ...(source.kind === undefined ? {} : { kind: String(source.kind) }),\n ...(source.revision === undefined ? {} : { revision: String(source.revision) }),\n },\n }),\n ...(inspection.meta !== null && typeof inspection.meta === 'object' && !Array.isArray(inspection.meta)\n ? { meta: cloneWorkspaceValue(inspection.meta) }\n : {}),\n ...(serializeWorkspaceDdc(inspection.ddc) === undefined\n ? {}\n : { ddc: serializeWorkspaceDdc(inspection.ddc) }),\n ...(inspection.revision === undefined ? {} : { revision: String(inspection.revision) }),\n };\n}\n\nexport function serializeWorkspaceState(state: WorkspaceState): WorkspaceState {\n return cloneWorkspaceValue({\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n revision: state.revision,\n selectedTabId: state.selectedTabId,\n tabs: state.tabs,\n project: serializeWorkspaceProject(state.project),\n projectTarget: serializeWorkspaceTarget(state.projectTarget),\n assets: Array.isArray(state.assets) ? state.assets.map((asset) => serializeWorkspaceAsset(asset)) : null,\n preview: state.preview\n ? {\n asset: state.preview.asset ? serializeWorkspaceAsset(state.preview.asset) : null,\n target: serializeWorkspaceTarget(state.preview.target),\n assetBinding: state.preview.assetBinding,\n camera: state.preview.camera,\n cameraVersion: state.preview.cameraVersion,\n interaction: state.preview.interaction\n ? { interactionId: state.preview.interaction.interactionId }\n : null,\n }\n : null,\n previews: (state.previews ?? []).map(preview => ({ target: serializeWorkspaceTarget(preview.target), asset: preview.asset ? serializeWorkspaceAsset(preview.asset) : null, assetBinding: preview.assetBinding })),\n editorPreview: state.editorPreview ? { target: serializeWorkspaceTarget(state.editorPreview.target), asset: state.editorPreview.asset ? serializeWorkspaceAsset(state.editorPreview.asset) : null, assetBinding: state.editorPreview.assetBinding } : null,\n play: state.play ? { target: serializeWorkspaceTarget(state.play.target), phase: state.play.phase } : null,\n targetBinding: state.targetBinding ?? 'editor',\n inspection: serializeWorkspaceInspection(state.inspection),\n openRequest: serializeWorkspaceOpenRequest(state.openRequest),\n resourceOpens: serializeWorkspaceResourceOpens(state.resourceOpens),\n sceneSelection: serializeWorkspaceSceneSelection(state.sceneSelection),\n workspaceTargetLost: state.workspaceTargetLost === true,\n ...(state.projectPhase === undefined ? {} : { projectPhase: state.projectPhase }),\n ...(state.browserGeneration === undefined ? {} : { browserGeneration: state.browserGeneration }),\n });\n}\n","import type { WorkspaceState } from './contract.ts';\nexport type WorkspaceStateClient = { subscribe(listener: (state: WorkspaceState) => void): () => void; getState?: () => Promise<WorkspaceState> };\nexport type WorkspaceStateReader = { getSnapshot(): WorkspaceState | null; subscribe(listener: () => void): () => void; dispose(): void };\n\nimport { workspaceUiFingerprint } from './contract.ts';\n\n/** Cancel a panel's reads at state publication, without waiting for React cleanup. */\nexport function createWorkspaceObservation(reader: WorkspaceStateReader, isCurrent: (state: WorkspaceState | null) => boolean) {\n const controller = new AbortController();\n let unsubscribe: (() => void) | undefined;\n const dispose = () => {\n controller.abort();\n unsubscribe?.();\n unsubscribe = undefined;\n };\n const check = () => {\n if (!isCurrent(reader.getSnapshot())) dispose();\n };\n unsubscribe = reader.subscribe(check);\n // subscribe may synchronously publish, before its disposer has been assigned.\n if (controller.signal.aborted) dispose();\n else check();\n return { signal: controller.signal, dispose };\n}\n\n/** A subscription owns its transport lease; snapshots remain Engine/View API results. */\nexport function createWorkspaceStateReader(client: WorkspaceStateClient | undefined): WorkspaceStateReader {\n if (!client || typeof client.subscribe !== 'function') {\n return { getSnapshot: () => null, subscribe: () => () => {}, dispose() {} };\n }\n let snapshot: WorkspaceState | null = null;\n let published: WorkspaceState | null = null;\n let publishedFingerprint = '';\n const listeners = new Set<() => void>();\n let transportUnsubscribe: (() => void) | undefined;\n let generation = 0;\n const stop = () => {\n generation++;\n transportUnsubscribe?.();\n transportUnsubscribe = undefined;\n };\n const start = () => {\n const current = ++generation;\n const accept = (next: WorkspaceState) => {\n if (current !== generation || !next) return;\n if (snapshot !== null && (next.revision ?? 0) < (snapshot.revision ?? 0)) return;\n snapshot = next;\n const fingerprint = workspaceUiFingerprint(next);\n if (fingerprint === publishedFingerprint) return;\n publishedFingerprint = fingerprint;\n published = next;\n for (const listener of listeners) listener();\n };\n transportUnsubscribe = client.subscribe(accept) ?? (() => {});\n void client.getState?.().then(accept).catch(() => {});\n };\n return {\n getSnapshot: () => published,\n subscribe(listener: () => void) {\n listeners.add(listener);\n if (listeners.size === 1) start();\n return () => {\n if (!listeners.delete(listener)) return;\n if (listeners.size === 0) stop();\n };\n },\n dispose() { stop(); listeners.clear(); snapshot = null; published = null; publishedFingerprint = ''; },\n };\n}\n","import { isOpaqueWorkspaceDiagnostic } from './contract.ts';\n\nexport function workspaceDiagnosticRecord(value: unknown): Record<string, unknown> { return value && typeof value === 'object' ? value as Record<string, unknown> : {}; }\ntype ErrorContext = { signal?: AbortSignal; operation?: string };\ntype JsonValue = string | number | boolean | null | undefined | JsonValue[] | { [key: string]: JsonValue };\n\nfunction errorText(value: unknown) {\n return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;\n}\n\nfunction pickDiagnostic(candidates: readonly unknown[]) {\n const texts = candidates.map(errorText).filter((value) => value !== undefined);\n const real = texts.filter((value) => !isOpaqueWorkspaceDiagnostic(value));\n return real[0] ?? texts[0];\n}\n\nfunction collectDiagnosticSources(value: unknown, sources: Record<string, unknown>[] = [], depth = 0) {\n if (depth > 6 || value === undefined || value === null) return sources;\n if (typeof value !== 'object') return sources;\n const record = workspaceDiagnosticRecord(value);\n sources.push(record);\n if (Array.isArray(value)) {\n for (const entry of value) collectDiagnosticSources(entry, sources, depth + 1);\n return sources;\n }\n collectDiagnosticSources(record.detail, sources, depth + 1);\n collectDiagnosticSources(record.payload, sources, depth + 1);\n collectDiagnosticSources(record.failure, sources, depth + 1);\n collectDiagnosticSources(record.cause, sources, depth + 1);\n collectDiagnosticSources(record.error, sources, depth + 1);\n return sources;\n}\n\nfunction serializeErrorValue(value: unknown, seen = new Set<object>(), depth = 0): JsonValue {\n if (value === undefined) return undefined;\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? value : String(value);\n if (typeof value !== 'object') return String(value);\n if (seen.has(value) || depth > 8) return '[Circular]';\n seen.add(value);\n const record = workspaceDiagnosticRecord(value);\n if (typeof record.message === 'string' && (value instanceof Error || typeof record.name === 'string')) {\n const serialized = {\n ...(typeof record.name === 'string' ? { name: record.name } : {}),\n message: record.message,\n ...(typeof record.code === 'string' ? { code: record.code } : {}),\n ...(typeof record.expected === 'string' ? { expected: record.expected } : {}),\n ...(typeof record.hint === 'string' ? { hint: record.hint } : {}),\n ...(record.detail === undefined\n ? {}\n : { detail: serializeErrorValue(record.detail, seen, depth + 1) }),\n ...(typeof record.stack === 'string' ? { stack: record.stack } : {}),\n };\n return serialized;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => serializeErrorValue(entry, seen, depth + 1));\n }\n const result: { [key: string]: JsonValue } = {};\n for (const [key, entry] of Object.entries(value)) {\n result[key] = serializeErrorValue(entry, seen, depth + 1);\n }\n return result;\n}\n\nexport function isIgnorableWorkspaceCommandError(error: unknown, { signal, operation }: ErrorContext = {}) {\n if (signal?.aborted) return true;\n if (!error || typeof error !== 'object') return false;\n const record = workspaceDiagnosticRecord(error);\n if (record.name === 'AbortError') return true;\n const code = record.code;\n // Snapshot readers recover once and render any remaining stale source as an\n // explicit partial result. The request still rejects for exact-generation callers.\n if (operation === 'plugins.inspect' && code === 'view-inspector-stale-generation') return true;\n return code === 'ABORT_ERR' || code === 'ERR_CANCELED';\n}\n\nexport function formatWorkspaceCommandError(error: unknown) {\n const sources = collectDiagnosticSources(error);\n const code = pickDiagnostic(sources.map((source) => source?.code));\n const expected = pickDiagnostic(sources.map((source) => source?.expected));\n const hint = pickDiagnostic([\n ...sources.map((source) => source?.hint),\n ...sources.map((source) => source?.message),\n expected,\n ]);\n const rawMessage = error instanceof Error\n ? error.message\n : error === undefined || error === null\n ? undefined\n : String(error);\n const description = pickDiagnostic([expected, hint, rawMessage, code]);\n const visibleHint = hint && hint !== description ? hint : undefined;\n let detailsText: string | undefined;\n try {\n const json = JSON.stringify(serializeErrorValue(error), null, 2);\n if (json && json !== '{}' && json !== '[]' && json !== 'null') detailsText = json;\n } catch {\n detailsText = rawMessage;\n }\n return {\n code,\n description,\n hint: visibleHint,\n detailsText,\n };\n}\n\nconst listeners = new Set<(error: unknown, context: ErrorContext) => void>();\n\nexport function subscribeWorkspaceCommandErrors(listener: (error: unknown, context: ErrorContext) => void) {\n if (typeof listener !== 'function') {\n throw new TypeError('subscribeWorkspaceCommandErrors requires a function');\n }\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nexport function reportWorkspaceCommandError(error: unknown, context: ErrorContext = {}) {\n if (isIgnorableWorkspaceCommandError(error, context)) return;\n for (const listener of listeners) {\n try {\n listener(error, context);\n } catch {\n // Presenter failures must not replace the original command error.\n }\n }\n}\n","import type { ViewWorkspaceClient, WorkspaceCallOptions } from './client.ts';\nimport type { WorkspaceState } from './contract.ts';\nimport { workspaceDiagnosticRecord } from './command-error.ts';\ntype TraceData = Record<string, unknown>;\ntype TraceEvent = TraceData & { t: number; phase: string; event: string };\ntype Latencies = Map<string, number[]>;\ntype CaptureSession = {\n id: string; startedAtPerf: number; startedAtT: number; meta: TraceData;\n counters: Map<string, number>; rpcLatencies: Latencies; events: TraceEvent[];\n renderDurations: number[]; layoutDurations: number[]; mutationRecords: number;\n childListMutations: number; syncTargetSurfaces: number; targetSurfaceRemovals: number;\n targetSurfaceReorders: number; maxInFlight: number; maxRpcMs: number; maxRpcQueue: number; pendingRpc?: number;\n};\ntype LatencyStats = NonNullable<ReturnType<typeof summarizeLatencies>>;\ntype SessionHintSource = { durationMs: number; counters: Record<string, number>; render: LatencyStats | null };\ntype CaptureRecord = SessionHintSource & {\n id: string; reason: string; startedAtT: number; endedAtT: number; meta: TraceData;\n rpc: Record<string, LatencyStats | null>; events: TraceEvent[]; hints: string[];\n dom: { mutationRecords: number; childListNodeChanges: number; layoutSamples: number; syncTargetSurfaces: number; targetSurfaceRemovals: number; targetSurfaceReorders: number };\n input: { maxUpdatesInFlight: number; maxRpcMs: number };\n subscription: { statePush: number; stateUpdate: number };\n};\ntype TraceApi = {\n enabled(): boolean; enable: typeof enableViewTrace; dump: typeof dumpViewTraceText;\n download: typeof downloadViewTraceTxtFile; report: typeof getViewTraceReport; event: typeof traceView;\n describeElement: typeof describeElement; activeCapture(): string | null;\n lastCaptureSession(): CaptureRecord | null; captureSessions(): CaptureRecord[];\n};\ndeclare global { var __forgeaxViewTrace: TraceApi | undefined; }\n/**\n * View viewport / camera interaction trace.\n *\n * Enable: localStorage.setItem('forgeax.view.trace', '1'); location.reload();\n * Export: copy(__forgeaxViewTrace.dump())\n *\n * Capture phase (canvas click → ESC / pointer up): see report.captureSessions[]\n */\n\nconst TRACE_KEY = 'forgeax.view.trace';\nconst TRACE_URL_PARAM = 'forgeaxViewTrace';\nconst LOG_PREFIX = '[forgeax.view.trace]';\nconst MAX_EVENTS = 6000;\nconst LATENCY_SAMPLE_CAP = 1024;\nconst MAX_SESSION_EVENTS = 20000;\n\nlet enabled = false;\nlet owned = false;\nlet installedApi: TraceApi | undefined;\nlet longTaskObserver: PerformanceObserver | undefined;\nlet sessionId = '';\nlet bootAt = 0;\nconst events: TraceEvent[] = [];\nconst counters = new Map<string, number>();\nconst rpcLatencies: Latencies = new Map();\nlet rafId = 0;\nlet lastRaf = 0;\nlet longFrameCount = 0;\nlet maxFrameGap = 0;\nlet sessionLongFrameCount = 0;\n\nlet activeCaptureSession: CaptureSession | null = null;\nconst captureSessions: CaptureRecord[] = [];\nlet domRoot: HTMLElement | null = null;\nlet domMutationObserver: MutationObserver | null = null;\nlet layoutObserver: PerformanceObserver | null = null;\nlet paintObserver: PerformanceObserver | null = null;\n\nfunction now() {\n return typeof performance !== 'undefined' && typeof performance.now === 'function'\n ? performance.now()\n : Date.now();\n}\n\nfunction relT() {\n return Math.round((now() - bootAt) * 100) / 100;\n}\n\nfunction readEnabledFromEnvironment() {\n try {\n if (typeof globalThis.location?.search === 'string') {\n const params = new URLSearchParams(globalThis.location.search);\n if (params.get(TRACE_URL_PARAM) === '1' || params.get(TRACE_URL_PARAM) === 'true') return true;\n }\n } catch {\n // ignore\n }\n try {\n const stored = globalThis.localStorage?.getItem(TRACE_KEY);\n if (stored === '1' || stored === 'true') return true;\n } catch {\n // ignore\n }\n return false;\n}\n\nfunction bump(name: string, delta = 1) {\n counters.set(name, (counters.get(name) ?? 0) + delta);\n}\n\nfunction sessionBump(name: string, delta = 1) {\n if (!activeCaptureSession) return;\n const map = activeCaptureSession.counters;\n map.set(name, (map.get(name) ?? 0) + delta);\n}\n\nfunction recordRpcLatency(operation: string, ms: number, targetMap = rpcLatencies) {\n let bucket = targetMap.get(operation);\n if (!bucket) {\n bucket = [];\n targetMap.set(operation, bucket);\n }\n if (bucket.length >= LATENCY_SAMPLE_CAP) bucket.shift();\n bucket.push(ms);\n}\n\nfunction percentile(sorted: readonly number[], p: number) {\n if (sorted.length === 0) return 0;\n const index = Math.min(sorted.length - 1, Math.max(0, Math.floor((p / 100) * sorted.length)));\n return sorted[index];\n}\n\nfunction summarizeLatencies(samples: readonly number[]) {\n if (!samples?.length) return null;\n const sorted = [...samples].sort((a, b) => a - b);\n const sum = sorted.reduce((acc, value) => acc + value, 0);\n return {\n n: sorted.length,\n avg: Math.round((sum / sorted.length) * 100) / 100,\n p50: Math.round(percentile(sorted, 50) * 100) / 100,\n p95: Math.round(percentile(sorted, 95) * 100) / 100,\n max: Math.round(sorted[sorted.length - 1] * 100) / 100,\n sum: Math.round(sum * 100) / 100,\n };\n}\n\nfunction summarizeRenderDurations(samples: readonly number[]) {\n const stats = summarizeLatencies(samples);\n if (!stats) return null;\n return stats;\n}\n\nfunction pushEvent(entry: TraceEvent, { sessionOnly = false } = {}) {\n if (!enabled) return;\n if (activeCaptureSession) {\n activeCaptureSession.events.push(entry);\n if (activeCaptureSession.events.length > MAX_SESSION_EVENTS) {\n activeCaptureSession.events.splice(0, activeCaptureSession.events.length - MAX_SESSION_EVENTS);\n sessionBump('session.events-truncated');\n }\n }\n if (!sessionOnly) {\n events.push(entry);\n if (events.length > MAX_EVENTS) events.splice(0, events.length - MAX_EVENTS);\n }\n}\n\nexport function isViewTraceEnabled() {\n return enabled;\n}\n\nexport function isCaptureSessionActive() {\n return activeCaptureSession !== null;\n}\n\nexport function traceView(phase: string, event: string, data: TraceData = {}) {\n if (!enabled) return;\n const entry = { t: relT(), phase, event, ...data };\n bump(`${phase}.${event}`);\n sessionBump(`${phase}.${event}`);\n pushEvent(entry);\n const verbose = activeCaptureSession || phase === 'session' || phase === 'boot';\n if (verbose && typeof console !== 'undefined' && typeof console.debug === 'function') {\n console.debug(LOG_PREFIX, phase, event, data);\n }\n}\n\nexport function traceViewRpc(operation: string, durationMs: number, extra: TraceData = {}) {\n if (!enabled) return;\n recordRpcLatency(operation, durationMs, rpcLatencies);\n if (activeCaptureSession) {\n recordRpcLatency(operation, durationMs, activeCaptureSession.rpcLatencies);\n if (durationMs > (activeCaptureSession.maxRpcMs ?? 0)) activeCaptureSession.maxRpcMs = durationMs;\n if (extra.inputType === 'pointer-move') {\n sessionBump('input.rpc-pointer-move');\n const q = activeCaptureSession.pendingRpc ?? 0;\n if (q > (activeCaptureSession.maxRpcQueue ?? 0)) activeCaptureSession.maxRpcQueue = q;\n }\n }\n bump(`rpc.${operation}`);\n sessionBump(`rpc.${operation}`);\n if (durationMs > 32) {\n bump(`rpc.slow.${operation}`);\n sessionBump(`rpc.slow.${operation}`);\n }\n pushEvent({\n t: relT(),\n phase: 'rpc',\n event: operation,\n ms: Math.round(durationMs * 100) / 100,\n ...extra,\n });\n}\n\nfunction describeElement(value: unknown) {\n const element = workspaceDiagnosticRecord(value);\n if (!element || typeof element !== 'object') return null;\n const tag = typeof element.tagName === 'string' ? element.tagName.toLowerCase() : String(value);\n const dataset = element.dataset && typeof element.dataset === 'object' ? { ...workspaceDiagnosticRecord(element.dataset) } : {};\n return {\n tag,\n id: element.id ?? undefined,\n className: typeof element.className === 'string' ? element.className : undefined,\n dataset,\n tabIndex: element.tabIndex,\n pointerLock: typeof element.requestPointerLock === 'function',\n };\n}\n\nfunction attachDomObservers() {\n if (!activeCaptureSession || !domRoot || domMutationObserver) return;\n if (typeof globalThis.MutationObserver === 'function') {\n domMutationObserver = new MutationObserver((records) => {\n if (!activeCaptureSession) return;\n for (const record of records) {\n sessionBump('dom.mutation');\n activeCaptureSession.mutationRecords += 1;\n if (record.type === 'childList') {\n sessionBump('dom.childList');\n activeCaptureSession.childListMutations += record.addedNodes.length + record.removedNodes.length;\n }\n if (record.type === 'attributes') sessionBump('dom.attributes');\n }\n if (activeCaptureSession.mutationRecords % 50 === 0) {\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'mutation-burst',\n records: activeCaptureSession.mutationRecords,\n childListNodes: activeCaptureSession.childListMutations,\n });\n }\n });\n domMutationObserver.observe(domRoot, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['style', 'class', 'hidden', 'data-forgeax-view-selected'],\n });\n }\n if (typeof globalThis.PerformanceObserver === 'function') {\n try {\n layoutObserver = new PerformanceObserver((list) => {\n if (!activeCaptureSession) return;\n for (const entry of list.getEntries()) {\n sessionBump('dom.layout');\n const ms = entry.duration;\n activeCaptureSession.layoutDurations.push(ms);\n if (ms > 8) {\n sessionBump('dom.layout-slow');\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'layout',\n durationMs: Math.round(ms * 100) / 100,\n name: entry.name,\n });\n }\n }\n });\n layoutObserver.observe({ type: 'layout', buffered: true });\n } catch {\n // layout entry type unsupported\n }\n try {\n paintObserver = new PerformanceObserver((list) => {\n if (!activeCaptureSession) return;\n for (const entry of list.getEntries()) {\n sessionBump('dom.paint');\n if (entry.duration > 8) {\n sessionBump('dom.paint-slow');\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'paint',\n durationMs: Math.round(entry.duration * 100) / 100,\n });\n }\n }\n });\n paintObserver.observe({ type: 'paint', buffered: true });\n } catch {\n // paint entry type unsupported\n }\n }\n}\n\nfunction detachDomObservers() {\n domMutationObserver?.disconnect();\n domMutationObserver = null;\n layoutObserver?.disconnect();\n layoutObserver = null;\n paintObserver?.disconnect();\n paintObserver = null;\n}\n\nfunction buildSessionHints(summary: SessionHintSource) {\n const hints: string[] = [];\n const durationSec = (summary.durationMs ?? 0) / 1000;\n if (durationSec <= 0) return hints;\n const move = summary.counters['input.pointer-move'] ?? 0;\n const render = summary.counters['shell.render'] ?? 0;\n const push = summary.counters['shell.state-push'] ?? 0;\n const cameraRpc = summary.counters['rpc.camera.update'] ?? 0;\n const mutations = summary.counters['dom.mutation'] ?? 0;\n\n if (render > 0 && move > 0 && Math.abs(render - push) < render * 0.2 && render / move > 0.5) {\n hints.push('Almost every workspace update triggers shell.render; subscription updates may cause excessive DOM work.');\n }\n if (cameraRpc > 0 && Math.abs(cameraRpc - move) < cameraRpc * 0.15) {\n hints.push('Pointer moves and camera updates are nearly one-to-one; consider coalescing input samples before submission.');\n }\n if (mutations > render * 30 && render > 10) {\n hints.push('Many DOM mutations occur per render; check whole-tree replacement and repeated mounting.');\n }\n const renderStats = summary.render;\n if ((renderStats?.p95 ?? 0) > 8 && render > 20) {\n hints.push('Rendering is slow during capture, including child replacement and target surface synchronization.');\n }\n const layoutSlow = summary.counters['dom.layout-slow'] ?? 0;\n if (layoutSlow > 5) {\n hints.push('The browser reports repeated slow layouts during capture; check forced layout and large DOM changes.');\n }\n return hints;\n}\n\nfunction finalizeCaptureSession(reason: string, extra: TraceData = {}): CaptureRecord | null {\n if (!activeCaptureSession) return null;\n const session = activeCaptureSession;\n activeCaptureSession = null;\n detachDomObservers();\n\n const durationMs = Math.round((now() - session.startedAtPerf) * 100) / 100;\n const counterObj = Object.fromEntries([...session.counters.entries()].sort(([a], [b]) => a.localeCompare(b)));\n const rpc: Record<string, LatencyStats | null> = {};\n for (const [operation, samples] of session.rpcLatencies.entries()) {\n rpc[operation] = summarizeLatencies(samples);\n }\n const summary = {\n id: session.id,\n reason,\n durationMs,\n startedAtT: session.startedAtT,\n endedAtT: relT(),\n meta: { ...session.meta, ...extra },\n counters: counterObj,\n rpc,\n render: summarizeRenderDurations(session.renderDurations),\n dom: {\n mutationRecords: session.mutationRecords,\n childListNodeChanges: session.childListMutations,\n layoutSamples: session.layoutDurations.length,\n syncTargetSurfaces: session.syncTargetSurfaces,\n targetSurfaceRemovals: session.targetSurfaceRemovals,\n targetSurfaceReorders: session.targetSurfaceReorders,\n },\n input: {\n maxUpdatesInFlight: session.maxInFlight,\n maxRpcMs: Math.round((session.maxRpcMs ?? 0) * 100) / 100,\n },\n subscription: {\n statePush: counterObj['shell.state-push'] ?? 0,\n stateUpdate: counterObj['shell.state-update'] ?? 0,\n },\n hints: [] as string[],\n };\n summary.hints = buildSessionHints(summary);\n\n const record = {\n ...summary,\n events: session.events,\n };\n captureSessions.push(record);\n\n traceView('session', 'capture-end', {\n id: session.id,\n reason,\n durationMs,\n counters: counterObj,\n rpc,\n render: summary.render,\n dom: summary.dom,\n subscription: summary.subscription,\n hints: summary.hints,\n });\n\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\n console.info(`${LOG_PREFIX} capture session ended (${reason})`, summary);\n }\n return record;\n}\n\nexport function beginCaptureSession(meta: TraceData = {}) {\n if (!enabled) return;\n if (activeCaptureSession) finalizeCaptureSession('superseded');\n const id = `cap-${Math.random().toString(36).slice(2, 10)}`;\n activeCaptureSession = {\n id,\n startedAtPerf: now(),\n startedAtT: relT(),\n meta,\n counters: new Map(),\n rpcLatencies: new Map(),\n events: [],\n renderDurations: [],\n layoutDurations: [],\n mutationRecords: 0,\n childListMutations: 0,\n syncTargetSurfaces: 0,\n targetSurfaceRemovals: 0,\n targetSurfaceReorders: 0,\n maxInFlight: 0,\n maxRpcMs: 0,\n maxRpcQueue: 0,\n };\n sessionLongFrameCount = 0;\n attachDomObservers();\n traceView('session', 'capture-begin', { id, ...meta });\n}\n\nexport function endCaptureSession(reason: string, extra: TraceData = {}) {\n if (!enabled || !activeCaptureSession) return null;\n return finalizeCaptureSession(reason, extra);\n}\n\nexport function traceShellRegisterDomRoot(rootElement: HTMLElement | null | undefined) {\n if (!enabled || !rootElement) return;\n domRoot = rootElement;\n traceView('shell', 'dom-root', { element: describeElement(rootElement) });\n}\n\nexport function traceShellStatePush(state: WorkspaceState) {\n if (!enabled) return;\n bump('shell.state-push');\n sessionBump('shell.state-push');\n const payload = {\n selectedTabId: state?.selectedTabId,\n cameraVersion: state?.preview?.cameraVersion,\n hasInteraction: Boolean(state?.preview?.interaction),\n };\n pushEvent({ t: relT(), phase: 'shell', event: 'state-push', ...payload });\n}\n\nexport function wrapViewWorkspaceClient<T extends ViewWorkspaceClient | undefined>(client: T): T {\n if (!client) return client;\n const tracedClient = client as ViewWorkspaceClient & { __forgeaxViewTraceWrapped?: boolean };\n if (tracedClient.__forgeaxViewTraceWrapped) return client;\n const originalCall = client.call?.bind(client);\n if (typeof originalCall !== 'function') return client;\n tracedClient.__forgeaxViewTraceWrapped = true;\n client.call = <R = unknown>(operation: string, args: Record<string, unknown> = {}, options: WorkspaceCallOptions = {}): Promise<R> => {\n if (!enabled) return originalCall<R>(operation, args, options);\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = (activeCaptureSession.pendingRpc ?? 0) + 1;\n }\n const started = now();\n const result = originalCall<R>(operation, args, options);\n return Promise.resolve(result)\n .then((value) => {\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = Math.max(0, (activeCaptureSession.pendingRpc ?? 1) - 1);\n }\n traceViewRpc(operation, now() - started, {\n ok: true,\n interactionId: args?.interactionId,\n inputType: workspaceDiagnosticRecord(args.input).type,\n });\n return value;\n })\n .catch((error) => {\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = Math.max(0, (activeCaptureSession.pendingRpc ?? 1) - 1);\n }\n traceViewRpc(operation, now() - started, {\n ok: false,\n message: error?.message ?? String(error),\n interactionId: args?.interactionId,\n inputType: workspaceDiagnosticRecord(args.input).type,\n });\n throw error;\n });\n };\n if (typeof client.subscribe === 'function') {\n const originalSubscribe = client.subscribe.bind(client);\n client.subscribe = (listener) =>\n originalSubscribe((state) => {\n traceShellStatePush(state);\n return listener(state);\n });\n }\n return client;\n}\n\nfunction startRafMonitor() {\n if (rafId || typeof globalThis.requestAnimationFrame !== 'function') return;\n lastRaf = now();\n const tick = () => {\n if (!enabled) {\n rafId = 0;\n return;\n }\n const t = now();\n const gap = t - lastRaf;\n lastRaf = t;\n if (gap > maxFrameGap) maxFrameGap = gap;\n if (gap > 32) {\n longFrameCount += 1;\n if (activeCaptureSession) {\n sessionLongFrameCount += 1;\n sessionBump('perf.long-frame');\n pushEvent({\n t: relT(),\n phase: 'perf',\n event: 'long-frame',\n gapMs: Math.round(gap * 100) / 100,\n capture: true,\n });\n } else if (gap > 50) {\n pushEvent({ t: relT(), phase: 'perf', event: 'long-frame', gapMs: Math.round(gap * 100) / 100 });\n }\n }\n rafId = globalThis.requestAnimationFrame(tick);\n };\n rafId = globalThis.requestAnimationFrame(tick);\n}\n\nfunction startLongTaskObserver() {\n if (typeof globalThis.PerformanceObserver !== 'function') return;\n try {\n const observer = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (entry.duration < 50) continue;\n bump('perf.long-task');\n sessionBump('perf.long-task');\n pushEvent({\n t: relT(),\n phase: 'perf',\n event: 'long-task',\n name: entry.name,\n durationMs: Math.round(entry.duration * 100) / 100,\n capture: Boolean(activeCaptureSession),\n });\n }\n });\n observer.observe({ entryTypes: ['longtask'] });\n longTaskObserver = observer;\n } catch {\n // unsupported\n }\n}\n\nfunction buildSummary(elapsedSec: number) {\n const counterObj = Object.fromEntries([...counters.entries()].sort(([a], [b]) => a.localeCompare(b)));\n const rpc: Record<string, LatencyStats | null> = {};\n for (const [operation, samples] of rpcLatencies.entries()) {\n rpc[operation] = summarizeLatencies(samples);\n }\n const hints = [];\n const last = captureSessions[captureSessions.length - 1];\n if (last?.hints?.length) {\n hints.push(`Last capture (${last.reason}, ${last.durationMs} ms): ${last.hints.join(' ')}`);\n }\n return {\n sessionId,\n elapsedSec: Math.round(elapsedSec * 100) / 100,\n counters: counterObj,\n rpc,\n perf: {\n longFramesOver32ms: longFrameCount,\n maxFrameGapMs: Math.round(maxFrameGap * 100) / 100,\n },\n captureSessionCount: captureSessions.length,\n hints,\n };\n}\n\nexport function getViewTraceReport() {\n const elapsedSec = bootAt ? (now() - bootAt) / 1000 : 0;\n return {\n kind: 'forgeax.view.trace/report',\n version: 2,\n generatedAt: new Date().toISOString(),\n summary: buildSummary(elapsedSec),\n captureSessions: captureSessions.map(({ events: _e, ...rest }) => rest),\n captureSessionsFull: captureSessions,\n events,\n };\n}\n\nexport function dumpViewTraceText() {\n return JSON.stringify(getViewTraceReport(), null, 2);\n}\n\nexport function installViewTraceGlobal() {\n if (!owned || !enabled) return false;\n if (installedApi) return true;\n sessionId = `vt-${Math.random().toString(36).slice(2, 10)}`;\n bootAt = now();\n traceView('boot', 'enabled', {\n page: globalThis.location ? `${globalThis.location.origin}${globalThis.location.pathname}` : undefined,\n userAgent: globalThis.navigator?.userAgent,\n });\n startRafMonitor();\n startLongTaskObserver();\n const api = {\n enabled: () => enabled,\n enable: enableViewTrace,\n dump: dumpViewTraceText,\n download: downloadViewTraceTxtFile,\n report: getViewTraceReport,\n event: traceView,\n describeElement,\n activeCapture: () => activeCaptureSession?.id ?? null,\n lastCaptureSession: () => captureSessions[captureSessions.length - 1] ?? null,\n captureSessions: () => captureSessions,\n };\n globalThis.__forgeaxViewTrace = api;\n installedApi = api;\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\n console.info(\n `${LOG_PREFIX} active — click canvas, drag, press ESC, then: copy(__forgeaxViewTrace.dump())`,\n );\n }\n return true;\n}\n\nexport function initViewTraceFromEnvironment() {\n if (typeof globalThis.document !== 'object') return () => {};\n if (owned) throw new Error('The workspace plugin already owns View tracing in this document');\n owned = true;\n enabled = readEnabledFromEnvironment();\n installViewTraceGlobal();\n let disposed = false;\n return () => {\n if (disposed) return;\n disposed = true;\n owned = false;\n enabled = false;\n if (rafId) globalThis.cancelAnimationFrame?.(rafId);\n rafId = 0;\n longTaskObserver?.disconnect();\n longTaskObserver = undefined;\n detachDomObservers();\n domRoot = null;\n activeCaptureSession = null;\n events.length = 0;\n captureSessions.length = 0;\n counters.clear();\n rpcLatencies.clear();\n lastRaf = longFrameCount = maxFrameGap = sessionLongFrameCount = bootAt = 0;\n sessionId = '';\n if (globalThis.__forgeaxViewTrace === installedApi) delete globalThis.__forgeaxViewTrace;\n installedApi = undefined;\n };\n}\n\n/** Turn on in-process tracing without reload (used by the View header export control). */\nexport function enableViewTrace({ persist = false } = {}) {\n if (!owned) return false;\n if (persist) {\n try {\n globalThis.localStorage?.setItem(TRACE_KEY, '1');\n } catch {\n // ignore\n }\n }\n if (enabled && globalThis.__forgeaxViewTrace) return true;\n enabled = true;\n return installViewTraceGlobal();\n}\n\nfunction traceExportFilename() {\n const stamp = new Date().toISOString().replace(/[:.]/g, '-');\n return `forgeax-view-trace-${stamp}.txt`;\n}\n\n/** Returns the report text and downloads it as a plain-text file when `document` exists. */\nexport function downloadViewTraceTxtFile() {\n enableViewTrace();\n const text = dumpViewTraceText();\n traceView('export', 'download', {\n bytes: text.length,\n captureSessions: captureSessions.length,\n });\n const doc = globalThis.document;\n if (doc?.createElement) {\n const blob = new Blob([text], { type: 'text/plain;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = doc.createElement('a');\n anchor.href = url;\n anchor.download = traceExportFilename();\n anchor.rel = 'noopener';\n anchor.click();\n URL.revokeObjectURL(url);\n }\n return text;\n}\n\nexport function traceInputAttach(element: HTMLElement | null | undefined, { targetId, tabId }: { targetId?: string; tabId?: string } = {}) {\n if (!enabled) return;\n traceView('input', 'attach', {\n targetId,\n tabId,\n element: describeElement(element),\n pointerLockElement: describeElement(globalThis.document?.pointerLockElement),\n });\n const canvas = (\n element?.tagName?.toLowerCase?.() === 'canvas'\n ? element\n : element?.querySelector?.('canvas')) as (HTMLCanvasElement & { __forgeaxViewTraceCanvas?: boolean }) | null | undefined;\n if (!canvas || canvas.__forgeaxViewTraceCanvas) return;\n canvas.__forgeaxViewTraceCanvas = true;\n traceView('canvas', 'found', {\n width: canvas.width,\n height: canvas.height,\n clientWidth: canvas.clientWidth,\n clientHeight: canvas.clientHeight,\n });\n if (typeof globalThis.ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => {\n const payload = {\n width: canvas.width,\n height: canvas.height,\n clientWidth: canvas.clientWidth,\n clientHeight: canvas.clientHeight,\n capture: Boolean(activeCaptureSession),\n };\n bump('canvas.resize');\n sessionBump('canvas.resize');\n pushEvent({ t: relT(), phase: 'canvas', event: 'resize', ...payload });\n });\n observer.observe(canvas);\n }\n}\n\nexport function traceInputPointerDown(event: PointerEvent, { accepted, element }: { accepted: boolean; element?: HTMLElement }) {\n if (!enabled) return;\n traceView('input', 'pointerdown', {\n accepted,\n button: event?.button,\n pointerId: event?.pointerId,\n pointerType: event?.pointerType,\n buttons: event?.buttons,\n target: describeElement(event?.target),\n inputSurface: describeElement(element),\n pointerLockBefore: describeElement(globalThis.document?.pointerLockElement),\n });\n if (accepted) {\n beginCaptureSession({\n trigger: 'pointerdown',\n target: describeElement(event?.target),\n inputSurface: describeElement(element),\n });\n }\n}\n\nexport function traceInputPointerUp(event: PointerEvent, { element }: { element?: HTMLElement } = {}) {\n if (!enabled) return;\n traceView('input', 'pointerup', {\n pointerId: event?.pointerId,\n inputSurface: describeElement(element),\n });\n endCaptureSession('pointerup');\n}\n\nexport function traceInputPointerLockExit({ locked, element }: { locked: boolean; element?: HTMLElement }) {\n if (!enabled) return;\n traceView('input', 'pointerlock-exit', {\n locked,\n element: describeElement(element),\n });\n if (!locked) endCaptureSession('pointerlock-exit');\n}\n\nexport function traceInputCaptureAbort(reason: string) {\n if (!enabled) return;\n traceView('input', 'abort', { reason });\n if (activeCaptureSession) endCaptureSession('abort', { abortReason: reason });\n}\n\nexport function traceInputEscape() {\n if (!enabled) return;\n traceView('input', 'escape-key');\n endCaptureSession('escape-key');\n}\n\nexport function traceInputPointerMove(event: PointerEvent, { queueDepth, inFlight }: { queueDepth?: number; inFlight: number; queued?: boolean }) {\n if (!enabled) return;\n bump('input.pointer-move');\n sessionBump('input.pointer-move');\n if (inFlight > (activeCaptureSession?.maxInFlight ?? 0)) {\n if (activeCaptureSession) activeCaptureSession.maxInFlight = inFlight;\n }\n const payload = {\n movementX: event?.movementX,\n movementY: event?.movementY,\n queueDepth,\n inFlight,\n };\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'input', event: 'pointer-move', ...payload });\n } else if ((counters.get('input.pointer-move') ?? 0) % 30 === 1) {\n pushEvent({ t: relT(), phase: 'input', event: 'pointer-move-sample', ...payload });\n }\n}\n\nexport function traceInputEnqueueUpdate(input: { type?: string } | undefined, { queueDepth, inFlight }: { queueDepth: number; inFlight: number }) {\n if (!enabled) return;\n sessionBump('input.enqueue-update');\n bump('input.enqueue-update');\n if (activeCaptureSession) {\n pushEvent({\n t: relT(),\n phase: 'input',\n event: 'enqueue-update',\n type: input?.type,\n queueDepth,\n inFlight,\n });\n }\n}\n\nexport function traceShellRender(meta: TraceData = {}) {\n if (!enabled) return;\n bump('shell.render');\n sessionBump('shell.render');\n if (activeCaptureSession && typeof meta.durationMs === 'number') {\n activeCaptureSession.renderDurations.push(meta.durationMs);\n }\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'render', ...meta });\n } else if ((counters.get('shell.render') ?? 0) % 25 === 1) {\n pushEvent({ t: relT(), phase: 'shell', event: 'render-sample', ...meta });\n }\n}\n\nexport function traceShellUpdate(meta: TraceData = {}) {\n if (!enabled) return;\n bump('shell.state-update');\n sessionBump('shell.state-update');\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'state-update', ...meta });\n }\n}\n\nexport function tracePresentationAttach(tabId: string, targetId: string, surface: unknown) {\n if (!enabled) return;\n sessionBump('shell.presentation-attach');\n bump('shell.presentation-attach');\n traceView('shell', 'presentation-attach', {\n tabId,\n targetId,\n surface: describeElement(surface),\n });\n}\n\nexport function traceSyncTargetSurfaces(stats: { removed?: number; reordered?: number; desired?: number } = {}) {\n if (!enabled) return;\n bump('shell.sync-target-surfaces');\n sessionBump('shell.sync-target-surfaces');\n if (activeCaptureSession) {\n activeCaptureSession.syncTargetSurfaces += 1;\n activeCaptureSession.targetSurfaceRemovals += stats.removed ?? 0;\n activeCaptureSession.targetSurfaceReorders += stats.reordered ?? 0;\n }\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'sync-target-surfaces', ...stats });\n }\n}\n","import type { WorkspaceAsset, WorkspacePreview, WorkspaceState, WorkspaceOpenRequest } from './contract.ts';\nimport type { WorkspaceStateClient } from './workspace-state.ts';\nimport { createWorkspaceStateReader } from './workspace-state.ts';\nimport { traceView } from './view-trace.ts';\n\nconst LOG_PREFIX = '[forgeax.view.resource-open]';\n\n/** Editor viewport hosts the scene world. All other kinds are type-previews. */\nexport const EDITOR_ASSET_KIND = 'scene';\nexport const TYPE_PREVIEW_KINDS = Object.freeze(['material', 'mesh', 'texture']);\n\nexport function summarizeResourceAsset(asset: WorkspaceAsset | null | undefined) {\n if (!asset || typeof asset !== 'object') return null;\n return {\n guid: typeof asset.guid === 'string' ? asset.guid : null,\n kind: typeof asset.kind === 'string' ? asset.kind : null,\n };\n}\n\nexport function isEditorWorkspaceAsset(asset: WorkspaceAsset | null | undefined) {\n return asset?.kind === EDITOR_ASSET_KIND;\n}\n\nexport function isTypePreviewAsset(asset: WorkspaceAsset | null | undefined) {\n return asset != null && TYPE_PREVIEW_KINDS.includes(asset.kind);\n}\n\n/**\n * Editor identity is the scene world, never Engine array order.\n * A pinned editor target wins even when Engine omits kind on the live preview.\n * Otherwise the unique remaining non-type-preview world is the editor.\n */\nexport function selectEditorWorkspacePreview(previews: readonly WorkspacePreview[] | null | undefined, preferredTargetId?: string) {\n const list = (Array.isArray(previews) ? previews : []).filter(\n (entry) => entry?.target?.targetId != null,\n );\n if (preferredTargetId != null && preferredTargetId !== '') {\n const preferred = list.find(\n (entry) => String(entry.target.targetId) === String(preferredTargetId),\n );\n if (preferred && !isTypePreviewAsset(preferred.asset)) return preferred;\n }\n const scenes = list.filter((entry) => isEditorWorkspaceAsset(entry.asset));\n if (scenes.length === 1) return scenes[0];\n const editorWorlds = list.filter((entry) => !isTypePreviewAsset(entry.asset));\n return editorWorlds.length === 1 ? editorWorlds[0] : undefined;\n}\n\n/**\n * Viewport overlay target. Dock claim can render before editorPreview is\n * classified; the bound preview is the live scene world until then.\n */\nexport function selectWorkspaceEditorSurfaceTarget(state: WorkspaceState | null | undefined) {\n if (state?.editorPreview?.target) return state.editorPreview.target;\n const preview = state?.preview;\n if (preview?.target && !isTypePreviewAsset(preview.asset)) return preview.target;\n return null;\n}\n\nexport function editorSceneTargetIds(previews: readonly WorkspacePreview[] | null | undefined, editorPreview: WorkspacePreview | null | undefined) {\n const ids = new Set<string>();\n const add = (entry: WorkspacePreview | null | undefined) => {\n if (entry?.target?.targetId == null) return;\n ids.add(String(entry.target.targetId));\n };\n add(editorPreview);\n for (const entry of Array.isArray(previews) ? previews : []) {\n if (isEditorWorkspaceAsset(entry?.asset)) add(entry);\n }\n return ids;\n}\n\n/** Console breadcrumb for the asset.open → openRequest → openPage path. */\nexport function logResourceOpen(event: string, data: Record<string, unknown> = {}, { level = 'info' }: { level?: 'info' | 'warn' | 'error' } = {}) {\n const logger = typeof console === 'undefined' ? undefined : console[level];\n if (typeof logger === 'function') logger(LOG_PREFIX, event, data);\n try {\n traceView('resource-open', event, data);\n } catch {\n // Trace dump is optional; console breadcrumbs still stand alone.\n }\n}\n\nfunction isKind(asset: WorkspaceAsset | null | undefined, kinds: readonly string[]): asset is WorkspaceAsset {\n return Boolean(asset && kinds.includes(asset.kind) && typeof asset.guid === 'string' && asset.guid !== '');\n}\n\nfunction extraPreviewEntries(snapshot: WorkspaceState | null | undefined) {\n const editorIds = editorSceneTargetIds(snapshot?.previews, snapshot?.editorPreview);\n return (Array.isArray(snapshot?.previews) ? snapshot.previews : []).filter((entry) => {\n if (!entry?.asset || entry.target?.targetId == null) return false;\n if (isEditorWorkspaceAsset(entry.asset)) return false;\n if (editorIds.has(String(entry.target.targetId))) return false;\n return true;\n });\n}\n\nfunction resourceOpenEntry(snapshot: WorkspaceState | null | undefined, kind: string) {\n const opens = snapshot?.resourceOpens;\n if (!opens || typeof opens !== 'object' || kind == null) return undefined;\n return opens instanceof Map ? opens.get(kind) : opens[kind];\n}\n\n/**\n * Each asset editor page keeps the last matching asset after later opens.\n * `openRequest` is only the most recent open, so material/mesh tabs must\n * fall back to live extras and per-kind resourceOpens.\n */\nexport function selectWorkspaceResourceSubject(snapshot: WorkspaceState | null | undefined, kinds: readonly string[]) {\n const accepted = Array.isArray(kinds) ? kinds : [];\n if (accepted.length === 0) {\n const asset = snapshot?.openRequest?.asset;\n return typeof asset?.guid === 'string' && asset.guid !== '' ? asset : undefined;\n }\n const extras = extraPreviewEntries(snapshot);\n const candidates = [\n snapshot?.openRequest?.asset,\n snapshot?.openRequest?.preview?.asset,\n ...accepted.flatMap((kind) => [\n resourceOpenEntry(snapshot, kind)?.asset,\n resourceOpenEntry(snapshot, kind)?.preview?.asset,\n ]),\n ...[...extras].reverse().map((entry) => entry.asset),\n snapshot?.inspection?.asset,\n ];\n return candidates.find((asset) => isKind(asset, accepted));\n}\n\nexport function selectWorkspaceResourcePreview(snapshot: WorkspaceState | null | undefined, guid: string | undefined) {\n if (typeof guid !== 'string' || guid === '') return undefined;\n // Open requests retain the last asset for each editor page. Only Engine's\n // current preview projection proves that a target is still alive.\n const live = extraPreviewEntries(snapshot).filter(entry => entry.asset?.guid === guid);\n const request = snapshot?.openRequest?.asset?.guid === guid\n ? snapshot.openRequest\n : Object.values(snapshot?.resourceOpens ?? {}).find(entry => entry?.asset?.guid === guid);\n const requested = request?.preview?.target;\n return live.find(entry => requested && entry.target.targetId === requested.targetId\n && entry.target.generation === requested.generation) ?? live[0];\n}\n\nfunction openRequestSequence(request: WorkspaceOpenRequest | null | undefined) {\n return request && Number.isSafeInteger(request.sequence) ? request.sequence : 0;\n}\n\n/**\n * Observe later workspace openRequest sequences once each. The first snapshot\n * only baselines a retained sequence so a reconnect does not reopen pages.\n * Fiber owners must call the returned disposer; this helper holds no domain state.\n */\nexport function observeWorkspaceOpenRequests(client: WorkspaceStateClient | undefined, onOpen: (request: WorkspaceOpenRequest) => void) {\n if (typeof onOpen !== 'function') {\n throw new TypeError('observeWorkspaceOpenRequests requires onOpen');\n }\n const reader = createWorkspaceStateReader(client);\n let lastSequence = 0;\n let primed = false;\n const unsubscribe = reader.subscribe(() => {\n const snapshot = reader.getSnapshot();\n if (!snapshot) return;\n const request = snapshot.openRequest;\n const sequence = openRequestSequence(request);\n if (!primed) {\n primed = true;\n lastSequence = sequence;\n logResourceOpen('open-request-baseline', {\n requestId: request?.requestId ?? null,\n sequence: lastSequence,\n asset: summarizeResourceAsset(request?.asset),\n });\n return;\n }\n if (!request || sequence <= lastSequence) return;\n lastSequence = sequence;\n logResourceOpen('open-request-observed', {\n requestId: request.requestId,\n sequence: request.sequence,\n asset: summarizeResourceAsset(request.asset),\n hasPreview: Boolean(request.preview?.target),\n previewTargetId: request.preview?.target?.targetId ?? null,\n });\n onOpen(request);\n });\n return () => {\n unsubscribe();\n reader.dispose();\n };\n}\n","import type { EngineWorkspacePresentation } from '@forgeax/engine/app';\nimport type { Context } from '@forgeax/engine-plugin';\nexport type PreviewOwner = { panelId: string; pageType: string };\nexport type ViewPresentation = Omit<EngineWorkspacePresentation, 'attach'> & { owner?: PreviewOwner; attach?: (input: Parameters<NonNullable<EngineWorkspacePresentation['attach']>>[0] & { owner?: PreviewOwner }) => ReturnType<NonNullable<EngineWorkspacePresentation['attach']>> };\nexport type PresentationConfig = { presentation?: ViewPresentation; targetPresentation?: ViewPresentation };\n\nexport function readEnginePresentation(config: PresentationConfig = {}, ctx?: Context): ViewPresentation | undefined {\n return config.presentation\n ?? config.targetPresentation\n ?? (ctx?.get?.('engineWorkspacePresentation', false) || undefined);\n}\n\n/** Resolve Engine presentation at call time so either side can appear first. */\nexport function liveEnginePresentation(ctx: Context, config: PresentationConfig = {}): ViewPresentation {\n const read = () => readEnginePresentation(config, ctx);\n return {\n get surfacePlacement() {\n return read()?.surfacePlacement;\n },\n createSurface(input) {\n return read()?.createSurface?.(input);\n },\n attach(input) {\n return read()?.attach?.(input);\n },\n detach(input) {\n return read()?.detach?.(input);\n },\n };\n}\n","/** One attachment owns placement, never the borrowed Engine node or runtime. */\nexport function borrowSurface(surface: HTMLElement, container: HTMLElement) {\n const parent = surface.parentNode;\n const next = surface.nextSibling;\n const attributes = ['style', 'hidden', 'aria-label', 'data-forgeax-view-target-id',\n 'data-forgeax-view-tab-id', 'data-forgeax-view-surface', 'data-forgeax-view-selected']\n .map((name): [string, string | null | undefined] => [name, surface.getAttribute?.(name)]);\n let restored = false;\n return () => {\n if (restored) return;\n restored = true;\n // An external owner may already have reclaimed the node and its styles.\n if (surface.parentNode !== container) return;\n for (const [name, value] of attributes) {\n if (value == null) surface.removeAttribute?.(name);\n else surface.setAttribute?.(name, value);\n }\n if (parent) {\n if (parent.insertBefore) parent.insertBefore(surface, next?.parentNode === parent ? next : null);\n else if ('append' in parent) parent.append(surface);\n } else surface.remove?.();\n };\n}\n\nexport const SCENE_SHELL_ID = 'app-shell';\n\nexport function readSceneShell(document: Document | undefined) {\n return document?.getElementById?.(SCENE_SHELL_ID) ?? null;\n}\n\nexport function placeSurface(container: HTMLElement | null | undefined, surface: HTMLElement | null | undefined, { replace = false } = {}) {\n if (!container || !surface || surface.parentNode === container) return false;\n // Engine createApp(canvas) requires isConnected. Never pull a live node into\n // a detached View host (Dock/page not mounted yet).\n if (container.isConnected === false) return false;\n if (replace && typeof container.replaceChildren === 'function') {\n container.replaceChildren(surface);\n return true;\n }\n container.append?.(surface);\n return true;\n}\n\n/**\n * Keep a live Engine node inside a View container regardless of which DOM\n * appears first. Re-adopts if the node is moved back to body/parking.\n */\nexport function keepSurfaceInContainer({\n document,\n getContainer,\n getSurface,\n replace = false,\n onPlace,\n poll = false,\n}: { document?: Document; getContainer?: () => HTMLElement | null | undefined; getSurface?: () => HTMLElement | null | undefined; replace?: boolean; onPlace?: (surface: HTMLElement, container: HTMLElement) => void; poll?: boolean } = {}) {\n let stopped = false;\n let placement: { container: HTMLElement; surface: HTMLElement; restore: () => void } | undefined;\n const release = () => { placement?.restore(); placement = undefined; };\n const sync = () => {\n if (stopped) return;\n const container = getContainer?.();\n if (!container || container.isConnected === false) { release(); return; }\n const surface = getSurface?.();\n if (!surface) return;\n if (placement && (placement.container !== container || placement.surface !== surface)) release();\n if (surface.parentNode === container) return;\n if (!placement) placement = { container, surface, restore: borrowSurface(surface, container) };\n if (!placeSurface(container, surface, { replace })) return;\n onPlace?.(surface, container);\n };\n sync();\n const root = document?.documentElement ?? document?.body;\n const Observer = document?.defaultView?.MutationObserver ?? globalThis.MutationObserver;\n const win = document?.defaultView ?? globalThis;\n let observer: MutationObserver | undefined;\n let raf = 0;\n if (root && typeof Observer === 'function') {\n observer = new Observer(sync);\n observer.observe(root, { childList: true, subtree: true });\n }\n if (poll && typeof win.requestAnimationFrame === 'function') {\n const tick = () => {\n if (stopped) return;\n sync();\n raf = win.requestAnimationFrame(tick);\n };\n raf = win.requestAnimationFrame(tick);\n }\n return () => {\n stopped = true;\n observer?.disconnect();\n if (raf) win.cancelAnimationFrame?.(raf);\n release();\n };\n}\n\nexport function watchUntilReady({ document, probe }: { document?: Document; probe?: () => boolean } = {}) {\n let stopped = false;\n const win = document?.defaultView ?? globalThis;\n const Observer = document?.defaultView?.MutationObserver ?? globalThis.MutationObserver;\n let observer: MutationObserver | undefined;\n let raf = 0;\n const stop = () => {\n if (stopped) return;\n stopped = true;\n observer?.disconnect();\n if (raf) win.cancelAnimationFrame?.(raf);\n };\n const tick = () => {\n if (stopped) return;\n if (probe?.()) stop();\n };\n tick();\n if (stopped) return stop;\n const root = document?.documentElement ?? document?.body;\n if (root && typeof Observer === 'function') {\n observer = new Observer(tick);\n observer.observe(root, { childList: true, subtree: true });\n }\n if (typeof win.requestAnimationFrame === 'function') {\n const loop = () => {\n if (stopped) return;\n tick();\n raf = win.requestAnimationFrame(loop);\n };\n raf = win.requestAnimationFrame(loop);\n }\n return stop;\n}\n","import type { ViewWorkspaceClient } from './client.ts';\nimport type { WorkspaceTarget } from './contract.ts';\nimport { VIEW_WORKSPACE_TAB_ID } from './contract.ts';\n\nconst DEFAULT_DEBOUNCE_MS = 100;\n\n/** Forward the host element extent through preview.resize (device pixels). */\nexport function attachPreviewRenderResizeSync({\n api,\n surface,\n target,\n debounceMs = DEFAULT_DEBOUNCE_MS,\n}: { api?: Pick<ViewWorkspaceClient, 'resizePreview'>; surface?: HTMLElement; target?: WorkspaceTarget | null; debounceMs?: number } = {}) {\n if (!api || typeof api.resizePreview !== 'function' || !surface || !target?.targetId || !Number.isSafeInteger(target.generation)) {\n return () => {};\n }\n const host = surface;\n if (!host || typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n\n let lastWidth = 0;\n let lastHeight = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let disposed = false;\n const controller = new AbortController();\n\n const flush = () => {\n if (disposed) return;\n const dpr = Math.max(1, surface.ownerDocument?.defaultView?.devicePixelRatio ?? 1);\n const width = Math.round(host.clientWidth * dpr);\n const height = Math.round(host.clientHeight * dpr);\n if (width <= 0 || height <= 0) return;\n if (width === lastWidth && height === lastHeight) return;\n if (target.width === width && target.height === height) {\n lastWidth = width;\n lastHeight = height;\n return;\n }\n void Promise.resolve()\n .then(() => !disposed && api.resizePreview({\n tabId: VIEW_WORKSPACE_TAB_ID,\n targetId: String(target.targetId),\n targetGeneration: target.generation,\n width,\n height,\n signal: controller.signal,\n }))\n .then(() => {\n if (disposed) return;\n lastWidth = width;\n lastHeight = height;\n })\n .catch(() => {\n // The shared API client reports the request error. Do not acknowledge\n // failed dimensions: a later real resize notification may retry them.\n });\n };\n\n const schedule = () => {\n clearTimeout(timer);\n timer = setTimeout(flush, debounceMs);\n };\n\n const observer = new ResizeObserver(schedule);\n observer.observe(host);\n schedule();\n\n return () => {\n disposed = true;\n controller.abort();\n clearTimeout(timer);\n observer.disconnect();\n };\n}\n\n/** @deprecated Use attachPreviewRenderResizeSync */\nexport const attachViewportRenderResizeSync = attachPreviewRenderResizeSync;\n","import type { EngineWorkspaceTarget } from '@forgeax/engine/app';\nimport type { WorkspaceTarget } from './contract.ts';\nimport type { ViewWorkspaceClient } from './client.ts';\nimport type { ViewPresentation, PreviewOwner } from './engine-presentation.ts';\nexport type PreviewSurfaceResult = { ok: true; dispose?: () => void | Promise<void> } | { ok: false; error: { code: string; expected: string; hint: string } };\nexport type PreviewSurfaceOptions = { presentation?: ViewPresentation; target?: WorkspaceTarget; container?: HTMLElement | null; canvas?: unknown; owner?: PreviewOwner; editorTargetId?: string; api?: Pick<ViewWorkspaceClient, 'resizePreview'> };\n\nimport { keepSurfaceInContainer, watchUntilReady } from './adopt-surface.ts';\nimport { logResourceOpen } from './resource-open.ts';\nimport { attachPreviewRenderResizeSync } from './render-resize-sync.ts';\n\nconst OWNER_PLACEMENT = 'owner';\nconst containerOwners = new WeakMap<HTMLElement, PreviewOwner>();\n\nfunction previewSurfaceError(code: string, expected: string, hint: string): Extract<PreviewSurfaceResult, { ok: false }> {\n return Object.freeze({\n ok: false,\n error: Object.freeze({ code, expected, hint }),\n });\n}\n\nfunction placementOf(presentation: ViewPresentation | undefined) {\n return presentation?.surfacePlacement === OWNER_PLACEMENT ? OWNER_PLACEMENT : 'shell';\n}\n\nfunction isCanvasNode(node: unknown): node is HTMLCanvasElement {\n return node != null && typeof node === 'object' && 'tagName' in node && typeof node.tagName === 'string' && node.tagName.toLowerCase() === 'canvas';\n}\n\nfunction isPanelContainer(node: unknown): node is HTMLElement {\n if (!node || typeof node !== 'object' || isCanvasNode(node)) return false;\n return ('replaceChildren' in node && typeof node.replaceChildren === 'function') || ('append' in node && typeof node.append === 'function');\n}\n\nfunction surfaceCanvas(surface: HTMLElement) {\n if (isCanvasNode(surface)) return surface;\n return typeof surface?.querySelector === 'function' ? surface.querySelector('canvas') : null;\n}\n\nfunction isEditorOwnerSurface(surface: HTMLElement, container: HTMLElement, { target, editorTargetId }: Pick<PreviewSurfaceOptions, 'target' | 'editorTargetId'> = {}) {\n if (surface?.id === 'app-shell' || surface?.id === 'app') return true;\n if (\n editorTargetId != null &&\n target?.targetId != null &&\n String(editorTargetId) === String(target.targetId)\n ) {\n return true;\n }\n const marker = surface?.dataset?.forgeaxViewSurface;\n if (marker === 'engine-canvas' || marker === 'engine-target') return true;\n if (typeof surface?.closest !== 'function') return false;\n const viewport = surface.closest('[data-forgeax-view-mount-host=\"viewport\"]');\n if (!viewport) return false;\n if (container === viewport || container?.contains?.(viewport)) return false;\n return true;\n}\n\nfunction fillPresentationSurface(surface: HTMLElement | null) {\n if (!surface?.style) return;\n Object.assign(surface.style, {\n width: '100%',\n height: '100%',\n maxWidth: '100%',\n maxHeight: '100%',\n transform: 'none',\n position: 'relative',\n overflow: 'hidden',\n flex: '1 1 auto',\n minWidth: '0',\n minHeight: '0',\n display: 'block',\n });\n}\n\n/**\n * Stamp a panel/page owner onto presentation. Asset pages only host the\n * Engine type-preview surface; they do not create a canvas.\n */\nexport function dedicatedPreviewPresentation(presentation: ViewPresentation | undefined, owner: PreviewOwner): ViewPresentation | undefined {\n if (!presentation || typeof presentation !== 'object') return undefined;\n return {\n get surfacePlacement() {\n return presentation.surfacePlacement;\n },\n get owner() {\n return owner ?? presentation.owner;\n },\n createSurface(input) {\n return presentation.createSurface?.(input);\n },\n attach(input) {\n return presentation.attach?.({ ...input, owner });\n },\n detach(input) {\n return presentation.detach?.(input);\n },\n };\n}\n\n/**\n * Place an Engine type-preview surface into the container owned by one asset\n * panel. The panel never creates a canvas; Engine `createSurface` returns the\n * live surface. Editor owner canvases are refused.\n *\n * @param {{\n * presentation?: object,\n * target?: { targetId?: string | number },\n * container?: HTMLElement,\n * owner?: { panelId?: string, pageType?: string },\n * editorTargetId?: string | number,\n * api?: { resizePreview?: (input: object) => Promise<unknown> },\n * }} [options]\n * @returns {{ ok: true, dispose?: () => unknown } | { ok: false, error: { code: string, expected: string, hint: string } }}\n */\nexport function bindWorkspacePreviewSurface({\n presentation,\n target,\n container,\n canvas,\n owner,\n editorTargetId,\n api,\n}: PreviewSurfaceOptions = {}): PreviewSurfaceResult {\n if (canvas !== undefined || isCanvasNode(container)) {\n throw new TypeError('bindWorkspacePreviewSurface requires a panel-owned container, not a canvas');\n }\n if (!isPanelContainer(container)) {\n throw new TypeError('bindWorkspacePreviewSurface requires a panel-owned container');\n }\n if (!target || (typeof target.targetId !== 'string' && typeof target.targetId !== 'number')) {\n return previewSurfaceError(\n 'view-preview-target-unavailable',\n 'an Engine preview target identity',\n 'Open the asset through Engine asset.open before attaching a preview surface.',\n );\n }\n if (placementOf(presentation) === OWNER_PLACEMENT) {\n return previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'a shell-placed Engine preview surface dedicated to this panel',\n 'The Engine owner surface stays on the Editor viewport; asset preview cannot relocate that iframe.',\n );\n }\n if (!presentation || typeof presentation.createSurface !== 'function') {\n return previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'an Engine presentation that can create a type-preview surface',\n 'The asset tab hosts a DOM container; Engine createSurface places the live canvas into it.',\n );\n }\n const surfaceOwner = owner ?? presentation.owner;\n if (!surfaceOwner?.panelId || !surfaceOwner?.pageType) {\n return previewSurfaceError(\n 'view-preview-owner-unavailable',\n 'a stable asset preview panel owner',\n 'Bind the preview through its PageType panel contribution.',\n );\n }\n const claimedBy = containerOwners.get(container);\n if (claimedBy !== undefined && claimedBy !== surfaceOwner) {\n return previewSurfaceError(\n 'view-preview-canvas-owned',\n 'a container used by exactly one asset preview panel',\n 'Create a new container for this asset preview panel.',\n );\n }\n\n const missingSurface = () => previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'an Engine type-preview surface for this target',\n 'Engine must expose a type-preview surface via createSurface; the tab does not create a canvas.',\n );\n const refuseEditor = () => previewSurfaceError(\n 'view-preview-surface-unavailable',\n 'a shell-placed Engine preview surface dedicated to this panel',\n 'The Engine owner surface stays on the Editor viewport; asset preview cannot relocate that iframe.',\n );\n\n const resolveSurface = () => {\n const surface = presentation.createSurface!({\n target: target as EngineWorkspaceTarget,\n document: container.ownerDocument,\n });\n return surface && typeof surface === 'object' && 'tagName' in surface && typeof surface.tagName === 'string' ? surface as HTMLElement : null;\n };\n\n const installSurface = (surface: HTMLElement): Extract<PreviewSurfaceResult, { ok: true }> => {\n containerOwners.set(container, surfaceOwner);\n container.dataset.forgeaxPreviewPanel = surfaceOwner.panelId;\n container.dataset.forgeaxPreviewPage = surfaceOwner.pageType;\n container.dataset.forgeaxAssetPreview = String(target.targetId);\n const stopKeep = keepSurfaceInContainer({\n document: container.ownerDocument,\n getContainer: () => container,\n getSurface: () => surface,\n replace: true,\n });\n fillPresentationSurface(surface);\n const canvasNode = surfaceCanvas(surface);\n fillPresentationSurface(canvasNode);\n const resizeTarget = Number.isSafeInteger(target.generation)\n ? { targetId: String(target.targetId), generation: target.generation }\n : null;\n const detachResize = resizeTarget && api\n ? attachPreviewRenderResizeSync({ api, surface: container, target: resizeTarget })\n : () => {};\n if (canvasNode?.dataset) {\n canvasNode.dataset.forgeaxAssetPreview = String(target.targetId);\n canvasNode.dataset.forgeaxPreviewPanel = surfaceOwner.panelId;\n canvasNode.dataset.forgeaxPreviewPage = surfaceOwner.pageType;\n }\n logResourceOpen('preview-surface-hosted', {\n pageType: surfaceOwner.pageType,\n panelId: surfaceOwner.panelId,\n targetId: String(target.targetId),\n surfaceTag: surface.tagName ?? null,\n });\n const releasePlacement = () => {\n // Return the borrowed surface to Engine parking before awaiting cleanup.\n stopKeep();\n detachResize();\n // React may bind this same Engine surface again before detach resolves.\n // Release this placement synchronously so old cleanup cannot remove it.\n if (surface.parentNode === container) {\n if (typeof container.removeChild === 'function') container.removeChild(surface);\n else container.replaceChildren?.();\n }\n if (containerOwners.get(container) === surfaceOwner) containerOwners.delete(container);\n delete container.dataset.forgeaxPreviewPanel;\n delete container.dataset.forgeaxPreviewPage;\n delete container.dataset.forgeaxAssetPreview;\n };\n let attachment: Promise<void | (() => void)>;\n try {\n attachment = typeof presentation.attach === 'function'\n ? Promise.resolve(presentation.attach({ target: target as EngineWorkspaceTarget, element: surface, owner: surfaceOwner }))\n : Promise.resolve();\n } catch (cause) {\n releasePlacement();\n throw cause;\n }\n return {\n ok: true,\n dispose: async () => {\n releasePlacement();\n const detach = await attachment;\n await detach?.();\n },\n };\n };\n\n const first = resolveSurface();\n if (first) {\n if (isEditorOwnerSurface(first, container, { target, editorTargetId })) return refuseEditor();\n return installSurface(first);\n }\n\n const document = container.ownerDocument;\n const win = document?.defaultView ?? globalThis;\n const Observer = document?.defaultView?.MutationObserver ?? globalThis.MutationObserver;\n const canWatch = typeof Observer === 'function' || typeof win.requestAnimationFrame === 'function';\n if (!canWatch) return missingSurface();\n\n let hosted: Extract<PreviewSurfaceResult, { ok: true }> | undefined;\n const stopWatch = watchUntilReady({\n document,\n probe: () => {\n if (hosted) return true;\n const surface = resolveSurface();\n if (!surface || isEditorOwnerSurface(surface, container, { target, editorTargetId })) return false;\n hosted = installSurface(surface);\n return true;\n },\n });\n return {\n ok: true,\n dispose: async () => {\n stopWatch();\n await hosted?.dispose?.();\n },\n };\n}\n","import type { Context } from '@forgeax/engine-plugin';\nimport type { FrontendConfig, ResourceIdentity, PanelLayout, PanelMount, PageTypeContribution, PageHost, PanelHost, Dispose } from './frontend-contract.ts';\nimport type { ViewPresentation, PresentationConfig } from './engine-presentation.ts';\nimport type { ViewWorkspaceClient } from './client.ts';\nimport { liveEnginePresentation } from './engine-presentation.ts';\nimport { dedicatedPreviewPresentation } from './preview-surface.ts';\nimport { logResourceOpen } from './resource-open.ts';\n\nexport const RESOURCE_PREVIEW_LAYOUT = Object.freeze<PanelLayout>({\n dock: 'fill',\n stack: 'tabs',\n order: 0,\n});\n\nexport const RESOURCE_PROPERTIES_LAYOUT = Object.freeze<PanelLayout>({\n dock: 'right',\n size: Object.freeze({ value: 0.36, unit: 'fraction' }),\n stack: 'tabs',\n order: 1,\n});\n\nexport const RESOURCE_FALLBACK_LAYOUT = Object.freeze<PanelLayout>({\n dock: 'fill',\n stack: 'tabs',\n order: 0,\n});\n\nexport function createResourcePageTypeContribution(identity: ResourceIdentity): PageTypeContribution {\n return {\n typeId: identity.PAGE_TYPE,\n context: 'project',\n titleKey: identity.PAGE_TITLE_I18N_KEY,\n order: identity.PAGE_ORDER,\n closable: true,\n singleton: true,\n initial: false,\n openable: true,\n layout: 'dock',\n showPanelRail: true,\n hideWhenInactive: true,\n resourceSelector: identity.RESOURCE_SELECTOR,\n priority: identity.PAGE_PRIORITY,\n };\n}\n\nexport function createResourcePanelClaims(identity: ResourceIdentity, props: { client?: ViewWorkspaceClient; presentation?: ViewPresentation; previewProps?: Record<string, unknown> } = {}) {\n const claims: PanelMount[] = [];\n if (identity.PREVIEW_SLOT) {\n const owner = Object.freeze({\n panelId: identity.PREVIEW_SLOT,\n pageType: identity.PAGE_TYPE,\n });\n claims.push({\n id: identity.PREVIEW_SLOT,\n pageType: identity.PAGE_TYPE,\n titleKey: identity.PREVIEW_TITLE_I18N_KEY,\n activity: { labelKey: identity.PREVIEW_TITLE_I18N_KEY, icon: identity.PREVIEW_ICON },\n layout: identity.PREVIEW_LAYOUT ?? RESOURCE_PREVIEW_LAYOUT,\n panel: identity.PREVIEW_PANEL ?? identity.PREVIEW_SLOT,\n props: {\n client: props.client,\n presentation: dedicatedPreviewPresentation(props.presentation, owner),\n owner,\n ...props.previewProps,\n },\n });\n }\n claims.push({\n id: identity.PROPERTIES_SLOT,\n pageType: identity.PAGE_TYPE,\n titleKey: identity.PROPERTIES_TITLE_I18N_KEY,\n activity: { labelKey: identity.PROPERTIES_TITLE_I18N_KEY, icon: identity.PROPERTIES_ICON },\n layout: identity.PROPERTIES_LAYOUT,\n panel: identity.PROPERTIES_PANEL,\n props: { client: props.client },\n });\n return Object.freeze(claims);\n}\n\nexport async function applyResourcePagePlugin(ctx: Context, config: FrontendConfig & PresentationConfig, identity: ResourceIdentity, extras: { previewProps?: Record<string, unknown> } = {}) {\n const panelHost = config.panelHost ?? ctx.get?.('panelHost', false);\n if (!panelHost) {\n logResourceOpen('resource-page-skipped', {\n reason: 'panel-host-missing',\n pageType: identity?.PAGE_TYPE ?? null,\n }, { level: 'warn' });\n return;\n }\n const pageHost = config.pageHost ?? ctx.get?.('pageHost', false);\n if (!pageHost) {\n throw new TypeError(`View ${identity.PAGE_TYPE} Frontend Plugin requires pageHost`);\n }\n return mountResourcePage(ctx, config, identity, pageHost, panelHost, extras);\n}\n\nasync function mountResourcePage(ctx: Context, config: FrontendConfig & PresentationConfig, identity: ResourceIdentity, pageHost: PageHost, panelHost: PanelHost, extras: { previewProps?: Record<string, unknown> } = {}) {\n const presentation = liveEnginePresentation(ctx, config);\n const unregisterPageType = pageHost.registerType(createResourcePageTypeContribution(identity));\n logResourceOpen('resource-page-registered', {\n pageType: identity.PAGE_TYPE,\n kinds: identity.RESOURCE_SELECTOR?.kinds ?? null,\n });\n const workspaceClient = ctx.get('viewOperationClient');\n const disposers: Dispose[] = [];\n ctx.effect(() => async () => {\n for (const dispose of [...disposers].reverse()) await dispose?.();\n unregisterPageType();\n });\n try {\n for (const claim of createResourcePanelClaims(identity, {\n client: workspaceClient,\n presentation,\n previewProps: extras.previewProps,\n })) {\n disposers.push(await panelHost.mountPanel(claim));\n }\n } catch (error) {\n for (const dispose of [...disposers].reverse()) await dispose?.();\n unregisterPageType();\n throw error;\n }\n}\n","import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\nimport {\n RESOURCE_PREVIEW_LAYOUT,\n RESOURCE_PROPERTIES_LAYOUT,\n} from '@forgeax/view-workspace-core/resource-page';\n\nexport const PLUGIN_ID = 'forgeax.view.material';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.page.material.frontend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/material/frontend';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.material;\nexport const PAGE_TITLE_I18N_KEY = 'view.pages.material';\nexport const PAGE_ORDER = 30;\nexport const PREVIEW_SLOT = 'material-preview';\nexport const PROPERTIES_SLOT = 'material-properties';\nexport const SLOT = PROPERTIES_SLOT;\nexport const RESOURCE_KINDS = Object.freeze(['material']);\nexport const RESOURCE_SELECTOR = Object.freeze({ kinds: RESOURCE_KINDS });\nexport const PAGE_PRIORITY = 20;\nexport const PREVIEW_LAYOUT = RESOURCE_PREVIEW_LAYOUT;\nexport const PROPERTIES_LAYOUT = RESOURCE_PROPERTIES_LAYOUT;\nexport const PANEL_LAYOUT = PROPERTIES_LAYOUT;\nexport const PREVIEW_PANEL = 'MaterialPreview';\nexport const PROPERTIES_PANEL = 'MaterialProperties';\nexport const PREVIEW_ICON = 'sparkle';\nexport const PROPERTIES_ICON = 'sliders';\nexport const PREVIEW_TITLE_I18N_KEY = 'view.slots.materialPreview';\nexport const PROPERTIES_TITLE_I18N_KEY = 'view.slots.materialProperties';\nexport const TITLE_I18N_KEY = PROPERTIES_TITLE_I18N_KEY;\n","import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\nimport {\n RESOURCE_PREVIEW_LAYOUT,\n RESOURCE_PROPERTIES_LAYOUT,\n} from '@forgeax/view-workspace-core/resource-page';\n\nexport const PLUGIN_ID = 'forgeax.view.mesh';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.page.mesh.frontend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/mesh/frontend';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.mesh;\nexport const PAGE_TITLE_I18N_KEY = 'view.pages.mesh';\nexport const PAGE_ORDER = 31;\nexport const PREVIEW_SLOT = 'mesh-preview';\nexport const PROPERTIES_SLOT = 'mesh-properties';\nexport const RESOURCE_KINDS = Object.freeze(['mesh']);\nexport const RESOURCE_SELECTOR = Object.freeze({ kinds: RESOURCE_KINDS });\nexport const PAGE_PRIORITY = 20;\nexport const PREVIEW_LAYOUT = RESOURCE_PREVIEW_LAYOUT;\nexport const PROPERTIES_LAYOUT = RESOURCE_PROPERTIES_LAYOUT;\nexport const PREVIEW_PANEL = 'MeshPreview';\nexport const PROPERTIES_PANEL = 'MeshProperties';\nexport const PREVIEW_ICON = 'box';\nexport const PROPERTIES_ICON = 'detail';\nexport const PREVIEW_TITLE_I18N_KEY = 'view.slots.meshPreview';\nexport const PROPERTIES_TITLE_I18N_KEY = 'view.slots.meshProperties';\n","import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\nimport {\n RESOURCE_PREVIEW_LAYOUT,\n RESOURCE_PROPERTIES_LAYOUT,\n} from '@forgeax/view-workspace-core/resource-page';\n\nexport const PLUGIN_ID = 'forgeax.view.texture';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.page.texture.frontend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/texture/frontend';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.texture;\nexport const PAGE_TITLE_I18N_KEY = 'view.pages.texture';\nexport const PAGE_ORDER = 32;\nexport const PREVIEW_SLOT = 'texture-preview';\nexport const PROPERTIES_SLOT = 'texture-properties';\nexport const RESOURCE_KINDS = Object.freeze(['texture', 'image']);\nexport const RESOURCE_SELECTOR = Object.freeze({ kinds: RESOURCE_KINDS });\nexport const PAGE_PRIORITY = 20;\nexport const PREVIEW_LAYOUT = RESOURCE_PREVIEW_LAYOUT;\nexport const PROPERTIES_LAYOUT = RESOURCE_PROPERTIES_LAYOUT;\nexport const PREVIEW_PANEL = 'TexturePreview';\nexport const PROPERTIES_PANEL = 'TextureProperties';\nexport const PREVIEW_ICON = 'image';\nexport const PROPERTIES_ICON = 'detail';\nexport const PREVIEW_TITLE_I18N_KEY = 'view.slots.texturePreview';\nexport const PROPERTIES_TITLE_I18N_KEY = 'view.slots.textureProperties';\n","/** DOM presentation only; the frontend Fiber owns this mount and its disposal. */\nimport type { ViewDisplayStatus, DisplayStatusInput } from '../status.ts';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport type { WorkspaceState } from '@forgeax/view-workspace-core/contract';\nimport { createWorkspaceStateReader, type WorkspaceStateClient } from '@forgeax/view-workspace-core/workspace-state';\n\ntype ObserverClient = Pick<ViewWorkspaceClient, 'call'> & Partial<Pick<ViewWorkspaceClient, 'capture'>> & Partial<WorkspaceStateClient>;\ntype PlayFrame = { targetId: string; png?: string; frameId?: number; error: string };\n\nfunction failureText(error: unknown): string {\n if (error && typeof error === 'object' && 'hint' in error && typeof error.hint === 'string') return error.hint;\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function mountRunObserver({ document, surface, status, client }: { document: Document; surface: HTMLElement; status: ViewDisplayStatus; client: ObserverClient }) {\n let live = true;\n const summary = document.createElement('p');\n summary.setAttribute('role', 'status');\n const picture = document.createElement('img');\n picture.alt = 'Latest Engine run capture';\n const logs = document.createElement('pre');\n logs.setAttribute('aria-label', 'Run log');\n const form = document.createElement('form');\n const project = document.createElement('input');\n project.className = 'fx-input';\n project.placeholder = 'Engine project path';\n project.setAttribute('aria-label', 'Observed project path');\n const run = document.createElement('input');\n run.className = 'fx-input';\n run.placeholder = 'Run ID';\n run.setAttribute('aria-label', 'Observed run ID');\n const connect = document.createElement('button');\n connect.className = 'fx-button fx-button--primary fx-button--compact';\n connect.type = 'submit'; connect.textContent = 'Observe run';\n const disconnect = document.createElement('button');\n disconnect.className = 'fx-button fx-button--secondary fx-button--compact';\n disconnect.type = 'button'; disconnect.textContent = 'Disconnect';\n form.append(project, run, connect, disconnect);\n const bind = async (args: { root: string | null; runId?: string }) => {\n connect.disabled = disconnect.disabled = true;\n try { const next = await client.call<DisplayStatusInput>('display.bind', args); if (live) status.update(next); }\n catch (error) { if (live) summary.textContent = failureText(error); }\n finally { if (live) connect.disabled = disconnect.disabled = false; }\n };\n let workspace: WorkspaceState | null = null;\n let playFrame: PlayFrame | undefined;\n let playKey = '';\n let playGeneration = 0;\n let playTimer: ReturnType<typeof setTimeout> | undefined;\n let playAbort: AbortController | undefined;\n const activePlay = () => {\n const play = workspace?.play;\n const target = play?.target;\n if (typeof target?.targetId !== 'string' || !target.targetId || typeof target.generation !== 'number') return null;\n return play;\n };\n const capturePlay = (target: { targetId: string; generation: number }, signal?: AbortSignal) => {\n const args = { targetId: target.targetId, targetGeneration: target.generation };\n const options = { ...(signal === undefined ? {} : { signal }), reportError: false };\n if (typeof client.capture === 'function') return client.capture({ ...args, ...options });\n return client.call('preview.capture', args, options);\n };\n const stopPlayCapture = () => {\n playGeneration += 1;\n clearTimeout(playTimer);\n playTimer = undefined;\n playAbort?.abort();\n playAbort = undefined;\n };\n const watchPlay = () => {\n const token = playGeneration;\n const abort = new AbortController();\n playAbort = abort;\n const step = async () => {\n if (!live || token !== playGeneration) return;\n const play = activePlay();\n if (!play || play.phase !== 'running' || typeof play.target.generation !== 'number') return;\n const target = { targetId: play.target.targetId, generation: play.target.generation };\n try {\n const captured = await capturePlay(target, abort.signal) as { png?: string; frameId?: number } | null;\n if (!live || token !== playGeneration) return;\n const current = activePlay();\n if (current?.target.targetId !== target.targetId || current.phase !== 'running') return;\n playFrame = { targetId: target.targetId, png: captured?.png, frameId: captured?.frameId, error: '' };\n } catch (error) {\n if (!live || token !== playGeneration || abort.signal.aborted) return;\n const previous = playFrame?.targetId === target.targetId ? playFrame : undefined;\n const busy = failureText(error).includes('preview capture is busy')\n || (error && typeof error === 'object' && 'code' in error && (error.code === 'view-workspace-target-busy' || error.code === 'engine-workspace-target-busy'));\n playFrame = {\n targetId: target.targetId,\n png: previous?.png,\n frameId: previous?.frameId,\n error: busy ? '' : failureText(error),\n };\n }\n render();\n if (!live || token !== playGeneration || activePlay()?.phase !== 'running') return;\n playTimer = setTimeout(step, 1000);\n };\n void step();\n };\n const syncPlay = () => {\n const play = activePlay();\n const key = play?.phase === 'running' && typeof play.target.generation === 'number'\n ? `${play.target.targetId}:${play.target.generation}`\n : '';\n if (key === playKey) return;\n playKey = key;\n playFrame = undefined;\n stopPlayCapture();\n if (key) watchPlay();\n };\n const submit = (event: Event) => {\n event.preventDefault();\n if (activePlay()) return;\n const root = String(project.value ?? '').trim();\n const runId = String(run.value ?? '').trim();\n if (!root || !runId) {\n summary.textContent = 'Provide root and exact runId, or null root to disconnect.';\n return;\n }\n void bind({ root, runId });\n };\n const detach = () => { if (!activePlay()) void bind({ root: null }); };\n form.addEventListener('submit', submit);\n disconnect.addEventListener('click', detach);\n surface.append(form, summary, picture, logs);\n let bindingKey: string | undefined;\n const showImage = (png: string | undefined) => {\n if (png?.startsWith('data:image/png;base64,')) {\n if (picture.getAttribute('src') !== png) picture.setAttribute('src', png);\n if (picture.hidden !== false) picture.hidden = false;\n return;\n }\n if (picture.getAttribute('src') != null) picture.removeAttribute('src');\n if (picture.hidden !== true) picture.hidden = true;\n };\n const renderPlay = (play: NonNullable<WorkspaceState['play']>) => {\n if (form.hidden !== true) form.hidden = true;\n const frame = playFrame?.targetId === play.target.targetId ? playFrame : undefined;\n const nextSummary = frame?.error\n ? frame.error\n : play.phase === 'running'\n ? `Play · running${frame?.frameId === undefined ? '' : ` · Frame ${frame.frameId}`}${frame?.png ? '' : ' · Capturing…'}`\n : `Play · ${play.phase}`;\n if (summary.textContent !== nextSummary) summary.textContent = nextSummary;\n showImage(frame?.png);\n if (logs.textContent !== '') logs.textContent = '';\n };\n const render = () => {\n const play = activePlay();\n if (play) {\n renderPlay(play);\n return;\n }\n if (form.hidden) form.hidden = false;\n const value = status.snapshot();\n const nextKey = JSON.stringify(value.binding);\n if (bindingKey !== nextKey) {\n bindingKey = nextKey;\n project.value = value.binding?.root ?? '';\n run.value = value.binding?.runId ?? '';\n }\n const observation = value.observation;\n const image = observation?.image;\n const stamp = image?.capturedAt;\n const stale = stamp && (Date.now() - Date.parse(stamp) > 15000 || image.revision !== observation?.status?.revision || observation?.status?.phase !== 'ready');\n const nextSummary = value.error ?? (observation\n ? `${observation?.status?.phase ?? value.status}${observation?.status?.runId ? ` · Run ${observation.status.runId.slice(0, 8)}` : ''}${observation?.status?.inputVersion ? ` · Input ${observation.status.inputVersion.slice(7, 19)}` : ''} · ${stamp ? `Captured ${stamp}${image.frameId === undefined ? '' : ` · Frame ${image.frameId}`}${stale ? ' · Stale image' : ''}` : 'No captured image yet'}`\n : 'No Engine run is connected.');\n if (summary.textContent !== nextSummary) summary.textContent = nextSummary;\n showImage(image?.png);\n const nextLogs = (observation?.droppedLogs ? `${observation.droppedLogs} earlier log entries omitted.\\n` : '') + (observation?.logs?.map(entry => `[${entry.sequence}] ${entry.level}: ${entry.text}`).join('\\n') ?? '');\n if (logs.textContent !== nextLogs) logs.textContent = nextLogs;\n };\n const unsubscribeObservation = status.subscribe(render);\n const reader = createWorkspaceStateReader(client && typeof client.subscribe === 'function' ? client as WorkspaceStateClient : undefined);\n const unsubscribeWorkspace = reader.subscribe(() => {\n workspace = reader.getSnapshot();\n syncPlay();\n if (live) render();\n });\n render();\n const dispose = () => {\n live = false;\n stopPlayCapture();\n unsubscribeObservation();\n unsubscribeWorkspace();\n reader.dispose();\n form.removeEventListener('submit', submit);\n disconnect.removeEventListener('click', detach);\n };\n return dispose;\n}\n","export type ViewLocale = 'en' | 'zh';\n\nconst pluginSinks = new Set<(locale: ViewLocale) => void>();\nconst shellListeners = new Set<() => void>();\n\n/** @type {ViewLocale} */\nlet viewLocale: ViewLocale = 'zh';\n\nfunction notifyPlugins(locale: ViewLocale) {\n for (const sink of pluginSinks) {\n try {\n sink(locale);\n } catch {\n /* isolated plugin failure */\n }\n }\n}\n\nfunction notifyShell() {\n for (const listener of shellListeners) listener();\n}\n\n/**\n * Active UI locale for the entire View shell (single source of truth).\n */\nexport function getViewLocale() {\n return viewLocale;\n}\n\nexport function subscribeViewLocale(listener: () => void) {\n if (typeof listener !== 'function') {\n throw new TypeError('subscribeViewLocale requires a listener function');\n }\n shellListeners.add(listener);\n return () => shellListeners.delete(listener);\n}\n\n/**\n * Change locale for shell React trees and every registered product-plugin i18n sink.\n */\nexport function setViewLocale(locale: unknown) {\n if (locale !== 'en' && locale !== 'zh') return;\n if (viewLocale === locale) return;\n viewLocale = locale;\n notifyPlugins(locale);\n notifyShell();\n if (typeof document !== 'undefined') {\n document.documentElement.lang = locale;\n }\n}\n\n/**\n * @param {(locale: ViewLocale) => void} setLocale\n * @returns {() => void} unregister\n */\nexport function registerViewLocaleSink(setLocale: (locale: ViewLocale) => void) {\n if (typeof setLocale !== 'function') {\n throw new TypeError('registerViewLocaleSink requires a setLocale function');\n }\n pluginSinks.add(setLocale);\n setLocale(viewLocale);\n return () => pluginSinks.delete(setLocale);\n}\n","import type { ViewLocale } from './locale-bridge.ts';\n\ntype Catalog = { readonly [key: string]: string | Catalog };\n\n/** Product plugins retain their catalogs; lookup and subscription semantics are shared. */\nexport function createPluginI18n(catalogs: Record<ViewLocale, Catalog>) {\n let current: ViewLocale = 'zh';\n const listeners = new Set<() => void>();\n const lookup = (catalog: Catalog, key: string): string | undefined => {\n let value: string | Catalog | undefined = catalog;\n for (const part of key.split('.')) value = typeof value === 'object' ? value[part] : undefined;\n return typeof value === 'string' ? value : undefined;\n };\n const t = (key: string, vars?: Record<string, unknown>): string => {\n const message = lookup(catalogs[current], key) ?? lookup(catalogs.en, key) ?? key;\n return vars ? message.replace(/\\{\\{(\\w+)\\}\\}/g, (_: string, name: string) => String(vars[name] ?? '')) : message;\n };\n const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => { listeners.delete(listener); };\n };\n const setLocale = (next: ViewLocale) => {\n if (next !== 'en' && next !== 'zh') return;\n current = next;\n for (const listener of listeners) listener();\n };\n return { t, subscribe, getLocale: () => current, setLocale };\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","export const CONTENT_BROWSER_UI_SCHEMA_VERSION = 'forgeax.view.content-browser.ui/1';\n\nexport const CONTENT_BROWSER_ACTIONS = Object.freeze({\n search: 'content-browser.search',\n navigate: 'content-browser.navigate',\n navigateBack: 'content-browser.navigate.back',\n navigateForward: 'content-browser.navigate.forward',\n refresh: 'content-browser.refresh',\n setView: 'content-browser.view.set',\n setThumbnailSize: 'content-browser.thumbnail-size.set',\n setFilter: 'content-browser.filter.set',\n setSort: 'content-browser.sort.set',\n select: 'content-browser.select',\n activate: 'content-browser.activate',\n toggleFavorite: 'content-browser.favorite.toggle',\n toggleSourceGroup: 'content-browser.source-group.toggle',\n toggleDetailPanel: 'content-browser.detail-panel.toggle',\n togglePackExpansion: 'content-browser.pack.expand.toggle',\n showContextMenu: 'content-browser.context-menu.show',\n copyPath: 'content-browser.copy-path',\n});\n\nexport const CONTENT_BROWSER_MODEL_SCHEMA = Object.freeze({\n $id: CONTENT_BROWSER_UI_SCHEMA_VERSION,\n type: 'object',\n required: ['projectLabel', 'folder', 'view', 'files', 'folders'],\n properties: {\n projectLabel: { type: 'string' },\n folder: { type: 'string' },\n view: { enum: ['grid', 'list', 'column'] },\n thumbnailSize: { type: 'number', minimum: 48, maximum: 200 },\n detailPanelOpen: { type: 'boolean' },\n favorites: { type: 'array', items: { type: 'string' } },\n expandedPacks: { type: 'array', items: { type: 'string' } },\n folders: {\n type: 'array',\n items: {\n type: 'object',\n required: ['type', 'path', 'name', 'childCount'],\n properties: {\n type: { const: 'folder' },\n path: { type: 'string' },\n name: { type: 'string' },\n childCount: { type: 'number' },\n },\n },\n },\n files: {\n type: 'array',\n items: {\n type: 'object',\n required: ['type', 'path', 'name', 'family', 'assets'],\n properties: {\n type: { const: 'file' },\n path: { type: 'string' },\n name: { type: 'string' },\n family: {\n enum: ['code', 'config', 'doc', 'scene', 'pack', 'meta', 'image', 'audio', 'model', 'font', 'ui', 'data', 'other'],\n },\n isAssetPackage: { type: 'boolean' },\n assets: {\n type: 'array',\n items: {\n type: 'object',\n required: ['type', 'guid', 'kind', 'name', 'packPath'],\n properties: {\n type: { const: 'asset' },\n guid: { type: 'string' },\n kind: { type: 'string' },\n name: { type: 'string' },\n packPath: { type: 'string' },\n estimatedSize: { type: 'number' },\n packModifiedAt: { type: 'number' },\n },\n },\n },\n },\n },\n },\n },\n});\n","import type { CBFile, CBFileFamily, CBViewItem } from './types';\n\nexport const ALL_FILTER_FAMILIES = [\n 'dir', 'scene', 'pack', 'meta', 'model', 'image', 'audio', 'font', 'ui', 'code', 'config', 'doc', 'data',\n] as const;\n\n/** Sub-asset kinds for the filter menu. `scene` is omitted — use file type Scene instead. */\nexport const FILTERABLE_ASSET_KINDS = [\n 'plugin',\n 'mesh',\n 'material',\n 'texture',\n 'equirect',\n 'cube-texture',\n 'animation-clip',\n 'skeleton',\n 'audio',\n 'font',\n 'ui',\n] as const;\n\nconst SOURCE_TEXT_FAMILIES: ReadonlySet<CBFileFamily> = new Set([\n 'code', 'config', 'doc', 'data', 'pack', 'meta', 'scene',\n]);\nconst SOURCE_VIEW_EXTENSIONS = new Set(['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'json']);\n\nexport function dirOfPath(path: string): string {\n const index = path.lastIndexOf('/');\n return index < 0 ? '' : path.slice(0, index);\n}\n\nexport function childPath(parent: string, name: string): string {\n return parent ? `${parent}/${name}` : name;\n}\n\n/** Sanitise a typed address into a project-relative path (`''` = root). */\nexport function normalizePathInput(raw: string): string {\n return raw.trim().replace(/\\\\/g, '/').replace(/\\/+/g, '/').replace(/^\\/+|\\/+$/g, '');\n}\n\nexport function viewItemKey(item: CBViewItem): string {\n return item.type === 'asset' ? item.guid : item.path;\n}\n\nexport function isResourceGroup(assetCount: number): boolean {\n return assetCount > 1;\n}\n\nexport function fileFamilyOf(name: string): CBFileFamily {\n const lower = name.toLowerCase();\n if (lower.endsWith('.meta.json')) return 'meta';\n if (lower.endsWith('.pack.ts')) return 'pack';\n if (lower.endsWith('.pack.json')) return lower.includes('scene') ? 'scene' : 'pack';\n if (lower.endsWith('.scene.json') || lower === 'scene.json') return 'scene';\n if (lower.endsWith('.colliders.json')) return 'data';\n const ext = lower.split('.').pop() ?? '';\n if (['html', 'css', 'ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'py'].includes(ext)) return 'code';\n if (['json', 'lock'].includes(ext)) return 'config';\n if (['md', 'markdown', 'txt'].includes(ext)) return 'doc';\n if (['png', 'jpg', 'jpeg', 'webp', 'gif', 'svg', 'ico', 'hdr'].includes(ext)) return 'image';\n if (['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'opus'].includes(ext)) return 'audio';\n if (['glb', 'gltf', 'fbx'].includes(ext)) return 'model';\n if (['ttf', 'otf', 'woff', 'woff2'].includes(ext)) return 'font';\n return 'other';\n}\n\nexport function fileFamilyOfWithAssets(\n name: string,\n assets: readonly { kind: string }[],\n): CBFileFamily {\n if (name.toLowerCase().endsWith('.pack.ts')) return 'pack';\n const byName = fileFamilyOf(name);\n if (byName === 'pack' && assets.some((asset) => asset.kind === 'scene')) return 'scene';\n return byName;\n}\n\nexport function isSourceViewableFileName(name: string): boolean {\n const lower = name.toLowerCase();\n if (lower.endsWith('.pack.json') || lower.endsWith('.pack.ts')) return true;\n const ext = lower.includes('.') ? lower.slice(lower.lastIndexOf('.') + 1) : lower;\n return SOURCE_VIEW_EXTENSIONS.has(ext);\n}\n\nexport function fileSupportsDualPreview(\n file: Pick<CBFile, 'family' | 'assets' | 'name'>,\n): boolean {\n if (file.assets.length === 0) return false;\n return SOURCE_TEXT_FAMILIES.has(file.family) || isSourceViewableFileName(file.name);\n}\n\nexport function resolveDualPreviewFile(\n item: CBViewItem,\n diskFiles: readonly CBFile[],\n): CBFile | undefined {\n if (item.type === 'file') return item;\n if (item.type === 'asset') return diskFiles.find((file) => file.path === item.packPath);\n return undefined;\n}\n\nexport function formatBytes(bytes: number | undefined): string {\n if (bytes === undefined || bytes <= 0) return '';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nexport function formatDate(ms: number | undefined): string {\n if (!ms) return '';\n try {\n return new Date(ms).toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n } catch {\n return '';\n }\n}\n\nexport function compareItems(\n a: CBViewItem,\n b: CBViewItem,\n key: 'name' | 'kind' | 'packModifiedAt' | 'estimatedSize',\n dir: 'asc' | 'desc',\n): number {\n const sign = dir === 'desc' ? -1 : 1;\n if (key === 'kind') {\n return sign * itemKind(a).localeCompare(itemKind(b)) || sign * a.name.localeCompare(b.name);\n }\n if (key === 'packModifiedAt') {\n return sign * ((itemModified(a) - itemModified(b)) || a.name.localeCompare(b.name));\n }\n if (key === 'estimatedSize') {\n return sign * ((itemSize(a) - itemSize(b)) || a.name.localeCompare(b.name));\n }\n return sign * a.name.localeCompare(b.name);\n}\n\nfunction itemKind(item: CBViewItem): string {\n if (item.type === 'folder') return 'folder';\n if (item.type === 'file') return item.kindLabel || item.family;\n return item.kind;\n}\n\nfunction itemModified(item: CBViewItem): number {\n if (item.type === 'asset') return item.packModifiedAt ?? 0;\n if (item.type === 'file') return item.packModifiedAt ?? 0;\n return 0;\n}\n\nfunction itemSize(item: CBViewItem): number {\n if (item.type === 'asset') return item.estimatedSize ?? 0;\n if (item.type === 'file') return item.estimatedSize ?? 0;\n return 0;\n}\n\nexport function matchesSearch(item: CBViewItem, query: string): boolean {\n if (!query) return true;\n if (item.type === 'folder') {\n return item.name.toLowerCase().includes(query) || item.path.toLowerCase().includes(query);\n }\n if (item.type === 'file') {\n return item.name.toLowerCase().includes(query)\n || item.path.toLowerCase().includes(query)\n || item.assets.some((asset) => asset.name.toLowerCase().includes(query) || asset.kind.toLowerCase().includes(query));\n }\n return item.name.toLowerCase().includes(query)\n || item.guid.toLowerCase().startsWith(query)\n || item.kind.toLowerCase().includes(query);\n}\n","import {\n Bone,\n Box,\n Braces,\n Clapperboard,\n Database,\n File,\n FileCode2,\n FileText,\n Film,\n Folder,\n FolderOpen,\n Globe,\n Image,\n Layers,\n Music,\n Package,\n Paintbrush,\n Puzzle,\n Type,\n type LucideIcon,\n} from 'lucide-react';\nimport type { CBFileFamily, CBFilterFamily, CBViewItem } from './types';\n\nconst FAMILY_ICONS: Record<CBFilterFamily, LucideIcon> = {\n dir: Folder,\n scene: Clapperboard,\n pack: Package,\n meta: Layers,\n model: Box,\n image: Image,\n audio: Music,\n font: Type,\n ui: Paintbrush,\n code: FileCode2,\n config: Braces,\n doc: FileText,\n data: Database,\n other: File,\n};\n\nconst KIND_ICONS: Record<string, LucideIcon> = {\n plugin: Puzzle,\n mesh: Box,\n material: Paintbrush,\n texture: Image,\n image: Image,\n equirect: Globe,\n 'cube-texture': Globe,\n sampler: Layers,\n 'animation-clip': Film,\n 'animation-graph': Film,\n skeleton: Bone,\n skin: Bone,\n scene: Clapperboard,\n ui: Paintbrush,\n audio: Music,\n font: Type,\n video: Film,\n tileset: Layers,\n 'particle-effect': Layers,\n 'render-pipeline': Layers,\n};\n\nexport function familyIcon(family: CBFilterFamily | CBFileFamily): LucideIcon {\n return FAMILY_ICONS[family] ?? File;\n}\n\nexport function kindIcon(kind: string): LucideIcon {\n return KIND_ICONS[kind] ?? Package;\n}\n\nexport function itemIcon(item: CBViewItem, folderOpen = false): LucideIcon {\n if (item.type === 'folder') return folderOpen ? FolderOpen : Folder;\n if (item.type === 'file') return familyIcon(item.family);\n return kindIcon(item.kind);\n}\n","import {\n ALL_FILTER_FAMILIES,\n FILTERABLE_ASSET_KINDS,\n compareItems,\n dirOfPath,\n matchesSearch,\n} from './format';\nimport type {\n CBAsset,\n CBFile,\n CBFilter,\n CBFilterFamily,\n CBFolder,\n CBKindFilter,\n CBSortDir,\n CBSortKey,\n CBSortState,\n CBViewItem,\n} from './types';\n\nexport function translatedOrFallback(\n t: (key: string) => string,\n key: string,\n fallbackKey: string,\n): string {\n const label = t(key);\n return label === key ? t(fallbackKey) : label;\n}\n\nexport function assetKindLabel(\n kind: string,\n t: (key: string) => string,\n): string {\n return translatedOrFallback(\n t,\n `contentBrowser.assetKinds.${kind}`,\n 'contentBrowser.assetKinds.default',\n );\n}\n\nexport function buildFamilyFilters(\n activeFamilies: ReadonlySet<CBFilterFamily>,\n t: (key: string) => string,\n): CBFilter[] {\n return ALL_FILTER_FAMILIES.map((family) => ({\n id: `family:${family}`,\n family,\n label: translatedOrFallback(\n t,\n family === 'dir' ? 'contentBrowser.fileKinds.dir' : `contentBrowser.fileKinds.${family}`,\n 'contentBrowser.fileKinds.other',\n ),\n active: activeFamilies.has(family),\n }));\n}\n\nexport function buildKindFilters(\n activeKinds: ReadonlySet<string>,\n t: (key: string) => string,\n): CBKindFilter[] {\n return FILTERABLE_ASSET_KINDS.map((kind) => ({\n id: `kind:${kind}`,\n kind,\n label: assetKindLabel(kind, t),\n active: activeKinds.has(kind),\n }));\n}\n\nexport function toggleFilterId(\n filterId: string,\n activeFamilies: ReadonlySet<CBFilterFamily>,\n activeKinds: ReadonlySet<string>,\n): { families: Set<CBFilterFamily>; kinds: Set<string> } {\n const [scope, value] = filterId.split(':');\n const families = new Set(activeFamilies);\n const kinds = new Set(activeKinds);\n if (scope === 'kind' && value) {\n if (kinds.has(value)) kinds.delete(value);\n else kinds.add(value);\n return { families, kinds };\n }\n const family = value as CBFilterFamily;\n if (families.has(family)) families.delete(family);\n else families.add(family);\n return { families, kinds };\n}\n\nexport function fileKindLabel(\n file: Pick<CBFile, 'isAssetPackage' | 'family'>,\n t: (key: string) => string,\n): string {\n return file.isAssetPackage\n ? t('contentBrowser.fileKinds.assetPackage')\n : translatedOrFallback(\n t,\n `contentBrowser.fileKinds.${file.family}`,\n 'contentBrowser.fileKinds.other',\n );\n}\n\nexport function deriveViewItems({\n folders,\n files,\n currentPath,\n searchQuery,\n activeFamilies,\n activeKinds,\n sortState,\n expandedPacks,\n withKindLabel,\n}: {\n folders: readonly CBFolder[];\n files: readonly CBFile[];\n currentPath: string;\n searchQuery: string;\n activeFamilies: ReadonlySet<CBFilterFamily>;\n activeKinds: ReadonlySet<string>;\n sortState: CBSortState;\n expandedPacks: ReadonlySet<string>;\n withKindLabel: (file: CBFile) => CBFile;\n}): {\n foldersInPath: CBFolder[];\n filesInPath: CBFile[];\n viewItems: CBViewItem[];\n searchActive: boolean;\n kindFilterActive: boolean;\n} {\n const query = searchQuery.trim().toLowerCase();\n const searchActive = query !== '';\n const kindFilterActive = activeKinds.size > 0;\n const labeledFiles = files.map(withKindLabel);\n\n const foldersInPath = folders\n .filter((folder) => dirOfPath(folder.path) === currentPath)\n .filter(() => activeFamilies.size === 0 || activeFamilies.has('dir'))\n .filter((folder) => {\n if (!query) return true;\n const prefix = `${folder.path}/`;\n return matchesSearch(folder, query)\n || labeledFiles.some((file) => file.path.startsWith(prefix) && matchesSearch(file, query));\n })\n .toSorted((a, b) => compareItems(a, b, 'name', sortState.dir));\n\n const filesInPath = labeledFiles\n .filter((file) => dirOfPath(file.path) === currentPath)\n .filter((file) => activeFamilies.size === 0 || activeFamilies.has(file.family))\n .filter((file) => !query || matchesSearch(file, query))\n .toSorted((a, b) => compareItems(a, b, sortState.key, sortState.dir));\n\n if (kindFilterActive) {\n const seen = new Set<string>();\n const out: CBAsset[] = [];\n for (const file of filesInPath) {\n for (const asset of file.assets) {\n if (seen.has(asset.guid) || !activeKinds.has(asset.kind)) continue;\n if (query && !matchesSearch(asset, query) && !file.name.toLowerCase().includes(query)) continue;\n seen.add(asset.guid);\n out.push(asset);\n }\n }\n out.sort((a, b) => a.name.localeCompare(b.name));\n return { foldersInPath: [], filesInPath, viewItems: out, searchActive, kindFilterActive };\n }\n\n const items: CBViewItem[] = [...foldersInPath];\n for (const file of filesInPath) {\n if (file.assets.length === 0) {\n items.push(file);\n continue;\n }\n if (file.assets.length === 1) {\n items.push(...file.assets);\n continue;\n }\n items.push(file);\n if (searchActive || expandedPacks.has(file.path)) items.push(...file.assets);\n }\n return { foldersInPath, filesInPath, viewItems: items, searchActive, kindFilterActive };\n}\n\nexport function nextSortState(current: CBSortState, key: CBSortKey): CBSortState {\n if (current.key === key) return { key, dir: current.dir === 'asc' ? 'desc' : 'asc' };\n return { key, dir: 'asc' };\n}\n\nexport function setSortDir(current: CBSortState, dir: CBSortDir): CBSortState {\n return current.dir === dir ? current : { ...current, dir };\n}\n","import { type CSSProperties, type MouseEvent } from 'react';\nimport { Spinner } from '@forgeax/view-components';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { CONTENT_BROWSER_ACTIONS } from '../schema.ts';\nimport { formatBytes, formatDate, viewItemKey } from './format';\nimport { itemIcon } from './icons';\nimport { assetKindLabel, fileKindLabel } from './derived-view';\nimport type { CBSortKey, CBSortState, CBViewItem } from './types';\n\nconst COLUMNS: readonly { key: CBSortKey; labelKey: string; track: string }[] = [\n { key: 'name', labelKey: 'contentBrowser.details.colName', track: 'minmax(160px, 1fr)' },\n { key: 'kind', labelKey: 'contentBrowser.details.colType', track: '160px' },\n { key: 'estimatedSize', labelKey: 'contentBrowser.details.colSize', track: '90px' },\n { key: 'packModifiedAt', labelKey: 'contentBrowser.details.colModified', track: '130px' },\n];\n\nexport function CBDetailsList({\n items,\n selectedIds,\n openingKeys,\n sortState,\n onSort,\n onSelect,\n onActivate,\n onContextMenu,\n onBlankClick,\n}: {\n items: CBViewItem[];\n selectedIds: ReadonlySet<string>;\n openingKeys?: ReadonlySet<string>;\n sortState: CBSortState;\n onSort: (key: CBSortKey) => void;\n onSelect: (item: CBViewItem, event: MouseEvent) => void;\n onActivate: (item: CBViewItem) => void;\n onContextMenu: (event: MouseEvent, item: CBViewItem) => void;\n onBlankClick: () => void;\n}) {\n const { t } = useTranslation();\n const gridStyle = { '--cb-details-cols': COLUMNS.map((column) => column.track).join(' ') } as CSSProperties;\n\n return (\n <div\n className=\"cb-details-view cb-details-column\"\n role=\"grid\"\n style={gridStyle}\n onClick={(event) => { if (event.target === event.currentTarget) onBlankClick(); }}\n >\n <div className=\"cb-details-header\" role=\"row\">\n {COLUMNS.map((column) => {\n const active = sortState.key === column.key;\n return (\n <button\n key={column.key}\n type=\"button\"\n role=\"columnheader\"\n className={`cb-details-cell cb-details-th${active ? ' active' : ''}`}\n data-active={active ? 'true' : 'false'}\n aria-sort={active ? (sortState.dir === 'asc' ? 'ascending' : 'descending') : 'none'}\n onClick={() => onSort(column.key)}\n >\n <span>{t(column.labelKey)}</span>\n {active ? <span className=\"cb-details-sort-arrow\" aria-hidden=\"true\">{sortState.dir === 'asc' ? '\\u25b2' : '\\u25bc'}</span> : null}\n </button>\n );\n })}\n </div>\n <div className=\"cb-details-body\">\n {items.map((item) => {\n const key = viewItemKey(item);\n const selected = selectedIds.has(key);\n const opening = openingKeys?.has(key) ?? false;\n const Icon = itemIcon(item);\n const typeLabel = item.type === 'folder'\n ? t('contentBrowser.details.typeFolder')\n : item.type === 'file'\n ? item.kindLabel || fileKindLabel(item, t)\n : assetKindLabel(item.kind, t);\n const sizeLabel = item.type === 'folder'\n ? t('contentBrowser.details.itemCount', { count: item.childCount })\n : formatBytes(item.type === 'file' ? item.estimatedSize : item.estimatedSize);\n const modifiedLabel = item.type === 'folder' ? '' : formatDate(item.packModifiedAt);\n return (\n <div\n role=\"row\"\n tabIndex={0}\n className={`cb-details-row${selected ? ' sel' : ''}${opening ? ' is-busy' : ''}`}\n key={key}\n data-action={CONTENT_BROWSER_ACTIONS.select}\n aria-selected={selected}\n aria-busy={opening || undefined}\n onClick={(event) => onSelect(item, event)}\n onDoubleClick={() => onActivate(item)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n onActivate(item);\n } else if (event.key === ' ') {\n event.preventDefault();\n onSelect(item, event as unknown as MouseEvent);\n }\n }}\n onContextMenu={(event) => onContextMenu(event, item)}\n >\n <div className=\"cb-details-cell cb-details-name\" role=\"gridcell\">\n <span className={`cb-details-icon${item.type === 'folder' ? ' cb-folder-icon' : ''}`}><Icon size={16} /></span>\n <span className=\"cb-details-label\">{item.name}</span>\n {opening ? <Spinner className=\"cb-item-busy-inline\" label={t('contentBrowser.opening')} /> : null}\n </div>\n <div className=\"cb-details-cell cb-details-type\" role=\"gridcell\">{typeLabel}</div>\n <div className=\"cb-details-cell cb-details-size\" role=\"gridcell\">{sizeLabel}</div>\n <div className=\"cb-details-cell cb-details-modified\" role=\"gridcell\">{modifiedLabel}</div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { ChevronDown } from 'lucide-react';\nimport { Spinner } from '@forgeax/view-components';\nimport {\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { CONTENT_BROWSER_ACTIONS } from '../schema.ts';\nimport { viewItemKey } from './format';\nimport { itemIcon } from './icons';\nimport { assetKindLabel } from './derived-view';\nimport type { CBFile, CBViewItem, CBViewMode } from './types';\n\nexport function CBGrid({\n items,\n thumbnailSize,\n layout,\n searchActive,\n expandedPacks,\n selectedIds,\n openingKeys,\n onSelect,\n onActivate,\n onContextMenu,\n onTogglePackExpansion,\n onBlankClick,\n}: {\n items: CBViewItem[];\n thumbnailSize: number;\n layout: Exclude<CBViewMode, 'column'>;\n searchActive: boolean;\n expandedPacks: ReadonlySet<string>;\n selectedIds: ReadonlySet<string>;\n openingKeys?: ReadonlySet<string>;\n onSelect: (item: CBViewItem, event: MouseEvent) => void;\n onActivate: (item: CBViewItem) => void;\n onContextMenu: (event: MouseEvent, item: CBViewItem) => void;\n onTogglePackExpansion: (path: string) => void;\n onBlankClick: () => void;\n}) {\n const { t } = useTranslation();\n const rootRef = useRef<HTMLDivElement>(null);\n const [backdrops, setBackdrops] = useState<{ key: string; left: number; top: number; width: number; height: number; radius: string }[]>([]);\n const grouping = !searchActive;\n\n const measureGroups = useCallback(() => {\n const container = rootRef.current;\n if (!container) { setBackdrops((prev) => (prev.length ? [] : prev)); return; }\n const members = container.querySelectorAll<HTMLElement>('[data-cb-group]');\n if (members.length === 0) { setBackdrops((prev) => (prev.length ? [] : prev)); return; }\n const byGroup = new Map<string, HTMLElement[]>();\n members.forEach((el) => {\n const key = el.dataset.cbGroup;\n if (!key) return;\n const list = byGroup.get(key);\n if (list) list.push(el);\n else byGroup.set(key, [el]);\n });\n const pad = layout === 'list' ? 2 : 4;\n const radius = 8;\n // Padding-box right edge (inside any scrollbar). Do not clamp card bounds to\n // this — clamping cuts the backdrop short of the last card once a scrollbar\n // appears. Only the wrapped-row continuation uses it as a full-width edge.\n const containerRight = container.clientWidth;\n const next: typeof backdrops = [];\n for (const [key, els] of byGroup) {\n const rows: { top: number; els: HTMLElement[] }[] = [];\n for (const el of els) {\n const top = el.offsetTop;\n const row = rows.find((entry) => Math.abs(entry.top - top) <= 4);\n if (row) row.els.push(el);\n else rows.push({ top, els: [el] });\n }\n const multiRow = rows.length > 1;\n rows.forEach((row, idx) => {\n let left = Infinity;\n let right = -Infinity;\n let top = Infinity;\n let bottom = -Infinity;\n for (const el of row.els) {\n left = Math.min(left, el.offsetLeft);\n right = Math.max(right, el.offsetLeft + el.offsetWidth);\n top = Math.min(top, el.offsetTop);\n bottom = Math.max(bottom, el.offsetTop + el.offsetHeight);\n }\n const extendLeft = multiRow && idx > 0;\n const extendRight = multiRow && idx < rows.length - 1;\n const x0 = extendLeft ? 0 : left - pad;\n const x1 = extendRight ? containerRight : right + pad;\n next.push({\n key: `${key}#${idx}`,\n left: x0,\n top: top - pad,\n width: x1 - x0,\n height: bottom - top + pad * 2,\n radius: `${extendLeft ? 0 : radius}px ${extendRight ? 0 : radius}px ${extendRight ? 0 : radius}px ${extendLeft ? 0 : radius}px`,\n });\n });\n }\n setBackdrops(next);\n }, [layout]);\n\n useLayoutEffect(() => {\n measureGroups();\n const container = rootRef.current;\n if (!container) return;\n let raf = 0;\n const schedule = () => { cancelAnimationFrame(raf); raf = requestAnimationFrame(measureGroups); };\n const observer = new ResizeObserver(schedule);\n observer.observe(container);\n container.querySelectorAll<HTMLElement>('[data-cb-group]').forEach((el) => observer.observe(el));\n return () => { cancelAnimationFrame(raf); observer.disconnect(); };\n }, [measureGroups, items, expandedPacks, thumbnailSize, searchActive]);\n\n const renderCard = (item: CBViewItem, expanded = false, groupKey?: string): ReactNode => {\n const key = viewItemKey(item);\n const selected = selectedIds.has(key);\n const opening = openingKeys?.has(key) ?? false;\n const Icon = itemIcon(item);\n const isFolder = item.type === 'folder';\n const isFile = item.type === 'file';\n const groupCount = grouping && isFile && item.assets.length >= 2 ? item.assets.length : 0;\n const stacked = groupCount >= 2;\n const meta = isFolder\n ? null\n : isFile\n ? item.kindLabel\n : assetKindLabel(item.kind, t);\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className={`cb-grid-item cb-fe-card${isFolder ? ' cb-grid-folder' : ''}${isFile ? ' cb-file-card' : ''}${selected ? ' sel' : ''}${expanded ? ' cb-pack-expanded' : ''}${stacked ? ' cb-group-card' : ''}${groupKey ? ' cb-group-member' : ''}${opening ? ' is-busy' : ''}`}\n key={key}\n data-action={CONTENT_BROWSER_ACTIONS.select}\n data-cb-group={groupKey}\n aria-selected={selected}\n aria-busy={opening || undefined}\n onClick={(event) => onSelect(item, event)}\n onDoubleClick={() => onActivate(item)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n onActivate(item);\n } else if (event.key === ' ') {\n event.preventDefault();\n onSelect(item, event as unknown as MouseEvent);\n }\n }}\n onContextMenu={(event) => onContextMenu(event, item)}\n >\n <span className={`cb-grid-thumb cb-fe-thumb${isFile ? ' cb-file-thumb' : ''}${isFolder ? ' cb-folder-thumb' : ''}`}>\n <span className={isFolder ? 'cb-folder-icon' : 'cb-grid-icon'}><Icon /></span>\n {groupCount >= 1 ? (\n <button\n type=\"button\"\n className={`cb-group-badge${expanded ? ' open' : ''}`}\n data-action={CONTENT_BROWSER_ACTIONS.togglePackExpansion}\n title={t('contentBrowser.menu.expandSubAssets')}\n onClick={(event) => {\n event.stopPropagation();\n onSelect(item, event);\n onTogglePackExpansion((item as CBFile).path);\n }}\n >\n <span className=\"cb-group-badge-num\">{groupCount}</span>\n <ChevronDown size={11} />\n </button>\n ) : null}\n </span>\n <span className={`cb-grid-label cb-fe-label${meta ? ' has-kind' : ''}`}>\n <span className=\"cb-fe-name\">{item.name}</span>\n {meta ? <span className=\"cb-card-meta\">{meta}</span> : null}\n </span>\n {opening ? (\n layout === 'list' ? (\n <Spinner className=\"cb-item-busy-inline\" label={t('contentBrowser.opening')} />\n ) : (\n <span className=\"cb-item-busy-veil\">\n <Spinner label={t('contentBrowser.opening')} />\n </span>\n )\n ) : null}\n </div>\n );\n };\n\n const nodes: ReactNode[] = [];\n for (let index = 0; index < items.length; ) {\n const item = items[index];\n if (!item) { index += 1; continue; }\n if (grouping && item.type === 'file' && item.assets.length >= 2 && expandedPacks.has(item.path)) {\n const guids = new Set(item.assets.map((asset) => asset.guid));\n nodes.push(renderCard(item, true, item.path));\n let nextIndex = index + 1;\n for (; nextIndex < items.length; nextIndex += 1) {\n const next = items[nextIndex];\n if (!next || next.type !== 'asset' || !guids.has(next.guid)) break;\n nodes.push(renderCard(next, false, item.path));\n }\n index = nextIndex;\n continue;\n }\n nodes.push(renderCard(item));\n index += 1;\n }\n\n return (\n <div\n ref={rootRef}\n className={`cb-grid-view cb-fe-grid cb-layout-${layout}`}\n style={{ '--cb-thumb': `${thumbnailSize}px` } as CSSProperties}\n onClick={(event) => { if (event.target === event.currentTarget) onBlankClick(); }}\n >\n {backdrops.length > 0 ? (\n <div className=\"cb-group-backdrops\" aria-hidden=\"true\">\n {backdrops.map((backdrop) => (\n <div key={backdrop.key} className=\"cb-group-backdrop\" style={{ left: backdrop.left, top: backdrop.top, width: backdrop.width, height: backdrop.height, borderRadius: backdrop.radius }} />\n ))}\n </div>\n ) : null}\n {nodes}\n </div>\n );\n}\n","import { ChevronLeft, ChevronRight, Folder, RefreshCw } from 'lucide-react';\nimport { IconButton, MenuDropdown, Toolbar } from '@forgeax/view-components';\nimport { useCallback, useState, type KeyboardEvent, type MouseEvent } from 'react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { CONTENT_BROWSER_ACTIONS } from '../schema.ts';\nimport { normalizePathInput } from './format';\n\nfunction immediateChildren(allDirs: readonly string[], path: string): { name: string; path: string }[] {\n const prefix = path ? `${path}/` : '';\n const depth = path ? path.split('/').length : 0;\n const out: { name: string; path: string }[] = [];\n for (const dir of allDirs) {\n if (path && dir === path) continue;\n if (!dir.startsWith(prefix)) continue;\n if (dir.split('/').length !== depth + 1) continue;\n out.push({ name: dir.split('/').pop() ?? dir, path: dir });\n }\n return out.sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction LevelChevron({\n levelPath,\n activeNextSeg,\n allDirs,\n onNavigate,\n label,\n}: {\n levelPath: string;\n activeNextSeg: string | null;\n allDirs: readonly string[];\n onNavigate: (path: string) => void;\n label: string;\n}) {\n const children = immediateChildren(allDirs, levelPath);\n if (children.length === 0) {\n return (\n <span className=\"cb-crumb-chevron\" aria-hidden=\"true\">\n <ChevronRight size={12} />\n </span>\n );\n }\n return (\n <span className=\"cb-crumb-chevron\" onClick={(event) => event.stopPropagation()}>\n <MenuDropdown\n label={label}\n align=\"start\"\n className=\"cb-crumb-menu\"\n trigger={\n <button\n type=\"button\"\n className=\"cb-crumb-chevron-btn\"\n aria-label={label}\n title={label}\n onClick={(event) => event.stopPropagation()}\n >\n <ChevronRight size={12} />\n </button>\n }\n items={children.map((child) => ({\n id: child.path,\n label: child.name,\n icon: <Folder size={14} />,\n buttonProps: child.name === activeNextSeg ? { 'data-active': '' } : undefined,\n onSelect: () => onNavigate(child.path),\n }))}\n />\n </span>\n );\n}\n\nexport function CBNavigationBar({\n currentPath,\n projectLabel,\n allDirs,\n canGoBack,\n canGoForward,\n refreshDisabled,\n onBack,\n onForward,\n onRefresh,\n onNavigate,\n}: {\n currentPath: string;\n projectLabel: string;\n allDirs: readonly string[];\n canGoBack: boolean;\n canGoForward: boolean;\n refreshDisabled: boolean;\n onBack: () => void;\n onForward: () => void;\n onRefresh: () => void;\n onNavigate: (path: string) => void;\n}) {\n const { t } = useTranslation();\n const segments = currentPath ? currentPath.split('/').filter(Boolean) : [];\n const [editing, setEditing] = useState(false);\n const [draft, setDraft] = useState('');\n\n const beginEdit = useCallback(() => {\n setDraft(currentPath);\n setEditing(true);\n }, [currentPath]);\n\n const commit = useCallback(() => {\n onNavigate(normalizePathInput(draft));\n setEditing(false);\n }, [draft, onNavigate]);\n\n const onInputKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n commit();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n setEditing(false);\n }\n }, [commit]);\n\n const onAddressKeyDown = useCallback((event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n beginEdit();\n }\n }, [beginEdit]);\n\n const stopAndNavigate = (event: MouseEvent<HTMLButtonElement>, path: string) => {\n event.stopPropagation();\n onNavigate(path);\n };\n\n return (\n <Toolbar className=\"cb-navigation-bar\">\n <IconButton\n size=\"compact\"\n variant=\"quiet\"\n label={t('contentBrowser.back')}\n icon={<ChevronLeft size={14} />}\n data-action={CONTENT_BROWSER_ACTIONS.navigateBack}\n disabled={!canGoBack}\n onClick={onBack}\n />\n <IconButton\n size=\"compact\"\n variant=\"quiet\"\n label={t('contentBrowser.forward')}\n icon={<ChevronRight size={14} />}\n data-action={CONTENT_BROWSER_ACTIONS.navigateForward}\n disabled={!canGoForward}\n onClick={onForward}\n />\n <IconButton\n size=\"compact\"\n variant=\"quiet\"\n label={t('contentBrowser.refresh')}\n disabled={refreshDisabled}\n icon={<RefreshCw size={13} />}\n data-action={CONTENT_BROWSER_ACTIONS.refresh}\n onClick={onRefresh}\n />\n <div className=\"cb-address-slot\">\n {editing ? (\n <input\n autoFocus\n spellCheck={false}\n className=\"cb-address-input\"\n value={draft}\n placeholder={t('contentBrowser.actions.editPathPlaceholder')}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={onInputKeyDown}\n onBlur={() => setEditing(false)}\n onFocus={(event) => event.currentTarget.select()}\n />\n ) : (\n <div\n className=\"cb-address\"\n role=\"button\"\n tabIndex={0}\n title={t('contentBrowser.actions.editPath')}\n onClick={beginEdit}\n onKeyDown={onAddressKeyDown}\n >\n <div className=\"cb-address-crumb\">\n <button\n type=\"button\"\n className={segments.length ? 'cb-crumb-item' : 'cb-crumb-item cb-crumb-current'}\n aria-current={segments.length === 0 ? 'page' : undefined}\n data-action={CONTENT_BROWSER_ACTIONS.navigate}\n onClick={(event) => stopAndNavigate(event, '')}\n >\n {projectLabel}\n </button>\n {segments.map((segment, index) => {\n const path = segments.slice(0, index + 1).join('/');\n const parentPath = segments.slice(0, index).join('/');\n const parentLabel = index === 0 ? projectLabel : (segments[index - 1] ?? projectLabel);\n const isCurrent = index === segments.length - 1;\n return (\n <span className=\"cb-crumb-segment\" key={path}>\n <LevelChevron\n levelPath={parentPath}\n activeNextSeg={segment}\n allDirs={allDirs}\n onNavigate={onNavigate}\n label={t('contentBrowser.actions.openSubfolders', { name: parentLabel })}\n />\n <button\n type=\"button\"\n className={isCurrent ? 'cb-crumb-item cb-crumb-current' : 'cb-crumb-item'}\n aria-current={isCurrent ? 'page' : undefined}\n data-action={CONTENT_BROWSER_ACTIONS.navigate}\n onClick={(event) => stopAndNavigate(event, path)}\n >\n {segment}\n </button>\n </span>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </Toolbar>\n );\n}\n","import type { CBFileFamily, PreviewFileInfo } from '../types';\n\n/** Keep in sync with `view-workspace-core/src/file-preview.ts`. */\nexport const MAX_BINARY_PREVIEW_BYTES = 10 * 1024 * 1024;\n\nexport function isBrowserMediaPreviewKind(kind: string): boolean {\n return kind === 'image' || kind === 'audio' || kind === 'video';\n}\n\nexport function isFontPreviewInfo(info: Pick<PreviewFileInfo, 'kind' | 'mime'>): boolean {\n return info.kind === 'binary' && info.mime.startsWith('font/');\n}\n\nexport function familySuggestsMediaPreview(family: CBFileFamily): boolean {\n return family === 'image' || family === 'audio' || family === 'font';\n}\n\nexport function familySuggestsEnginePreview(family: CBFileFamily): boolean {\n return family === 'model';\n}\n\nexport function svgMarkupSrc(content: string): string {\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(content)}`;\n}\n\nexport function mediaPreviewBlockedReason(\n info: PreviewFileInfo,\n): 'too-large' | 'unavailable' | null {\n if (info.dataUrl || (info.kind === 'image' && info.content)) return null;\n if (info.size > MAX_BINARY_PREVIEW_BYTES) return 'too-large';\n return 'unavailable';\n}\n","import {\n isBrowserMediaPreviewKind,\n isFontPreviewInfo,\n mediaPreviewBlockedReason,\n svgMarkupSrc,\n} from './media-preview-policy';\nimport type { PreviewFileInfo } from '../types';\n\nexport function MediaPreview({\n info,\n fileName,\n t,\n}: {\n info: PreviewFileInfo;\n fileName: string;\n t: (key: string) => string;\n}) {\n if (isFontPreviewInfo(info)) {\n return <FontPreview info={info} sample={fileName} t={t} />;\n }\n if (!isBrowserMediaPreviewKind(info.kind)) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noMediaPreview')}</div>;\n }\n\n const blocked = mediaPreviewBlockedReason(info);\n if (blocked === 'too-large') {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.previewTooLarge')}</div>;\n }\n if (blocked === 'unavailable') {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noMediaPreview')}</div>;\n }\n\n const src = info.dataUrl ?? (info.content ? svgMarkupSrc(info.content) : undefined);\n if (!src) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noMediaPreview')}</div>;\n }\n\n if (info.kind === 'audio') {\n return (\n <div className=\"cb-preview-media\">\n <audio className=\"cb-preview-audio\" controls preload=\"metadata\" src={src} aria-label={fileName} />\n </div>\n );\n }\n if (info.kind === 'video') {\n return (\n <div className=\"cb-preview-media\">\n <video className=\"cb-preview-video\" controls preload=\"metadata\" src={src} aria-label={fileName} />\n </div>\n );\n }\n return (\n <div className=\"cb-preview-media\">\n <img className=\"cb-preview-image\" src={src} alt={fileName} decoding=\"async\" />\n </div>\n );\n}\n\nfunction FontPreview({\n info,\n sample,\n t,\n}: {\n info: PreviewFileInfo;\n sample: string;\n t: (key: string) => string;\n}) {\n const blocked = mediaPreviewBlockedReason(info);\n if (blocked === 'too-large') {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.previewTooLarge')}</div>;\n }\n if (!info.dataUrl) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noMediaPreview')}</div>;\n }\n const fontId = `cb-preview-font-${info.path.replace(/[^\\w-]+/g, '-')}`;\n return (\n <div className=\"cb-preview-media cb-preview-font\">\n <style>{`@font-face{font-family:${fontId};src:url(${info.dataUrl});font-display:swap;}`}</style>\n <p className=\"cb-preview-font-sample\" style={{ fontFamily: fontId }}>\n {t('contentBrowser.preview.fontSample')}\n </p>\n <p className=\"cb-preview-font-meta\">{sample}</p>\n </div>\n );\n}\n","export interface LanguageResolution {\n readonly lang: string;\n readonly label: string;\n}\n\nconst EXT_LANGUAGE: Readonly<Record<string, LanguageResolution>> = {\n ts: { lang: 'typescript', label: 'TypeScript' },\n mts: { lang: 'typescript', label: 'TypeScript' },\n cts: { lang: 'typescript', label: 'TypeScript' },\n tsx: { lang: 'tsx', label: 'TSX' },\n js: { lang: 'javascript', label: 'JavaScript' },\n mjs: { lang: 'javascript', label: 'JavaScript' },\n cjs: { lang: 'javascript', label: 'JavaScript' },\n jsx: { lang: 'jsx', label: 'JSX' },\n json: { lang: 'json', label: 'JSON' },\n jsonc: { lang: 'jsonc', label: 'JSONC' },\n json5: { lang: 'json5', label: 'JSON5' },\n css: { lang: 'css', label: 'CSS' },\n scss: { lang: 'scss', label: 'SCSS' },\n html: { lang: 'html', label: 'HTML' },\n htm: { lang: 'html', label: 'HTML' },\n md: { lang: 'markdown', label: 'Markdown' },\n markdown: { lang: 'markdown', label: 'Markdown' },\n py: { lang: 'python', label: 'Python' },\n rs: { lang: 'rust', label: 'Rust' },\n wgsl: { lang: 'wgsl', label: 'WGSL' },\n glsl: { lang: 'glsl', label: 'GLSL' },\n vert: { lang: 'glsl', label: 'GLSL' },\n frag: { lang: 'glsl', label: 'GLSL' },\n sh: { lang: 'shellscript', label: 'Shell' },\n bash: { lang: 'shellscript', label: 'Shell' },\n zsh: { lang: 'shellscript', label: 'Shell' },\n yaml: { lang: 'yaml', label: 'YAML' },\n yml: { lang: 'yaml', label: 'YAML' },\n toml: { lang: 'toml', label: 'TOML' },\n xml: { lang: 'xml', label: 'XML' },\n};\n\nexport function resolveLanguage(ext: string): LanguageResolution | undefined {\n const key = ext.replace(/^\\./, '').toLowerCase();\n return EXT_LANGUAGE[key];\n}\n","import { resolveLanguage } from './ext-language';\n\nexport const MAX_HIGHLIGHT_BYTES = 200 * 1024;\nexport const MAX_HIGHLIGHT_LINES = 5_000;\n\nexport type HighlightDecision =\n | { readonly highlight: true; readonly lang: string; readonly label: string }\n | { readonly highlight: false; readonly reason: 'no-content' | 'unknown-language' | 'too-large' };\n\nexport interface HighlightPolicyInput {\n readonly ext: string;\n readonly size: number;\n readonly content?: string;\n}\n\nfunction countLines(text: string): number {\n let lines = 1;\n for (let index = 0; index < text.length; index += 1) {\n if (text.charCodeAt(index) === 10) lines += 1;\n }\n return lines;\n}\n\nexport function decideHighlight(input: HighlightPolicyInput): HighlightDecision {\n const { ext, size, content } = input;\n if (content == null) return { highlight: false, reason: 'no-content' };\n const resolved = resolveLanguage(ext);\n if (!resolved) return { highlight: false, reason: 'unknown-language' };\n const byteSize = Math.max(size, content.length);\n if (byteSize > MAX_HIGHLIGHT_BYTES || countLines(content) > MAX_HIGHLIGHT_LINES) {\n return { highlight: false, reason: 'too-large' };\n }\n return { highlight: true, lang: resolved.lang, label: resolved.label };\n}\n","// shiki stays a content-browser dependency. Specifiers are static so Vite\n// resolves them from this package's node_modules and code-splits grammars.\n\ntype HighlighterCore = {\n loadLanguage: (lang: unknown) => Promise<unknown>;\n codeToHtml: (code: string, options: { lang: string; theme: string }) => string;\n};\ntype LanguageInput = unknown;\ntype ThemeRegistrationRaw = unknown;\n\nexport type HighlightAppearance = 'light' | 'dark';\n\nexport const HIGHLIGHT_THEMES = {\n light: 'github-light-default',\n dark: 'github-dark-default',\n} as const;\n\ntype LangModule = { readonly default: LanguageInput };\n\nconst LANG_LOADERS: Readonly<Record<string, () => Promise<LangModule>>> = {\n typescript: () => import('shiki/langs/typescript.mjs'),\n tsx: () => import('shiki/langs/tsx.mjs'),\n javascript: () => import('shiki/langs/javascript.mjs'),\n jsx: () => import('shiki/langs/jsx.mjs'),\n json: () => import('shiki/langs/json.mjs'),\n jsonc: () => import('shiki/langs/jsonc.mjs'),\n json5: () => import('shiki/langs/json5.mjs'),\n css: () => import('shiki/langs/css.mjs'),\n scss: () => import('shiki/langs/scss.mjs'),\n html: () => import('shiki/langs/html.mjs'),\n markdown: () => import('shiki/langs/markdown.mjs'),\n python: () => import('shiki/langs/python.mjs'),\n rust: () => import('shiki/langs/rust.mjs'),\n wgsl: () => import('shiki/langs/wgsl.mjs'),\n glsl: () => import('shiki/langs/glsl.mjs'),\n shellscript: () => import('shiki/langs/shellscript.mjs'),\n yaml: () => import('shiki/langs/yaml.mjs'),\n toml: () => import('shiki/langs/toml.mjs'),\n xml: () => import('shiki/langs/xml.mjs'),\n};\n\nlet corePromise: Promise<HighlighterCore> | null = null;\nconst loadedLangs = new Set<string>();\nconst inFlightLangs = new Map<string, Promise<boolean>>();\n\nasync function getCore(): Promise<HighlighterCore> {\n if (!corePromise) {\n corePromise = (async () => {\n const [coreMod, engineMod, darkTheme, lightTheme] = await Promise.all([\n import('shiki/core'),\n import('shiki/engine/javascript'),\n import('shiki/themes/github-dark-default.mjs'),\n import('shiki/themes/github-light-default.mjs'),\n ]);\n const core = await coreMod.createHighlighterCore({\n themes: [darkTheme.default, lightTheme.default],\n langs: [],\n engine: engineMod.createJavaScriptRegexEngine({ forgiving: true }),\n });\n return core as unknown as HighlighterCore;\n })();\n }\n return corePromise as Promise<HighlighterCore>;\n}\n\nasync function ensureLanguage(core: HighlighterCore, lang: string): Promise<boolean> {\n if (loadedLangs.has(lang)) return true;\n const loader = LANG_LOADERS[lang];\n if (!loader) return false;\n let pending = inFlightLangs.get(lang);\n if (!pending) {\n pending = (async () => {\n const mod = await loader();\n await core.loadLanguage(mod.default);\n loadedLangs.add(lang);\n return true;\n })();\n inFlightLangs.set(lang, pending);\n }\n return pending;\n}\n\nexport async function highlightToHtml(\n code: string,\n lang: string,\n appearance: HighlightAppearance = 'dark',\n): Promise<string | null> {\n const core = await getCore();\n const ready = await ensureLanguage(core, lang);\n if (!ready) return null;\n return core.codeToHtml(code, { lang, theme: HIGHLIGHT_THEMES[appearance] });\n}\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from '../../i18n/useTranslation';\nimport { decideHighlight } from './code-preview-policy';\nimport { resolveLanguage } from './ext-language';\nimport { highlightToHtml, type HighlightAppearance } from './highlighter';\n\nfunction readDocumentAppearance(): HighlightAppearance {\n if (typeof document === 'undefined') return 'light';\n return document.documentElement.dataset.theme === 'dark' ? 'dark' : 'light';\n}\n\nfunction useDocumentAppearance(): HighlightAppearance {\n const [appearance, setAppearance] = useState<HighlightAppearance>(readDocumentAppearance);\n useEffect(() => {\n const root = document.documentElement;\n const sync = () => setAppearance(readDocumentAppearance());\n sync();\n const observer = new MutationObserver(sync);\n observer.observe(root, { attributes: true, attributeFilter: ['data-theme'] });\n return () => observer.disconnect();\n }, []);\n return appearance;\n}\n\nexport function CodePreview({\n name,\n ext,\n size,\n content,\n}: {\n name: string;\n ext: string;\n size: number;\n content: string;\n}) {\n const { t } = useTranslation();\n const appearance = useDocumentAppearance();\n const decision = decideHighlight({ ext, size, content });\n const targetLang = decision.highlight ? decision.lang : null;\n const label = resolveLanguage(ext)?.label ?? ext.toUpperCase();\n const [html, setHtml] = useState<string | null>(null);\n\n useEffect(() => {\n setHtml(null);\n if (targetLang == null) return;\n let cancelled = false;\n void highlightToHtml(content, targetLang, appearance)\n .then((out) => { if (!cancelled) setHtml(out); })\n .catch(() => { if (!cancelled) setHtml(null); });\n return () => { cancelled = true; };\n }, [appearance, content, targetLang]);\n\n const skippedForSize = !decision.highlight && decision.reason === 'too-large';\n\n return (\n <div className=\"cb-preview-code\" data-lang={resolveLanguage(ext)?.lang ?? 'text'}>\n <div className=\"cb-preview-code-head\">\n <span className=\"cb-preview-code-badge\">{label}</span>\n {skippedForSize ? <span className=\"cb-preview-code-hint\">{t('contentBrowser.preview.highlightSkipped')}</span> : null}\n </div>\n {html != null\n ? <div className=\"cb-preview-code-shiki\" dangerouslySetInnerHTML={{ __html: html }} />\n : <pre className=\"cb-preview-code-plain\" aria-label={name}>{content}</pre>}\n </div>\n );\n}\n","import type { CBFile, PreviewFileInfo } from '../types';\nimport { familySuggestsEnginePreview, familySuggestsMediaPreview, isBrowserMediaPreviewKind, isFontPreviewInfo } from './media-preview-policy';\nimport { MediaPreview } from './MediaPreview';\nimport { CodePreview } from './CodePreview';\nimport { resolveLanguage } from './ext-language';\n\nexport function FileContentPreview({\n file,\n previewInfo,\n status,\n pendingRemote,\n t,\n}: {\n file: CBFile;\n previewInfo: PreviewFileInfo | null;\n status: 'idle' | 'loading' | 'ready';\n pendingRemote?: boolean;\n t: (key: string) => string;\n}) {\n if (status === 'loading' || pendingRemote) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.loadingSource')}</div>;\n }\n\n if (previewInfo && (isBrowserMediaPreviewKind(previewInfo.kind) || isFontPreviewInfo(previewInfo))) {\n return <MediaPreview info={previewInfo} fileName={file.name} t={t} />;\n }\n if (previewInfo?.kind === 'model' || familySuggestsEnginePreview(file.family)) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.previewEngineRequired')}</div>;\n }\n if (!previewInfo && familySuggestsMediaPreview(file.family)) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noMediaPreview')}</div>;\n }\n\n const content = previewInfo?.content ?? file.sourcePreview;\n if (content == null) {\n return <div className=\"cb-preview-note\">{t('contentBrowser.preview.noTextPreview')}</div>;\n }\n const dotIndex = file.name.lastIndexOf('.');\n const ext = dotIndex >= 0 ? file.name.slice(dotIndex + 1).toLowerCase() : '';\n if (resolveLanguage(ext)) {\n return (\n <CodePreview\n name={file.name}\n ext={ext}\n size={previewInfo?.size ?? file.estimatedSize ?? 0}\n content={content}\n />\n );\n }\n return (\n <pre className=\"cb-preview-source\">\n <code>{content}</code>\n </pre>\n );\n}\n","import { useEffect, useRef, useState, type PointerEvent } from 'react';\n\nexport function useLocalSize(\n key: string,\n initial: number,\n min: number,\n max: number,\n): readonly [number, (next: number | ((prev: number) => number)) => void] {\n const clamp = (value: number) => Math.min(max, Math.max(min, value));\n const [value, setValueRaw] = useState<number>(() => {\n if (typeof window === 'undefined') return initial;\n try {\n const raw = window.localStorage.getItem(key);\n if (!raw) return initial;\n const parsed = Number(raw);\n return Number.isFinite(parsed) ? clamp(parsed) : initial;\n } catch {\n return initial;\n }\n });\n useEffect(() => {\n try {\n window.localStorage.setItem(key, String(value));\n } catch {\n /* ignore quota / privacy mode */\n }\n }, [key, value]);\n const setValue = (next: number | ((prev: number) => number)) => {\n setValueRaw((prev) => clamp(typeof next === 'function' ? next(prev) : next));\n };\n return [value, setValue] as const;\n}\n\nexport function ResizeHandle({\n onDrag,\n onDragEnd,\n title,\n}: {\n onDrag: (delta: number) => void;\n onDragEnd?: () => void;\n title?: string;\n}) {\n const startRef = useRef<number | null>(null);\n const onPointerDown = (event: PointerEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n startRef.current = event.clientX;\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n };\n const onPointerMove = (event: PointerEvent<HTMLDivElement>) => {\n if (startRef.current == null) return;\n const delta = event.clientX - startRef.current;\n startRef.current = event.clientX;\n onDrag(delta);\n };\n const finish = (event: PointerEvent<HTMLDivElement>) => {\n if (startRef.current == null) return;\n startRef.current = null;\n try {\n event.currentTarget.releasePointerCapture(event.pointerId);\n } catch {\n /* already released */\n }\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n onDragEnd?.();\n };\n return (\n <div\n className=\"cb-resize-handle\"\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={finish}\n onPointerCancel={finish}\n title={title}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n );\n}\n","import { X } from 'lucide-react';\nimport { IconButton } from '@forgeax/view-components';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { dirOfPath, fileSupportsDualPreview, resolveDualPreviewFile } from './format';\nimport { itemIcon } from './icons';\nimport { assetKindLabel, fileKindLabel } from './derived-view';\nimport { FileContentPreview } from './preview/FileContentPreview';\nimport { ResizeHandle } from './resize-handle';\nimport type { CBFile, CBFilePreviewMode, CBFolder, CBViewItem, PreviewFileInfo } from './types';\n\nexport function CBPreviewPanel({\n previewItem,\n foldersInPath,\n diskFiles,\n projectLabel,\n readPreview,\n onClose,\n onDrag,\n onDragEnd,\n}: {\n previewItem: CBViewItem | null;\n foldersInPath: CBFolder[];\n diskFiles: CBFile[];\n projectLabel: string;\n readPreview?: (path: string, options?: { signal?: AbortSignal }) => Promise<PreviewFileInfo | null>;\n onClose: () => void;\n onDrag: (delta: number) => void;\n onDragEnd: () => void;\n}) {\n const { t } = useTranslation();\n const [filePreviewMode, setFilePreviewMode] = useState<CBFilePreviewMode>('assets');\n const [previewInfo, setPreviewInfo] = useState<PreviewFileInfo | null>(null);\n const [previewStatus, setPreviewStatus] = useState<'idle' | 'loading' | 'ready'>('idle');\n const dualPreviewFile = previewItem ? resolveDualPreviewFile(previewItem, diskFiles) : undefined;\n const showDualPreview = dualPreviewFile !== undefined && fileSupportsDualPreview(dualPreviewFile);\n const previewKey = previewItem ? (previewItem.type === 'asset' ? previewItem.guid : previewItem.path) : null;\n const previewSourcePath = dualPreviewFile?.diskPath || dualPreviewFile?.path || null;\n const dualAssetCount = dualPreviewFile?.assets.length ?? 0;\n const dualSupportsPreview = dualPreviewFile ? fileSupportsDualPreview(dualPreviewFile) : false;\n const embeddedSourcePreview = dualPreviewFile?.sourcePreview ?? null;\n const canReadPreview = typeof readPreview === 'function';\n\n useEffect(() => {\n setFilePreviewMode('assets');\n }, [previewKey]);\n\n useEffect(() => {\n if (!previewSourcePath) {\n setPreviewInfo(null);\n setPreviewStatus('idle');\n return;\n }\n const needsSource = dualAssetCount === 0\n || (dualSupportsPreview && filePreviewMode === 'source');\n if (!needsSource) {\n setPreviewInfo(null);\n setPreviewStatus('idle');\n return;\n }\n if (embeddedSourcePreview != null && !canReadPreview) {\n setPreviewInfo({\n path: dualPreviewFile?.path ?? previewSourcePath,\n kind: 'text',\n mime: 'text/plain; charset=utf-8',\n size: dualPreviewFile?.estimatedSize ?? embeddedSourcePreview.length,\n mtime: dualPreviewFile?.packModifiedAt ?? 0,\n content: embeddedSourcePreview,\n });\n setPreviewStatus('ready');\n return;\n }\n if (!canReadPreview || !readPreview) {\n setPreviewInfo(null);\n setPreviewStatus('ready');\n return;\n }\n let cancelled = false;\n setPreviewInfo(null);\n setPreviewStatus('loading');\n const controller = new AbortController();\n void readPreview(previewSourcePath, { signal: controller.signal })\n .then((info) => {\n if (cancelled) return;\n setPreviewInfo(info);\n setPreviewStatus('ready');\n })\n .catch(() => {\n if (cancelled) return;\n setPreviewInfo(null);\n setPreviewStatus('ready');\n });\n return () => {\n cancelled = true;\n controller.abort();\n };\n }, [\n canReadPreview,\n dualAssetCount,\n dualSupportsPreview,\n embeddedSourcePreview,\n filePreviewMode,\n previewSourcePath,\n readPreview,\n ]);\n\n if (!previewItem) {\n return (\n <>\n <ResizeHandle onDrag={onDrag} onDragEnd={onDragEnd} title={t('contentBrowser.actions.resizePreview')} />\n <aside className=\"cb-preview-panel cb-preview-empty\">\n <div className=\"cb-preview-body\">\n <div className=\"cb-preview-note\">{t('contentBrowser.preview.nothingSelected')}</div>\n </div>\n </aside>\n </>\n );\n }\n\n const Icon = itemIcon(previewItem, true);\n const meta = previewItem.type === 'folder'\n ? t('contentBrowser.preview.folderMeta', { path: previewItem.path || projectLabel })\n : previewItem.type === 'file'\n ? t('contentBrowser.preview.fileMeta', { kind: previewItem.kindLabel, path: previewItem.path })\n : t('contentBrowser.preview.assetMeta', { kind: assetKindLabel(previewItem.kind, t), path: previewItem.packPath });\n\n let body;\n if (previewItem.type === 'folder') {\n const kids = [\n ...foldersInPath.filter((folder) => dirOfPath(folder.path) === previewItem.path),\n ...diskFiles.filter((entry) => dirOfPath(entry.path) === previewItem.path),\n ].slice(0, 40);\n body = kids.length === 0 ? (\n <div className=\"cb-preview-note\">{t('contentBrowser.preview.emptyFolder')}</div>\n ) : (\n <div className=\"cb-preview-list\">\n {kids.map((child) => {\n const ChildIcon = itemIcon(child);\n return (\n <div className=\"cb-preview-list-item\" key={child.path}>\n <span className={`cb-preview-list-ico${child.type === 'folder' ? ' cb-folder-icon' : ''}`}><ChildIcon size={15} /></span>\n <span>{child.name}</span>\n <span className=\"sub\">\n {child.type === 'folder'\n ? t('contentBrowser.preview.items', { count: child.childCount })\n : child.kindLabel || fileKindLabel(child, t)}\n </span>\n </div>\n );\n })}\n </div>\n );\n } else if (previewItem.type === 'file') {\n const showSource = filePreviewMode === 'source' && showDualPreview;\n if (previewItem.assets.length > 0 && !showSource) {\n body = <FileAssetList file={previewItem} t={t} />;\n } else {\n body = (\n <FileContentPreview\n file={showDualPreview ? dualPreviewFile ?? previewItem : previewItem}\n previewInfo={previewInfo}\n status={previewStatus}\n pendingRemote={isFilePreviewPending(canReadPreview, previewStatus, previewInfo, showDualPreview ? dualPreviewFile ?? previewItem : previewItem)}\n t={t}\n />\n );\n }\n } else {\n const showSource = showDualPreview && filePreviewMode === 'source' && dualPreviewFile;\n body = showSource ? (\n <FileContentPreview\n file={dualPreviewFile}\n previewInfo={previewInfo}\n status={previewStatus}\n pendingRemote={isFilePreviewPending(canReadPreview, previewStatus, previewInfo, dualPreviewFile)}\n t={t}\n />\n ) : (\n <>\n <div className=\"cb-preview-media cb-preview-asset-hero\">\n <span className=\"cb-preview-hero-icon\"><Icon size={64} /></span>\n </div>\n <div className=\"cb-preview-asset-list\">\n <div className=\"cb-preview-asset-row\">\n <span className=\"cb-preview-list-ico\"><Icon size={15} /></span>\n <div className=\"cb-preview-asset-main\" title={previewItem.packPath}>\n <div title={previewItem.name}>{previewItem.name}</div>\n <div className=\"kind\" title={previewItem.packPath}>{previewItem.packPath}</div>\n </div>\n <span className=\"guid\" title={previewItem.guid}>{previewItem.guid}</span>\n </div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <ResizeHandle onDrag={onDrag} onDragEnd={onDragEnd} title={t('contentBrowser.actions.resizePreview')} />\n <aside className=\"cb-preview-panel\" data-subject-id={previewItem.type === 'asset' ? previewItem.guid : previewItem.path}>\n <div className=\"cb-preview-head\">\n <span className={`cb-preview-ico${previewItem.type === 'folder' ? ' cb-folder-icon' : ''}`}><Icon size={15} /></span>\n <div className=\"cb-preview-title\">\n <div className=\"name\">{previewItem.name}</div>\n <div className=\"meta\">{meta}</div>\n </div>\n <IconButton\n size=\"compact\"\n variant=\"quiet\"\n className=\"cb-preview-close\"\n label={t('contentBrowser.preview.close')}\n icon={<X size={14} />}\n onClick={onClose}\n />\n </div>\n {showDualPreview ? (\n <div className=\"cb-preview-mode-bar\" role=\"tablist\" aria-label={t('contentBrowser.preview.modeAssets')}>\n <button type=\"button\" role=\"tab\" className={`cb-preview-mode-btn${filePreviewMode === 'assets' ? ' is-active' : ''}`} aria-selected={filePreviewMode === 'assets'} onClick={() => setFilePreviewMode('assets')}>\n {t('contentBrowser.preview.modeAssets')}\n </button>\n <button type=\"button\" role=\"tab\" className={`cb-preview-mode-btn${filePreviewMode === 'source' ? ' is-active' : ''}`} aria-selected={filePreviewMode === 'source'} onClick={() => setFilePreviewMode('source')}>\n {t('contentBrowser.preview.modeSource')}\n </button>\n </div>\n ) : null}\n <div className=\"cb-preview-body\">{body}</div>\n </aside>\n </>\n );\n}\n\nfunction FileAssetList({ file, t }: { file: CBFile; t: (key: string, vars?: Record<string, string | number>) => string }) {\n return (\n <div className=\"cb-preview-asset-list\">\n {file.assets.map((asset) => {\n const Icon = itemIcon(asset);\n return (\n <div className=\"cb-preview-asset-row\" key={asset.guid}>\n <span className=\"cb-preview-list-ico\"><Icon size={15} /></span>\n <div className=\"cb-preview-asset-main\">\n <div title={asset.name}>{asset.name}</div>\n <div className=\"kind\" title={assetKindLabel(asset.kind, t)}>{assetKindLabel(asset.kind, t)}</div>\n </div>\n <span className=\"guid\" title={asset.guid}>{asset.guid}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction isFilePreviewPending(\n canReadPreview: boolean,\n status: 'idle' | 'loading' | 'ready',\n previewInfo: PreviewFileInfo | null,\n file: CBFile,\n): boolean {\n if (!canReadPreview || status !== 'idle') return false;\n if (previewInfo) return false;\n return file.sourcePreview == null;\n}\n","import type { WorkspaceState } from '@forgeax/view-workspace-core/contract';\nexport type RuntimeParameter = { name: string; type: string; default: unknown; minimum?: number; maximum?: number; values?: (string | number | boolean)[] };\n/** UI drafts only; Engine validates parameters and owns all execution state. */\nexport function parameterDrafts(parameters: readonly RuntimeParameter[], values: Record<string, unknown> = {}): Record<string, string> {\n return Object.fromEntries(parameters.map(parameter => {\n const value = values[parameter.name] ?? parameter.default;\n return [parameter.name, typeof value === 'string' ? value : JSON.stringify(value) ?? ''];\n }));\n}\n\nexport function parameterValues(parameters: readonly RuntimeParameter[], drafts: Record<string, string>): Record<string, unknown> {\n return Object.fromEntries(parameters.map(parameter => {\n const text = drafts[parameter.name];\n if (['string', 'asset-guid'].includes(parameter.type)) return [parameter.name, text];\n if (parameter.type === 'enum') {\n const value = parameter.values?.find(value => String(value) === text);\n if (value === undefined) throw new TypeError(`Choose a value for ${parameter.name}`);\n return [parameter.name, value];\n }\n if (typeof text !== 'string' || !text.trim()) throw new TypeError(`Enter ${parameter.name}`);\n return [parameter.name, JSON.parse(text)];\n }));\n}\n\n/** Bind to the project App, never the selected preview or independent AI run. */\nexport function runtimePackTarget(workspace: WorkspaceState | null | undefined) {\n const target = workspace?.projectTarget;\n if (!workspace?.project?.id || !target?.targetId || !target?.worldId || target.worldId.startsWith('pending:')) return undefined;\n return { projectId: workspace.project.id, targetId: target.targetId, worldId: target.worldId };\n}\n","import { Button, EmptyState, PropertyRow, Toolbar } from '@forgeax/view-components';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { type RuntimeParameter as Parameter, parameterDrafts, parameterValues, runtimePackTarget } from './runtime-packs.ts';\nimport './runtime-packs.css';\n\ntype Instance = { schemaVersion: '3.0.0'; packageId: string; parent: string; values?: Record<string, unknown> };\ntype Execution = { instance: Instance; status: string; lastKnownGood?: { generation: number }; error?: unknown };\ntype Pack = { source: { packageId: string; source?: string; kind?: string; parameters?: Parameter[] } };\ntype Inspection = { packs: Pack[]; executions: Execution[] };\ntype Installation = { uid: number; state: string };\ntype Asset = { guid: string; kind: string; name?: string; sourceKey?: string };\n\nexport function RuntimePacksPanel({ client }: { client: ViewWorkspaceClient }) {\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(reader.subscribe, reader.getSnapshot, reader.getSnapshot);\n const target = runtimePackTarget(workspace);\n const key = target ? `${target.projectId}/${target.targetId}/${target.worldId}` : '';\n // A replacement project gets fresh drafts and cancels all old requests.\n return target ? <BoundRuntimePacks key={key} client={client} target={target} /> :\n <EmptyState title=\"Runtime content unavailable\" description=\"Wait for the project target to be ready.\" />;\n}\n\nfunction BoundRuntimePacks({ client, target }: { client: ViewWorkspaceClient; target: { projectId: string; targetId: string; worldId: string } }) {\n const [inspection, setInspection] = useState<Inspection>({ packs: [], executions: [] });\n const [plugins, setPlugins] = useState<Installation[]>([]);\n const [assets, setAssets] = useState<Asset[]>([]);\n const [selected, setSelected] = useState('');\n const [instanceId, setInstanceId] = useState('');\n const [drafts, setDrafts] = useState<Record<string, string>>({});\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState('');\n const lifetime = useRef<AbortController | null>(null);\n const upload = useRef<HTMLInputElement>(null);\n const generators = inspection.packs.filter(pack => pack.source.kind === 'scriptable-pack-source');\n const generator = generators.find(pack => pack.source.packageId === selected);\n const parameters = generator?.source.parameters ?? [];\n const executions = inspection.executions.filter(item => item.instance.parent === selected && item.status !== 'withdrawn');\n const execution = executions.find(item => item.instance.packageId === instanceId);\n const call = useCallback((operation: string, args = {}) => client.call(`runtime-pack.${operation}`, { ...args, ...target }, { signal: lifetime.current?.signal }), [client, target.projectId, target.targetId, target.worldId]);\n const refresh = useCallback(async (signal = lifetime.current?.signal) => {\n const [contents, installed, listed] = await Promise.all([\n client.call('runtime-pack.inspect', target, { signal }),\n client.call('runtime-pack.plugin-inspect', target, { signal }),\n client.listAssets(target.projectId, { signal }),\n ]);\n if (signal?.aborted) return;\n setInspection(contents as Inspection);\n setPlugins((installed as { plugins: Installation[] }).plugins);\n setAssets((listed as { assets: Asset[] }).assets);\n }, [client, target.projectId, target.targetId, target.worldId]);\n useEffect(() => {\n const controller = new AbortController();\n lifetime.current = controller;\n setBusy(true);\n void refresh(controller.signal).catch(cause => { if (!controller.signal.aborted) setError(String(cause)); })\n .finally(() => { if (!controller.signal.aborted) setBusy(false); });\n return () => controller.abort();\n }, [refresh]);\n async function act(operation: () => Promise<unknown>) {\n if (busy || lifetime.current?.signal.aborted) return;\n setBusy(true);\n setError('');\n const signal = lifetime.current?.signal;\n let operationFailed = false;\n try { await operation(); }\n catch (cause) { operationFailed = true; if (!signal?.aborted) setError(String(cause)); }\n finally {\n if (!signal?.aborted) {\n try { await refresh(signal); } catch (cause) { if (!signal?.aborted && !operationFailed) setError(String(cause)); }\n if (!signal?.aborted) setBusy(false);\n }\n }\n }\n function choose(parent: string, id = '') {\n const pack = generators.find(item => item.source.packageId === parent);\n const item = inspection.executions.find(item => item.instance.packageId === id);\n setSelected(parent); setInstanceId(id);\n setDrafts(parameterDrafts(pack?.source.parameters ?? [], item?.instance.values));\n }\n async function save() {\n const snapshot = await call('snapshot');\n if (lifetime.current?.signal.aborted) return;\n const url = URL.createObjectURL(new Blob([JSON.stringify(snapshot)], { type: 'application/json' }));\n try {\n const link = document.createElement('a');\n link.href = url; link.download = `${target.projectId}-runtime-content.json`; link.click();\n } finally { URL.revokeObjectURL(url); }\n }\n return <section className=\"cb-runtime\" aria-label=\"Runtime content\" data-testid=\"runtime-content\">\n <Toolbar>\n <strong>Runtime content</strong>\n <Button size=\"compact\" disabled={busy} onClick={() => void act(async () => {})}>Refresh</Button>\n <Button size=\"compact\" disabled={busy} onClick={() => upload.current?.click()}>Import content</Button>\n <Button size=\"compact\" disabled={busy} onClick={() => void act(save)}>Save content</Button>\n <input ref={upload} type=\"file\" accept=\".json,application/json\" hidden onChange={event => {\n const file = event.target.files?.[0]; event.target.value = '';\n if (file) void act(async () => {\n const value = JSON.parse(await file.text());\n return value.schemaVersion === 'runtime-pack-source/2' ? call('restore', { snapshot: value }) : call('admit', { content: value });\n });\n }} />\n </Toolbar>\n {error ? <p role=\"alert\">{error}</p> : null}\n {busy ? <p role=\"status\">Waiting for Engine...</p> : null}\n <details><summary>Admitted packs ({inspection.packs.length})</summary>\n {inspection.packs.map(pack => <PropertyRow key={pack.source.packageId} label={pack.source.source ?? pack.source.packageId}>\n <Button size=\"compact\" disabled={busy} onClick={() => void act(() => call('withdraw', { packageId: pack.source.packageId }))}>Withdraw pack</Button>\n </PropertyRow>)}\n </details>\n <div className=\"cb-runtime-columns\">\n <fieldset disabled={busy}>\n <legend>Generate assets</legend>\n <PropertyRow label=\"Generator\"><select aria-label=\"Generator\" value={selected} onChange={event => choose(event.target.value)}>\n <option value=\"\">Choose a generator</option>\n {generators.map(pack => <option key={pack.source.packageId} value={pack.source.packageId}>{pack.source.source ?? pack.source.packageId}</option>)}\n </select></PropertyRow>\n {generator ? <>\n <PropertyRow label=\"Instance\"><select aria-label=\"Instance\" value={instanceId} onChange={event => choose(selected, event.target.value)}>\n <option value=\"\">New instance</option>\n {executions.map(item => <option key={item.instance.packageId} value={item.instance.packageId}>{item.instance.packageId}</option>)}\n </select></PropertyRow>\n {parameters.map(parameter => <PropertyRow key={parameter.name} label={parameter.name}>\n {parameter.type === 'bool' || parameter.type === 'enum' ?\n <select aria-label={parameter.name} value={drafts[parameter.name] ?? ''} onChange={event => setDrafts({ ...drafts, [parameter.name]: event.target.value })}>\n {(parameter.type === 'bool' ? [true, false] : parameter.values ?? []).map(value => <option key={String(value)} value={String(value)}>{String(value)}</option>)}\n </select> : <input aria-label={parameter.name} value={drafts[parameter.name] ?? ''} onChange={event => setDrafts({ ...drafts, [parameter.name]: event.target.value })} />}\n </PropertyRow>)}\n <Button size=\"compact\" onClick={() => void act(async () => {\n const id = instanceId || crypto.randomUUID();\n const instance: Instance = { schemaVersion: '3.0.0', packageId: id, parent: selected, values: parameterValues(parameters, drafts) };\n setInstanceId(id);\n await call('generate', { instance });\n })}>Generate</Button>\n {execution ? <p role=\"status\">{execution.status}{execution.lastKnownGood ? ` · Published generation ${execution.lastKnownGood.generation}` : ''}{execution.status !== 'current' && execution.lastKnownGood ? ' · Previous successful result' : ''}</p> : null}\n {execution?.error ? <pre>{JSON.stringify(execution.error, null, 2)}</pre> : null}\n {instanceId ? <Button size=\"compact\" onClick={() => void act(async () => { await call('withdraw', { packageId: instanceId }); choose(selected); })}>Withdraw instance</Button> : null}\n </> : <p>{generators.length ? 'Select an admitted definition to edit parameters.' : 'No runtime generators have been admitted.'}</p>}\n </fieldset>\n <fieldset disabled={busy}>\n <legend>Plugin assets</legend>\n {assets.filter(asset => asset.kind === 'plugin').map(asset => <PropertyRow key={asset.guid} label={asset.name ?? asset.sourceKey ?? asset.guid}>\n <Button size=\"compact\" onClick={() => void act(() => call('plugin-install', { guid: asset.guid }))}>Install</Button>\n </PropertyRow>)}\n <p>Installations owned by this View connection</p>\n {plugins.length ? plugins.map(plugin => <PropertyRow key={plugin.uid} label={`#${plugin.uid} · ${plugin.state}`}>\n <Button size=\"compact\" onClick={() => void act(() => call('plugin-dispose', { uid: plugin.uid }))}>Dispose</Button>\n </PropertyRow>) : <p>No installations.</p>}\n <p>Generated outputs appear in the asset browser below. Open an output for its dedicated preview.</p>\n </fieldset>\n </div>\n </section>;\n}\n","import { fileFamilyOfWithAssets, isResourceGroup } from './format';\nimport type { CBAsset, CBFile, CBFolder } from './types';\n\nexport interface CatalogAsset {\n guid: string;\n kind: string;\n name?: string;\n label?: string;\n sourceKey?: string | number;\n sourcePath?: string;\n path?: string;\n}\n\n/** Presentation of the Engine catalog, not a filesystem inventory. */\nexport function projectCatalog(root: string, assets: readonly CatalogAsset[]) {\n const files = new Map<string, CBFile>();\n const prefix = `${root.replaceAll('\\\\', '/').replace(/\\/$/, '')}/`;\n for (const asset of assets) {\n const source = (asset.sourcePath ?? asset.path ?? asset.guid).replaceAll('\\\\', '/');\n const relative = source.startsWith(prefix) ? source.slice(prefix.length) : source;\n const external = relative.startsWith('/') || /^[a-z]:\\//i.test(relative) || relative.split('/').includes('..');\n // External catalog sources are a presentation group, never project navigation segments.\n const path = external ? `External assets/${encodeURIComponent(source)}` : relative.replace(/^\\.\\//, '');\n let file = files.get(path);\n if (!file) {\n file = { type: 'file', path, diskPath: source, name: source.split('/').at(-1)!,\n family: 'pack', assets: [], isAssetPackage: false, kindLabel: '' };\n files.set(path, file);\n }\n const item: CBAsset = { type: 'asset', guid: asset.guid, kind: asset.kind,\n name: String((source.toLowerCase().endsWith('.pack.ts') ? asset.sourceKey : undefined)\n ?? asset.name ?? asset.label ?? asset.guid), packPath: path };\n file.assets.push(item);\n file.family = fileFamilyOfWithAssets(file.name, file.assets);\n file.isAssetPackage = isResourceGroup(file.assets.length);\n }\n const folders = new Map<string, CBFolder>();\n for (const file of files.values()) {\n const parts = file.path.split('/').filter(Boolean).slice(0, -1);\n for (let index = 0; index < parts.length; index++) {\n const path = parts.slice(0, index + 1).join('/');\n if (!folders.has(path)) folders.set(path, { type: 'folder', path, name: parts[index]!, childCount: 0 });\n }\n }\n for (const folder of folders.values()) {\n folder.childCount = [...folders.values(), ...files.values()].filter((item) =>\n item.path.slice(0, item.path.lastIndexOf('/')) === folder.path).length;\n }\n return { files: [...files.values()], folders: [...folders.values()] };\n}\n\nexport function visibleCatalogFolders(folders: readonly CBFolder[], collapsed: ReadonlySet<string>) {\n return folders.filter((folder) => {\n const parts = folder.path.split('/');\n return parts.every((_, index) => index === 0 || !collapsed.has(parts.slice(0, index).join('/')));\n }).sort((left, right) => {\n const a = left.path.split('/');\n const b = right.path.split('/');\n for (let index = 0; index < Math.min(a.length, b.length); index++) {\n const order = a[index]!.localeCompare(b[index]!);\n if (order !== 0) return order;\n }\n return a.length - b.length;\n });\n}\n","import type { WorkspaceState } from '@forgeax/view-workspace-core/contract';\nimport {\n ArrowDownWideNarrow,\n ArrowUpDown,\n ArrowUpNarrowWide,\n CaseSensitive,\n ChevronDown,\n Clock,\n Copy,\n Filter,\n Folder,\n FolderOpen,\n Grid2X2,\n HardDrive,\n List,\n Settings2,\n Shapes,\n Star,\n StarOff,\n Table2,\n} from 'lucide-react';\nimport {\n Button,\n Checkbox,\n ContextMenu,\n EmptyState,\n FloatingMenu,\n IconButton,\n PanelHeader,\n RangeInput,\n SearchField,\n Switch,\n Toolbar,\n anchorRectFromPoint,\n type AnchorRect,\n type MenuItem as FxMenuItem,\n useWorkspaceClientConnected,\n} from '@forgeax/view-components';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_FILE_GET_SERVICE, VIEW_WORKSPACE_TAB_ID, workspaceUiFingerprint } from '@forgeax/view-workspace-core/contract';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { CONTENT_BROWSER_ACTIONS } from '../schema.ts';\nimport { CBDetailsList } from './CBDetailsList';\nimport { CBGrid } from './CBGrid';\nimport { CBNavigationBar } from './CBNavigationBar';\nimport { CBPreviewPanel } from './CBPreviewPanel';\nimport { RuntimePacksPanel } from './RuntimePacksPanel';\nimport {\n buildFamilyFilters,\n buildKindFilters,\n deriveViewItems,\n fileKindLabel,\n nextSortState,\n setSortDir,\n toggleFilterId,\n} from './derived-view';\nimport { normalizePathInput, viewItemKey } from './format';\nimport { familyIcon, itemIcon, kindIcon } from './icons';\nimport { projectCatalog, visibleCatalogFolders, type CatalogAsset } from './workspace-catalog';\nimport { ResizeHandle, useLocalSize } from './resize-handle';\nimport type {\n CBFilterFamily,\n CBSortDir,\n CBSortKey,\n CBSortState,\n CBViewItem,\n CBViewMode,\n PreviewFileInfo,\n} from './types';\n\ntype BrowserMenuItem =\n | { kind: 'title'; label: string; icon?: ReactNode }\n | { kind: 'separator' }\n | {\n kind: 'item';\n id: string;\n label: string;\n icon?: ReactNode;\n shortcut?: string;\n disabled?: boolean;\n danger?: boolean;\n action: () => void;\n };\ntype ContextMenuState = { anchor: AnchorRect; items: BrowserMenuItem[] } | null;\n\nconst DEFAULT_CONTENT_FOLDER = 'assets';\n\nfunction hasContentFolder(folders: readonly { path: string }[], folder: string) {\n const prefix = `${folder}/`;\n return folders.some((entry) => entry.path === folder || entry.path.startsWith(prefix));\n}\n\nconst LAYOUT_OPTIONS: readonly { mode: CBViewMode; icon: ReactNode; labelKey: string }[] = [\n { mode: 'grid', icon: <Grid2X2 size={14} />, labelKey: 'contentBrowser.layoutGrid' },\n { mode: 'list', icon: <List size={14} />, labelKey: 'contentBrowser.layoutList' },\n { mode: 'column', icon: <Table2 size={14} />, labelKey: 'contentBrowser.layoutColumn' },\n];\nconst SORT_KEYS: readonly CBSortKey[] = ['name', 'kind', 'packModifiedAt', 'estimatedSize'];\nconst SORT_KEY_ICONS: Record<CBSortKey, typeof CaseSensitive> = {\n name: CaseSensitive,\n kind: Shapes,\n packModifiedAt: Clock,\n estimatedSize: HardDrive,\n};\n\nfunction isContextMenuAnchor(element: HTMLElement) {\n return element.classList.contains('cb-grid-item')\n || element.classList.contains('cb-fe-card')\n || element.classList.contains('cb-details-row')\n || element.classList.contains('cb-source-row');\n}\n\nfunction toFxMenuItems(items: BrowserMenuItem[], close?: () => void): FxMenuItem[] {\n return items.map((item) => {\n if (item.kind === 'separator') return { type: 'separator' };\n if (item.kind === 'title') {\n return { type: 'title', label: <span className=\"cb-menu-title\">{item.icon}{item.label}</span> };\n }\n return {\n id: item.id,\n label: item.label,\n icon: item.icon,\n shortcut: item.shortcut,\n disabled: item.disabled,\n danger: item.danger,\n buttonProps: { 'data-operation': item.id },\n onSelect: () => {\n item.action();\n close?.();\n },\n };\n });\n}\n\nexport function ContentBrowserPanel({\n client,\n}: {\n client?: ViewWorkspaceClient;\n}) {\n const { t } = useTranslation();\n const [snapshot, setSnapshot] = useState<WorkspaceState>({});\n const [loadFailed, setLoadFailed] = useState(false);\n const [actionError, setActionError] = useState('');\n const [runtimeOpen, setRuntimeOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [openingKeys, setOpeningKeys] = useState(new Set<string>());\n const project = snapshot.project;\n const projectLabel = project?.name ?? project?.root ?? 'No project';\n const catalog = useMemo(() => projectCatalog(project?.root ?? '', snapshot.assets ?? []), [project?.root, snapshot.assets]);\n const files = catalog.files;\n const folders = catalog.folders;\n const clientRef = useRef(client);\n clientRef.current = client;\n const connected = useWorkspaceClientConnected(client);\n const readPreview = useCallback((path: string, options?: { signal?: AbortSignal }) => {\n const transport = clientRef.current?.transport;\n if (typeof transport?.request !== 'function') return Promise.resolve(null);\n return transport.request(VIEW_FILE_GET_SERVICE, { path }, options) as Promise<PreviewFileInfo | null>;\n }, []);\n const refresh = useCallback(async (signal?: AbortSignal) => {\n if (!connected || !project || !client) return;\n setLoading(true);\n try {\n await client.listAssets(project.id, { tabId: VIEW_WORKSPACE_TAB_ID, signal });\n if (!signal?.aborted) setLoadFailed(false);\n } catch {\n if (!signal?.aborted) setLoadFailed(true);\n } finally { if (!signal?.aborted) setLoading(false); }\n }, [client, connected, project?.id]);\n useEffect(() => {\n if (!client || !connected) {\n if (!client) setLoadFailed(true);\n return;\n }\n const controller = new AbortController();\n setSnapshot({});\n const accept = (next: typeof snapshot) => {\n if (controller.signal.aborted) return;\n setSnapshot((current) => {\n if ((next.revision ?? 0) < (current.revision ?? 0)) return current;\n if (workspaceUiFingerprint(next) === workspaceUiFingerprint(current)) return current;\n return next;\n });\n setLoadFailed(false);\n };\n const unsubscribe = client.subscribe(accept);\n void client.getState({ signal: controller.signal }).then(accept).catch(() => {\n if (!controller.signal.aborted) setLoadFailed(true);\n });\n return () => { controller.abort(); unsubscribe?.(); };\n }, [client, connected]);\n useEffect(() => {\n if (!connected) return;\n const controller = new AbortController();\n void refresh(controller.signal);\n return () => controller.abort();\n }, [connected, refresh]);\n const [layout, setLayout] = useState<CBViewMode>('grid');\n const [thumbnailSize, setThumbnailSize] = useState(80);\n const [detailPanelOpen, setDetailPanelOpen] = useState(true);\n const [query, setQuery] = useState('');\n const [activeFamilies, setActiveFamilies] = useState<Set<CBFilterFamily>>(new Set());\n const [activeKinds, setActiveKinds] = useState<Set<string>>(new Set());\n const [sortState, setSortState] = useState<CBSortState>({ key: 'name', dir: 'asc' });\n const [history, setHistory] = useState(['']);\n const [historyIndex, setHistoryIndex] = useState(0);\n const openEpoch = useRef(0);\n const landedForEpoch = useRef(-1);\n const userMovedEpoch = useRef(-1);\n const [menu, setMenu] = useState<'settings' | 'filter' | 'sort' | null>(null);\n const [contextMenu, setContextMenu] = useState<ContextMenuState>(null);\n const [toolbarMenuAnchor, setToolbarMenuAnchor] = useState<AnchorRect | null>(null);\n const filterButtonRef = useRef<HTMLButtonElement>(null);\n const sortButtonRef = useRef<HTMLButtonElement>(null);\n const settingsButtonRef = useRef<HTMLButtonElement>(null);\n const splitRef = useRef<HTMLDivElement>(null);\n const [groups, setGroups] = useState({ favorites: true, project: true });\n const [favorites, setFavorites] = useState(new Set<string>());\n const [collapsed, setCollapsed] = useState(new Set<string>());\n const [expandedPacks, setExpandedPacks] = useState<Set<string>>(new Set());\n const [selectedIds, setSelectedIds] = useState(new Set<string>());\n const [selectionAnchor, setSelectionAnchor] = useState<string | null>(null);\n const [previewKey, setPreviewKey] = useState<string | null>(null);\n const previewItem = [...folders, ...files.flatMap((file) => [file, ...file.assets])]\n .find((item) => viewItemKey(item) === previewKey) ?? null;\n const [srcWidth, setSrcWidth] = useLocalSize('view.cb.sourceWidth', 200, 140, 420);\n const [previewWidth, setPreviewWidth] = useLocalSize('view.cb.previewWidth', 280, 180, 560);\n useEffect(() => {\n openEpoch.current += 1;\n setHistory(['']);\n setHistoryIndex(0);\n setSelectedIds(new Set());\n setSelectionAnchor(null);\n setPreviewKey(null);\n setExpandedPacks(new Set());\n setFavorites(new Set());\n setQuery('');\n }, [project?.id]);\n useEffect(() => {\n const epoch = openEpoch.current;\n if (landedForEpoch.current === epoch) return;\n if (!project?.id) return;\n if (userMovedEpoch.current === epoch) {\n landedForEpoch.current = epoch;\n return;\n }\n const catalogReady = Array.isArray(snapshot.assets);\n if (!catalogReady) return;\n landedForEpoch.current = epoch;\n if (!hasContentFolder(folders, DEFAULT_CONTENT_FOLDER)) return;\n setHistory(['', DEFAULT_CONTENT_FOLDER]);\n setHistoryIndex(1);\n }, [folders, project?.id, snapshot.assets]);\n const folder = history[historyIndex] ?? '';\n const familyFilters = useMemo(() => buildFamilyFilters(activeFamilies, t), [activeFamilies, t]);\n const kindFilters = useMemo(() => buildKindFilters(activeKinds, t), [activeKinds, t]);\n const activeFilterCount = activeFamilies.size + activeKinds.size;\n const labeledFiles = useMemo(\n () => files.map((file) => ({ ...file, kindLabel: fileKindLabel(file, t) })),\n [files, t],\n );\n const derived = useMemo(\n () => deriveViewItems({\n folders,\n files: labeledFiles,\n currentPath: folder,\n searchQuery: query,\n activeFamilies,\n activeKinds,\n sortState,\n expandedPacks,\n withKindLabel: (file) => file,\n }),\n [activeFamilies, activeKinds, expandedPacks, folder, folders, labeledFiles, query, sortState],\n );\n const { viewItems, foldersInPath, searchActive } = derived;\n\n const navigate = (path: string) => {\n userMovedEpoch.current = openEpoch.current;\n const normalized = normalizePathInput(path);\n if (normalized === folder) return;\n const next = history.slice(0, historyIndex + 1);\n next.push(normalized);\n setHistory(next);\n setHistoryIndex(next.length - 1);\n };\n\n const selectItem = (item: CBViewItem, event?: Pick<MouseEvent, 'ctrlKey' | 'metaKey' | 'shiftKey'>) => {\n setActionError('');\n const key = viewItemKey(item);\n const toggleOff = Boolean((event?.ctrlKey || event?.metaKey) && selectedIds.has(key));\n setSelectedIds((current) => {\n if (event?.shiftKey && selectionAnchor) {\n const start = viewItems.findIndex((entry) => viewItemKey(entry) === selectionAnchor);\n const end = viewItems.findIndex((entry) => viewItemKey(entry) === key);\n if (start >= 0 && end >= 0) {\n const range = viewItems.slice(Math.min(start, end), Math.max(start, end) + 1).map((entry) => viewItemKey(entry));\n return new Set(event.ctrlKey || event.metaKey ? [...current, ...range] : range);\n }\n }\n if (event?.ctrlKey || event?.metaKey) {\n const next = new Set(current);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n }\n return new Set([key]);\n });\n setSelectionAnchor(key);\n setPreviewKey(viewItemKey(item));\n if (!toggleOff && item.type === 'asset' && client && project) {\n void client.inspectAsset(item.guid, { projectId: project.id, tabId: VIEW_WORKSPACE_TAB_ID }).catch(() => {});\n }\n };\n\n const assetToOpen = (item: CBViewItem) => item.type === 'asset'\n ? item\n : item.type === 'file' ? item.assets.find(asset => asset.kind === 'scene') ?? item.assets[0] : undefined;\n const canActivate = (item: CBViewItem) => item.type === 'folder' || (!!client && !!project && !!assetToOpen(item));\n const activateItem = (item: CBViewItem) => {\n setActionError('');\n if (item.type === 'folder') {\n navigate(item.path);\n return;\n }\n if (!client || !project) return;\n const guid = assetToOpen(item)?.guid;\n if (!guid) return;\n const key = viewItemKey(item);\n if (openingKeys.has(key)) return;\n setOpeningKeys((current) => new Set(current).add(key));\n void client.openAsset(guid, { projectId: project.id, tabId: VIEW_WORKSPACE_TAB_ID })\n .catch((error: unknown) => setActionError(error instanceof Error ? error.message : String(error)))\n .finally(() => {\n setOpeningKeys((current) => {\n if (!current.has(key)) return current;\n const next = new Set(current);\n next.delete(key);\n return next;\n });\n });\n };\n\n const toggleFavorite = (path: string) => setFavorites((current) => {\n const next = new Set(current);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n\n const togglePackExpansion = (path: string) => setExpandedPacks((current) => {\n const next = new Set(current);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n\n const toggleCollapsed = (path: string) => setCollapsed((current) => {\n const next = new Set(current);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n\n useEffect(() => {\n if (menu !== 'filter' && menu !== 'sort' && menu !== 'settings') setToolbarMenuAnchor(null);\n }, [menu]);\n\n const showMenu = (event: MouseEvent, items: BrowserMenuItem[]) => {\n event.preventDefault();\n event.stopPropagation();\n setMenu(null);\n setToolbarMenuAnchor(null);\n const target = event.currentTarget as HTMLElement;\n const anchor = isContextMenuAnchor(target)\n ? target.getBoundingClientRect()\n : anchorRectFromPoint(event.clientX, event.clientY);\n setContextMenu({ anchor, items });\n };\n\n const openToolbarMenu = (kind: 'filter' | 'sort' | 'settings') => {\n if (menu === kind) {\n setMenu(null);\n return;\n }\n const ref = kind === 'filter' ? filterButtonRef : kind === 'sort' ? sortButtonRef : settingsButtonRef;\n const rect = ref.current?.getBoundingClientRect();\n if (rect) setToolbarMenuAnchor(rect);\n setMenu(kind);\n };\n\n const folderMenu = (path: string, name: string): BrowserMenuItem[] => [\n { kind: 'title', label: name, icon: <Folder className=\"cb-folder-icon\" size={14} /> },\n { kind: 'item', id: 'open', label: t('contentBrowser.menu.open'), icon: <FolderOpen size={14} />, action: () => navigate(path) },\n {\n kind: 'item',\n id: 'copy-path',\n label: t('contentBrowser.menu.copyPath'),\n icon: <Copy size={14} />,\n action: () => void navigator.clipboard?.writeText(path || projectLabel),\n },\n {\n kind: 'item',\n id: 'favorite',\n label: favorites.has(path) ? t('contentBrowser.menu.removeFromFavorites') : t('contentBrowser.menu.addToFavorites'),\n icon: favorites.has(path) ? <StarOff size={14} /> : <Star size={14} />,\n action: () => toggleFavorite(path),\n },\n ];\n const itemMenu = (item: CBViewItem): BrowserMenuItem[] => {\n const Icon = itemIcon(item);\n if (item.type === 'folder') return folderMenu(item.path, item.name);\n return [\n { kind: 'title', label: item.name, icon: <Icon size={14} /> },\n ...(canActivate(item) ? [{ kind: 'item' as const, id: 'open', label: t('contentBrowser.menu.open'), shortcut: 'Enter', action: () => activateItem(item) }] : []),\n ...(item.type === 'asset'\n ? [{\n kind: 'item' as const,\n id: 'copy-guid',\n label: t('contentBrowser.menu.copyGuid'),\n icon: <Copy size={14} />,\n action: () => void navigator.clipboard?.writeText(item.guid),\n }]\n : []),\n {\n kind: 'item',\n id: 'copy-path',\n label: t('contentBrowser.menu.copyAssetPath'),\n icon: <Copy size={14} />,\n shortcut: 'Ctrl+Shift+C',\n action: () => void navigator.clipboard?.writeText(item.type === 'asset' ? item.packPath : item.path),\n },\n ];\n };\n const blankMenu: BrowserMenuItem[] = [\n { kind: 'title', label: t('contentBrowser.readOnlyTitle') },\n {\n kind: 'item',\n id: 'copy-path',\n label: t('contentBrowser.menu.copyCurrentPath'),\n icon: <Copy size={14} />,\n action: () => void navigator.clipboard?.writeText(folder || projectLabel),\n },\n ];\n\n const applyFilter = (filterId: string) => {\n const next = toggleFilterId(filterId, activeFamilies, activeKinds);\n setActiveFamilies(next.families);\n setActiveKinds(next.kinds);\n };\n\n const renderTreeRow = (path: string, name: string, depth: number, favorite = false) => {\n const hasChildren = folders.some((entry) => entry.path.startsWith(`${path}/`));\n const open = !collapsed.has(path);\n const folderItem = folders.find((entry) => entry.path === path);\n const selected = folder === path;\n const inPath = folder.startsWith(`${path}/`);\n const row = (\n <button\n type=\"button\"\n className={`cb-source-row${selected ? ' is-sel' : inPath ? ' is-path' : ''}${hasChildren && !open ? ' collapsed' : ''}`}\n style={{ paddingLeft: `calc(var(--fx-ref-space-16) + ${depth} * (var(--fx-ref-space-12) + var(--fx-ref-space-2)))` } as CSSProperties}\n onClick={() => {\n navigate(path);\n if (folderItem) {\n setPreviewKey(viewItemKey(folderItem));\n setSelectedIds(new Set([path]));\n setSelectionAnchor(path);\n }\n }}\n onDoubleClick={() => hasChildren && toggleCollapsed(path)}\n onContextMenu={(event) => showMenu(event, folderMenu(path, name))}\n >\n <span\n className={`cb-source-chev${hasChildren ? '' : ' hidden'}${open ? '' : ' collapsed'}`}\n onClick={(event) => {\n if (!hasChildren) return;\n event.stopPropagation();\n toggleCollapsed(path);\n }}\n >\n <ChevronDown size={12} />\n </span>\n <span className=\"cb-source-icon\">{open ? <FolderOpen size={15} /> : <Folder size={15} />}</span>\n <span className=\"cb-source-name\">{name}</span>\n </button>\n );\n if (!favorite) return <div key={`tree-${path}`}>{row}</div>;\n return (\n <div\n className={`cb-source-fav-row${selected ? ' is-sel' : inPath ? ' is-path' : ''}`}\n key={`fav-${path}`}\n >\n {row}\n <button\n type=\"button\"\n className=\"cb-source-unfav\"\n data-action={CONTENT_BROWSER_ACTIONS.toggleFavorite}\n title={t('contentBrowser.unfavorite')}\n aria-label={t('contentBrowser.unfavorite')}\n onClick={(event) => {\n event.stopPropagation();\n toggleFavorite(path);\n }}\n >\n <Star size={11} fill=\"currentColor\" />\n </button>\n </div>\n );\n };\n\n const filterLabel = activeFilterCount === 0\n ? t('contentBrowser.filterAll')\n : activeFilterCount === 1\n ? (familyFilters.find((item) => item.active) ?? kindFilters.find((item) => item.active))!.label\n : t('contentBrowser.filterByType');\n const sortLabels: Record<CBSortKey, string> = {\n name: t('contentBrowser.sort.name'),\n kind: t('contentBrowser.sort.kind'),\n packModifiedAt: t('contentBrowser.sort.modified'),\n estimatedSize: t('contentBrowser.sort.size'),\n };\n\n return (\n <div className=\"cb-root\" data-testid=\"panel-content-browser\">\n {client && project ? <>\n <Toolbar><Button size=\"compact\" aria-expanded={runtimeOpen} onClick={() => setRuntimeOpen(!runtimeOpen)}>Runtime content</Button></Toolbar>\n {runtimeOpen ? <RuntimePacksPanel client={client} /> : null}\n </> : null}\n <div\n className=\"cb-split\"\n ref={splitRef}\n style={{ '--cb-src-w': `${srcWidth}px`, '--cb-preview-w': `${previewWidth}px` } as CSSProperties}\n >\n <aside className=\"cb-source-panel\">\n <div className=\"cb-source-tree\">\n <section className=\"cb-source-group\">\n <button type=\"button\" data-action={CONTENT_BROWSER_ACTIONS.toggleSourceGroup} className={`cb-source-group-head${groups.favorites ? '' : ' collapsed'}`} onClick={() => setGroups((current) => ({ ...current, favorites: !current.favorites }))}>\n <span className=\"cb-source-chev\"><ChevronDown size={12} /></span><Star className=\"cb-source-group-icon\" size={15} /><span className=\"cb-source-group-name\">{t('contentBrowser.favorites')}</span>\n </button>\n {groups.favorites ? (\n <div className=\"cb-source-group-body\">\n {favorites.size ? [...favorites].map((path) => renderTreeRow(path, path.split('/').at(-1) ?? path, 0, true)) : <div className=\"cb-source-empty\">{t('contentBrowser.noFavorites')}</div>}\n </div>\n ) : null}\n </section>\n <section className=\"cb-source-group\">\n <button type=\"button\" data-action={CONTENT_BROWSER_ACTIONS.toggleSourceGroup} className={`cb-source-group-head${folder === '' ? ' is-sel' : ''}${groups.project ? '' : ' collapsed'}`} aria-expanded={groups.project} onClick={() => navigate('')} onDoubleClick={() => setGroups((current) => ({ ...current, project: !current.project }))} onContextMenu={(event) => showMenu(event, folderMenu('', projectLabel))}>\n <span className=\"cb-source-chev\" onClick={(event) => { event.stopPropagation(); setGroups((current) => ({ ...current, project: !current.project })); }}><ChevronDown size={12} /></span><FolderOpen className=\"cb-source-group-icon cb-folder-icon\" size={15} /><span className=\"cb-source-group-name\">{projectLabel}</span>\n </button>\n {groups.project ? (\n <div className=\"cb-source-group-body\">\n {visibleCatalogFolders(folders, collapsed).map((entry) => renderTreeRow(entry.path, entry.name, entry.path.split('/').length - 1))}\n </div>\n ) : null}\n </section>\n </div>\n </aside>\n <ResizeHandle\n title={t('contentBrowser.actions.resizeFolderTree')}\n onDrag={(delta) => {\n const next = srcWidth + delta;\n setSrcWidth(next);\n splitRef.current?.style.setProperty('--cb-src-w', `${Math.min(420, Math.max(140, next))}px`);\n }}\n />\n <section className=\"cb-asset-view\">\n <PanelHeader\n className=\"cb-toolbar\"\n center={\n <CBNavigationBar\n currentPath={folder}\n projectLabel={projectLabel}\n allDirs={folders.map((entry) => entry.path)}\n canGoBack={historyIndex > 0}\n canGoForward={historyIndex < history.length - 1}\n refreshDisabled={!project || loading}\n onBack={() => setHistoryIndex((index) => Math.max(0, index - 1))}\n onForward={() => setHistoryIndex((index) => Math.min(history.length - 1, index + 1))}\n onRefresh={() => void refresh()}\n onNavigate={navigate}\n />\n }\n end={<IconButton ref={settingsButtonRef} size=\"compact\" variant=\"quiet\" label={t('contentBrowser.settings')} icon={<Settings2 size={14} />} onClick={() => openToolbarMenu('settings')} />}\n />\n\n <div className=\"cb-content-body\">\n <div className=\"cb-grid-column\">\n <Toolbar className=\"cb-filter-bar\">\n <Button size=\"compact\" variant=\"quiet\" data-action={CONTENT_BROWSER_ACTIONS.activate}\n disabled={selectedIds.size !== 1 || !previewItem || !canActivate(previewItem)}\n loading={Boolean(previewItem && openingKeys.has(viewItemKey(previewItem)))}\n title={t('contentBrowser.openHint')}\n onClick={() => { if (previewItem) activateItem(previewItem); }}>{t('contentBrowser.menu.open')}</Button>\n <Button ref={filterButtonRef} size=\"compact\" variant=\"quiet\" data-action={CONTENT_BROWSER_ACTIONS.setFilter} className={activeFilterCount ? 'is-active' : undefined} leadingIcon={<Filter size={14} />} onClick={() => openToolbarMenu('filter')}>{filterLabel}</Button>\n <SearchField className=\"cb-search-box\" data-action={CONTENT_BROWSER_ACTIONS.search} value={query} onChange={(event) => setQuery(event.target.value)} onClear={() => setQuery('')} placeholder={t('contentBrowser.searchPlaceholder')} label={t('contentBrowser.search')} />\n <Button ref={sortButtonRef} size=\"compact\" variant=\"quiet\" data-action={CONTENT_BROWSER_ACTIONS.setSort} leadingIcon={<ArrowUpDown size={14} />} onClick={() => openToolbarMenu('sort')}>{sortLabels[sortState.key]}</Button>\n </Toolbar>\n\n {loading ? <div role=\"status\">Loading assets...</div> : null}\n {actionError ? <div role=\"alert\">{actionError}</div> : null}\n {loadFailed ? (\n <EmptyState\n className=\"cb-empty\"\n title={t('contentBrowser.unavailable')}\n description={client ? t('contentBrowser.loadErrorDescription') : t('contentBrowser.unavailableDescription')}\n icon={<FolderOpen size={28} />}\n />\n ) : !project ? (\n <EmptyState className=\"cb-empty\" title={t('contentBrowser.noProject')} description={t('contentBrowser.openProjectHint')} icon={<FolderOpen size={28} />} />\n ) : viewItems.length === 0 ? (\n <EmptyState className=\"cb-empty\" title={t('contentBrowser.emptyTitle')} description={t('contentBrowser.emptyDescription')} icon={<FolderOpen size={28} />} />\n ) : layout === 'column' ? (\n <CBDetailsList\n items={viewItems}\n selectedIds={selectedIds}\n openingKeys={openingKeys}\n sortState={sortState}\n onSort={(key) => setSortState((current) => nextSortState(current, key))}\n onSelect={selectItem}\n onActivate={activateItem}\n onContextMenu={(event, item) => showMenu(event, itemMenu(item))}\n onBlankClick={() => setSelectedIds(new Set())}\n />\n ) : (\n <CBGrid\n items={viewItems}\n thumbnailSize={thumbnailSize}\n layout={layout}\n searchActive={searchActive}\n expandedPacks={expandedPacks}\n selectedIds={selectedIds}\n openingKeys={openingKeys}\n onSelect={selectItem}\n onActivate={activateItem}\n onContextMenu={(event, item) => showMenu(event, itemMenu(item))}\n onTogglePackExpansion={togglePackExpansion}\n onBlankClick={() => setSelectedIds(new Set())}\n />\n )}\n <footer className=\"cb-status\">\n <span>\n {selectedIds.size\n ? t('contentBrowser.statusSelected', { count: viewItems.length, selected: selectedIds.size })\n : t('contentBrowser.statusCount', { count: viewItems.length })}\n </span>\n <span>{folder || projectLabel}</span>\n </footer>\n </div>\n {detailPanelOpen ? (\n <CBPreviewPanel\n previewItem={previewItem}\n foldersInPath={folders}\n diskFiles={labeledFiles}\n projectLabel={projectLabel}\n readPreview={readPreview}\n onClose={() => setPreviewKey(null)}\n onDrag={(delta) => {\n const next = previewWidth - delta;\n setPreviewWidth(next);\n splitRef.current?.style.setProperty('--cb-preview-w', `${Math.min(560, Math.max(180, next))}px`);\n }}\n onDragEnd={() => undefined}\n />\n ) : null}\n </div>\n </section>\n </div>\n\n <FloatingMenu\n open={Boolean(toolbarMenuAnchor && menu === 'filter')}\n anchorRect={toolbarMenuAnchor}\n onClose={() => setMenu(null)}\n ignorePointerWithin={[filterButtonRef]}\n className=\"cb-filter-menu\"\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"cb-filter-menu-body\" data-action={CONTENT_BROWSER_ACTIONS.setFilter}>\n <div className=\"cb-filter-section\">{t('contentBrowser.fileTypeSection')}</div>\n {familyFilters.map((item) => {\n const Icon = familyIcon(item.family);\n return (\n <button type=\"button\" className=\"cb-filter-option\" data-active={item.active ? 'true' : 'false'} key={item.id} onClick={() => applyFilter(item.id)}>\n <Checkbox checked={item.active} onChange={() => applyFilter(item.id)} tabIndex={-1} hideLabel label={item.label} className=\"cb-filter-check\" />\n <Icon size={14} className={`cb-filter-option-icon${item.family === 'dir' ? ' cb-folder-icon' : ''}`} />\n {item.label}\n </button>\n );\n })}\n <div className=\"cb-filter-separator\" />\n <div className=\"cb-filter-section\">{t('contentBrowser.assetTypeSection')}</div>\n {kindFilters.map((item) => {\n const Icon = kindIcon(item.kind);\n return (\n <button type=\"button\" className=\"cb-filter-option\" data-active={item.active ? 'true' : 'false'} key={item.id} onClick={() => applyFilter(item.id)}>\n <Checkbox checked={item.active} onChange={() => applyFilter(item.id)} tabIndex={-1} hideLabel label={item.label} className=\"cb-filter-check\" />\n <Icon size={14} className=\"cb-filter-option-icon\" />\n {item.label}\n </button>\n );\n })}\n <div className=\"cb-filter-separator\" />\n <button type=\"button\" className=\"cb-filter-option cb-filter-clear\" disabled={activeFilterCount === 0} onClick={() => { setActiveFamilies(new Set()); setActiveKinds(new Set()); }}>\n {t('contentBrowser.clearFilters')}\n </button>\n </div>\n </FloatingMenu>\n\n <FloatingMenu\n open={Boolean(toolbarMenuAnchor && menu === 'sort')}\n anchorRect={toolbarMenuAnchor}\n onClose={() => setMenu(null)}\n ignorePointerWithin={[sortButtonRef]}\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"cb-filter-menu-body\">\n <div className=\"cb-filter-section\">{t('contentBrowser.sort.by')}</div>\n {SORT_KEYS.map((key) => {\n const Icon = SORT_KEY_ICONS[key];\n const active = sortState.key === key;\n return (\n <button type=\"button\" className=\"cb-filter-option\" data-active={active ? 'true' : 'false'} key={key} onClick={() => setSortState((current) => nextSortState(current, key))}>\n <span className=\"cb-radio-menu\" data-checked={active ? 'true' : 'false'} />\n <Icon size={14} className=\"cb-filter-option-icon\" />\n {sortLabels[key]}\n </button>\n );\n })}\n <div className=\"cb-filter-separator\" />\n <div className=\"cb-filter-section\">{t('contentBrowser.sort.order')}</div>\n {([['asc', ArrowUpNarrowWide], ['desc', ArrowDownWideNarrow]] as const).map(([dir, Icon]) => {\n const active = sortState.dir === dir;\n return (\n <button type=\"button\" className=\"cb-filter-option\" data-active={active ? 'true' : 'false'} key={dir} onClick={() => setSortState((current) => setSortDir(current, dir as CBSortDir))}>\n <span className=\"cb-radio-menu\" data-checked={active ? 'true' : 'false'} />\n <Icon size={14} className=\"cb-filter-option-icon\" />\n {t(dir === 'asc' ? 'contentBrowser.sort.asc' : 'contentBrowser.sort.desc')}\n </button>\n );\n })}\n </div>\n </FloatingMenu>\n\n <FloatingMenu\n open={Boolean(toolbarMenuAnchor && menu === 'settings')}\n anchorRect={toolbarMenuAnchor}\n onClose={() => setMenu(null)}\n ignorePointerWithin={[settingsButtonRef]}\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"cb-settings-menu\">\n <strong>{t('contentBrowser.layout')}</strong>\n <div className=\"fx-segmented cb-layout-switch\">\n {LAYOUT_OPTIONS.map(({ mode, icon, labelKey }) => (\n <button\n type=\"button\"\n data-action={CONTENT_BROWSER_ACTIONS.setView}\n className=\"fx-segmented__item fx-segmented__item--stacked\"\n data-checked={layout === mode ? 'true' : 'false'}\n key={mode}\n onClick={() => setLayout(mode)}\n >\n {icon}<span>{t(labelKey)}</span>\n </button>\n ))}\n </div>\n <label className=\"cb-settings-row\">\n <span className=\"cb-settings-label\">{t('contentBrowser.thumbnailSize')}</span>\n <RangeInput\n data-action={CONTENT_BROWSER_ACTIONS.setThumbnailSize}\n className=\"cb-settings-range\"\n min={48}\n max={200}\n step={4}\n value={thumbnailSize}\n onChange={(event) => setThumbnailSize(Number(event.target.value))}\n title={t('contentBrowser.actions.thumbnailSize', { size: thumbnailSize })}\n />\n </label>\n <Switch\n layout=\"row\"\n className=\"cb-settings-switch-row\"\n label={t('contentBrowser.actions.detailPanel')}\n checked={detailPanelOpen}\n data-action={CONTENT_BROWSER_ACTIONS.toggleDetailPanel}\n onCheckedChange={setDetailPanelOpen}\n />\n </div>\n </FloatingMenu>\n\n <ContextMenu\n open={Boolean(contextMenu)}\n anchorRect={contextMenu?.anchor ?? null}\n items={contextMenu ? toFxMenuItems(contextMenu.items) : []}\n onClose={() => setContextMenu(null)}\n label={t('contentBrowser.contextMenu')}\n containerProps={{ 'data-action': CONTENT_BROWSER_ACTIONS.showContextMenu }}\n />\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { ContentBrowserPanel } from './ContentBrowserPanel';\nimport './content-browser.css';\n\nexport async function mountContentBrowserPanel(props: ComponentProps<typeof ContentBrowserPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement }) {\n if (!props.mountElement) throw new TypeError('mountContentBrowserPanel requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <ContentBrowserPanel\n client={props.client}\n />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","export const INSPECTOR_UI_SCHEMA_VERSION = 'forgeax.view.inspector.ui/1';\n\nexport const INSPECTOR_ACTIONS = Object.freeze({\n search: 'inspector.search',\n focus: 'inspector.focus',\n copyEntity: 'inspector.entity.copy',\n expandAll: 'inspector.expand-all',\n collapseAll: 'inspector.collapse-all',\n toggleComponent: 'inspector.component.toggle',\n copyComponent: 'inspector.component.copy',\n copyField: 'inspector.field.copy',\n showContextMenu: 'inspector.context-menu.show',\n});\n\nexport const INSPECTOR_MODEL_SCHEMA = Object.freeze({\n $id: INSPECTOR_UI_SCHEMA_VERSION,\n type: ['object', 'null'],\n required: ['id', 'name', 'components'],\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n badge: { type: 'string' },\n components: {\n type: 'array',\n items: {\n type: 'object',\n required: ['name', 'fields'],\n properties: {\n name: { type: 'string' },\n icon: { type: 'string' },\n fields: {\n type: 'array',\n items: {\n type: 'object',\n required: ['key', 'label', 'kind', 'value'],\n properties: {\n key: { type: 'string' },\n label: { type: 'string' },\n kind: { enum: ['vector3', 'vector4', 'number', 'bool', 'text', 'enum', 'color', 'asset'] },\n value: {},\n options: { type: 'array', items: { type: 'string' } },\n },\n },\n },\n },\n },\n },\n },\n});\n","import type { InspectorFormField } from '@forgeax/view-components';\nexport type InspectorEntity = { id: string; name: string; badge?: string; components: { name: string; icon: string; category?: 'all' | 'type' | 'capability'; fields: InspectorFormField[] }[] };\nexport type EntityInspection = { entityId?: string; entity?: number; name?: string; components?: { name: string; fields?: Record<string, unknown>; values?: Record<string, unknown> }[] };\nimport {\n formatInspectorFieldLabel,\n normalizeInspectorFieldValue,\n resolveInspectorFieldKind,\n} from '@forgeax/view-components/inspector-form-model';\n\nexport { formatInspectorFieldLabel };\n\nexport function inspectorEntityFromInspection(inspection: EntityInspection | null | undefined): InspectorEntity | null {\n if (!inspection?.entityId || !Array.isArray(inspection.components)) return null;\n return {\n id: inspection.entityId,\n name: inspection.name ?? (inspection.entity === undefined ? inspection.entityId : `Entity ${inspection.entity}`),\n badge: 'Entity',\n components: inspection.components.map((component) => ({\n name: component.name,\n icon: 'box',\n category: 'all',\n fields: Object.entries(component.fields ?? {}).map(([key, schema]) => {\n const rawValue = component.values?.[key];\n const kind = resolveInspectorFieldKind(schema, rawValue);\n return {\n key,\n label: formatInspectorFieldLabel(key),\n kind,\n value: normalizeInspectorFieldValue(rawValue, kind),\n };\n }),\n })),\n };\n}\n","import type { EntityInspection } from '../inspection.ts';\nimport {\n useOverlayRoot,\n CollapsibleSection,\n EmptyState,\n FloatingMenu,\n IconButton,\n InspectorFieldControl,\n Menu,\n PanelHeader,\n PropertyRow,\n SearchField,\n Spinner,\n Text,\n Toolbar,\n type AnchorRect,\n type MenuItem as FxMenuItem,\n useWorkspaceClientConnected,\n} from '@forgeax/view-components';\nimport {\n Box,\n Camera,\n Check,\n CircleUserRound,\n Copy,\n Crosshair,\n Focus,\n Hexagon,\n Layers,\n Lightbulb,\n Maximize2,\n Minimize2,\n MoreHorizontal,\n MousePointer2,\n Move3d,\n SlidersHorizontal,\n} from 'lucide-react';\nimport {\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useTranslation } from '../i18n/useTranslation';\nimport { INSPECTOR_ACTIONS } from '../schema.ts';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceObservation, createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { jsonUnchanged } from '@forgeax/view-workspace-core/contract';\nimport { inspectorEntityFromInspection, type InspectorEntity } from '../inspection.ts';\n\ntype InspectorComponent = InspectorEntity['components'][number];\ntype InspectorField = InspectorComponent['fields'][number];\n\ntype WorkspaceSnapshot = {\n revision?: number;\n preview?: { target: { targetId: string; generation?: number } } | null;\n sceneSelection?: {\n primary?: { entityId: string; label?: string } | null;\n } | null;\n};\n\ntype MenuItem =\n | { kind: 'title'; label: string }\n | { kind: 'separator' }\n | { kind: 'item'; id: string; label: string; icon?: ReactNode; disabled?: boolean; danger?: boolean; forge?: boolean; action: () => void };\ntype MenuState = { x: number; y: number; items: MenuItem[] } | null;\n\ntype InspectionRecord = {\n entityId: string;\n targetId: string;\n generation?: number;\n source: InspectorEntity | null;\n};\n\nfunction inspectionMatchesSelection(\n inspection: InspectionRecord | null,\n primary: { entityId: string } | null,\n target: { targetId?: string; generation?: number } | null | undefined,\n) {\n if (!inspection || !primary?.entityId || !target?.targetId) return false;\n return inspection.entityId === primary.entityId\n && inspection.targetId === target.targetId\n && inspection.generation === target.generation;\n}\n\nfunction componentIcon(component: Pick<InspectorComponent, 'name' | 'icon'>, size = 13) {\n const props = { size, strokeWidth: 1.7 };\n if (component.name === 'Transform') return <Move3d {...props} />;\n if (component.name === 'Light') return <Lightbulb {...props} />;\n if (component.name === 'Camera') return <Camera {...props} />;\n if (component.name.includes('Renderer')) return <Layers {...props} />;\n if (component.name.includes('Body') || component.name.includes('Collider')) return <Hexagon {...props} />;\n if (component.name.includes('Character')) return <CircleUserRound {...props} />;\n return <Box {...props} />;\n}\n\nfunction InspectorContextMenu({ state, close }: { state: Exclude<MenuState, null>; close: () => void }) {\n const overlayRoot = useOverlayRoot();\n const { t } = useTranslation();\n useEffect(() => {\n const dismiss = () => close();\n const escape = (event: KeyboardEvent) => event.key === 'Escape' && close();\n window.addEventListener('pointerdown', dismiss);\n window.addEventListener('keydown', escape);\n return () => {\n window.removeEventListener('pointerdown', dismiss);\n window.removeEventListener('keydown', escape);\n };\n }, [close]);\n return createPortal(\n <div\n className=\"insp-context-menu fx-ui\"\n data-action={INSPECTOR_ACTIONS.showContextMenu}\n style={{\n left: Math.max(8, Math.min(state.x, window.innerWidth - 238)),\n top: Math.max(8, Math.min(state.y, window.innerHeight - 300)),\n }}\n onPointerDown={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n <Menu\n label={t('inspector.contextMenu')}\n items={state.items.map((item): FxMenuItem => {\n if (item.kind === 'separator') return { type: 'separator' };\n if (item.kind === 'title') return { type: 'title', label: item.label };\n return {\n id: item.id,\n label: item.label,\n icon: item.forge ? <span className=\"insp-menu-forge\">{item.icon}</span> : item.icon,\n disabled: item.disabled,\n danger: item.danger,\n onSelect: () => { item.action(); close(); },\n };\n })}\n />\n </div>,\n overlayRoot ?? document.body,\n );\n}\n\nfunction InspectorBody({ source, focus }: { source: InspectorEntity; focus?: () => void }) {\n const { t } = useTranslation();\n const name = source.name;\n const components = useMemo(() => structuredClone(source.components), [source]);\n const [collapsed, setCollapsed] = useState(new Set<string>());\n const [query, setQuery] = useState('');\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsMenuAnchor, setSettingsMenuAnchor] = useState<AnchorRect | null>(null);\n const settingsButtonRef = useRef<HTMLButtonElement>(null);\n const [copied, setCopied] = useState(false);\n const [contextMenu, setContextMenu] = useState<MenuState>(null);\n const sectionRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n useEffect(() => {\n if (!settingsOpen) setSettingsMenuAnchor(null);\n }, [settingsOpen]);\n\n const toggleSettingsMenu = () => {\n if (settingsOpen) {\n setSettingsOpen(false);\n return;\n }\n const rect = settingsButtonRef.current?.getBoundingClientRect();\n if (rect) setSettingsMenuAnchor(rect);\n setSettingsOpen(true);\n };\n\n const showContext = (event: MouseEvent, items: MenuItem[]) => {\n event.preventDefault();\n event.stopPropagation();\n setSettingsOpen(false);\n setContextMenu({ x: event.clientX, y: event.clientY, items });\n };\n const componentMenu = (component: InspectorComponent): MenuItem[] => [\n { kind: 'title', label: component.name },\n { kind: 'item', id: 'copy', label: t('inspector.menu.copyComponentJson'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify({ [component.name]: component.fields }, null, 2)) },\n ];\n const fieldMenu = (component: InspectorComponent, field: InspectorField): MenuItem[] => [\n { kind: 'title', label: `${component.name}.${field.label}` },\n { kind: 'item', id: 'copy-value', label: t('inspector.menu.copyValue'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify(field.value)) },\n ];\n const shownComponents = useMemo(() => {\n const text = query.trim().toLowerCase();\n return components\n .map((component) => ({\n ...component,\n fields: component.fields.filter((field) => (\n !text || component.name.toLowerCase().includes(text) || field.label.toLowerCase().includes(text) || field.key.toLowerCase().includes(text)\n )),\n }))\n .filter((component) => !text || component.name.toLowerCase().includes(text) || component.fields.length > 0);\n }, [components, query]);\n const headerIcon = source.badge === 'Light' ? <Lightbulb size={15} /> : source.badge === 'Character' ? <CircleUserRound size={15} /> : <Box size={15} />;\n\n return (\n <div className=\"fx-inspector__body\">\n <PanelHeader className=\"insp-header\" onContextMenu={(event) => showContext(event, [\n { kind: 'title', label: name },\n { kind: 'item', id: 'focus', label: t('inspector.menu.focusViewport'), icon: <Focus size={14} />, action: () => focus?.(), disabled: !focus },\n { kind: 'item', id: 'copy', label: t('inspector.menu.copyObjectJson'), icon: <Copy size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2)) },\n ])}\n start={\n <span className=\"insp-header-identity\">\n <span className=\"tico\">{headerIcon}</span>\n <span className=\"insp-header-copy\">\n <Text as=\"span\" variant=\"label\" className=\"insp-header-name\" title={name}>{name}</Text>\n </span>\n </span>\n }\n end={\n <span className=\"insp-header-end\">\n {source.badge ? <span className=\"badge\" title={source.badge}>{source.badge}</span> : null}\n <IconButton data-action={INSPECTOR_ACTIONS.focus} onClick={focus} disabled={!focus} label={t('inspector.focusObject')} icon={<Crosshair size={15} />} variant=\"quiet\" size=\"compact\" />\n <IconButton data-action={INSPECTOR_ACTIONS.copyEntity} label={t('inspector.copyJson')} icon={copied ? <Check size={15} /> : <Copy size={15} />} variant=\"quiet\" size=\"compact\" onClick={() => { void navigator.clipboard?.writeText(JSON.stringify({ name, components }, null, 2)); setCopied(true); window.setTimeout(() => setCopied(false), 1000); }} />\n </span>\n }\n />\n\n <Toolbar className=\"insp-toolbar\">\n <SearchField data-testid=\"insp-search\" data-action={INSPECTOR_ACTIONS.search} value={query} onChange={(event) => setQuery(event.target.value)} onClear={() => setQuery('')} placeholder={t('inspector.searchPlaceholder')} label={t('inspector.searchLabel')} />\n <IconButton ref={settingsButtonRef} className={settingsOpen ? 'is-active' : undefined} data-testid=\"insp-settings\" label={t('inspector.displaySettings')} icon={<SlidersHorizontal size={15} />} variant=\"secondary\" size=\"compact\" onClick={toggleSettingsMenu} />\n </Toolbar>\n\n <div className=\"insp-scroll\" data-testid=\"insp-scroll\">\n <div className=\"dp-comp\">\n <div className=\"ch\">\n <Text as=\"span\" variant=\"caption\" tone=\"muted\">{t('inspector.components')}</Text>\n </div>\n {components.map((component) => (\n <div role=\"button\" tabIndex={0} key={component.name} className=\"comp-row\" data-testid={`insp-comprow-${component.name}`} onClick={() => { setCollapsed((current) => { const next = new Set(current); next.delete(component.name); return next; }); sectionRefs.current[component.name]?.scrollIntoView({ behavior: 'smooth', block: 'start' }); }} onContextMenu={(event) => showContext(event, componentMenu(component))}>\n <span className=\"ci\">{componentIcon(component)}</span><span className=\"comp-name\">{component.name}</span>\n </div>\n ))}\n </div>\n\n <div className=\"dp-body\">\n {shownComponents.length === 0 ? <EmptyState className=\"no-match\" title={t('inspector.noMatchTitle')} description={t('inspector.noMatchDescription')} /> : shownComponents.map((component) => {\n const isCollapsed = collapsed.has(component.name) && !query;\n const category = component.category === 'all' ? 'dim-all' : component.category === 'capability' ? 'dim-cap' : 'dim-type';\n return (\n <div className={`cat ${category}`} key={component.name} ref={(element) => { sectionRefs.current[component.name] = element; }} onContextMenu={(event) => showContext(event, componentMenu(component))}>\n <CollapsibleSection\n open={!isCollapsed}\n onOpenChange={(open) => setCollapsed((current) => { const next = new Set(current); if (open) next.delete(component.name); else next.add(component.name); return next; })}\n triggerProps={{ 'data-action': INSPECTOR_ACTIONS.toggleComponent }}\n title={<span className=\"cat-title\"><span className=\"cat-icon\">{componentIcon(component)}</span><span>{component.name}</span></span>}\n trailing={<span className=\"cacts\"><IconButton className=\"cact\" data-action={INSPECTOR_ACTIONS.copyComponent} label={t('inspector.menu.copyComponentJson')} icon={<Copy size={13} />} variant=\"quiet\" size=\"compact\" onClick={(event) => { event.stopPropagation(); void navigator.clipboard?.writeText(JSON.stringify(component, null, 2)); }} /><IconButton className=\"cact more\" label={t('inspector.more')} icon={<MoreHorizontal size={14} />} variant=\"quiet\" size=\"compact\" onClick={(event) => showContext(event, componentMenu(component))} /></span>}\n >\n <div className=\"cat-fields\">\n {component.fields.length === 0 ? <EmptyState className=\"no-match\" title={t('inspector.noMatchTitle')} description={t('inspector.noMatchComponent')} /> : component.fields.map((field) => (\n <div className=\"f-row-wrap\" key={field.key} data-testid={`insp-field-${component.name}-${field.key}`} onContextMenu={(event) => { event.stopPropagation(); showContext(event, fieldMenu(component, field)); }}>\n <PropertyRow className=\"f-row\" label={<span title={field.key}>{field.label}</span>}>\n <InspectorFieldControl field={field} />\n </PropertyRow>\n </div>\n ))}\n </div>\n </CollapsibleSection>\n </div>\n );\n })}\n </div>\n </div>\n <FloatingMenu\n open={Boolean(settingsMenuAnchor && settingsOpen)}\n anchorRect={settingsMenuAnchor}\n onClose={() => setSettingsOpen(false)}\n ignorePointerWithin={[settingsButtonRef]}\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"fx-insp-menu\">\n <Menu label={t('inspector.displaySettings')} items={[\n { type: 'title', label: t('inspector.displaySettings') },\n { id: 'expand', label: t('inspector.expandAll'), buttonProps: { 'data-action': INSPECTOR_ACTIONS.expandAll }, icon: <Maximize2 size={14} />, onSelect: () => { setCollapsed(new Set()); setSettingsOpen(false); } },\n { id: 'collapse', label: t('inspector.collapseAll'), buttonProps: { 'data-action': INSPECTOR_ACTIONS.collapseAll }, icon: <Minimize2 size={14} />, onSelect: () => { setCollapsed(new Set(components.map((component) => component.name))); setSettingsOpen(false); } },\n ]} />\n </div>\n </FloatingMenu>\n {contextMenu ? <InspectorContextMenu state={contextMenu} close={() => setContextMenu(null)} /> : null}\n </div>\n );\n}\n\nexport function InspectorPanel(props: { client?: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(props.client), [props.client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot() as WorkspaceSnapshot | null,\n () => reader.getSnapshot() as WorkspaceSnapshot | null,\n );\n const primary = workspace?.sceneSelection?.primary ?? null;\n const target = workspace?.preview?.target;\n const connected = useWorkspaceClientConnected(props.client);\n const [inspection, setInspection] = useState<InspectionRecord | null>(null);\n const [loading, setLoading] = useState(false);\n const [failure, setFailure] = useState<string | null>(null);\n const selectionKey = primary?.entityId && target?.targetId\n ? `${primary.entityId}:${target.targetId}:${target.generation ?? ''}`\n : null;\n useEffect(() => {\n if (!props.client || !connected || !primary?.entityId || !target?.targetId) {\n setLoading(false);\n return;\n }\n const observation = createWorkspaceObservation(reader, (current: WorkspaceSnapshot | null) =>\n current?.sceneSelection?.primary?.entityId === primary.entityId &&\n current?.preview?.target?.targetId === target.targetId &&\n current?.preview?.target?.generation === target.generation);\n const { signal } = observation;\n let timer: ReturnType<typeof setTimeout>;\n setLoading(true);\n setFailure(null);\n const refresh = async () => {\n if (signal.aborted) return;\n try {\n const result = await props.client!.call<EntityInspection>('entity.inspect', { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }, { signal });\n if (signal.aborted) return;\n const source = inspectorEntityFromInspection(result);\n setInspection((current) => {\n const next = { entityId: primary.entityId, targetId: target.targetId, generation: target.generation, source };\n if (\n current &&\n current.entityId === next.entityId &&\n current.targetId === next.targetId &&\n current.generation === next.generation &&\n jsonUnchanged(current.source, next.source)\n ) return current;\n return next;\n });\n setFailure(null);\n setLoading(false);\n } catch (error) {\n if (signal.aborted) return;\n setInspection((current) => {\n if (current == null) return current;\n return null;\n });\n setFailure(String(error));\n setLoading(false);\n }\n if (!signal.aborted) timer = setTimeout(refresh, 500);\n };\n void refresh();\n return () => { observation.dispose(); clearTimeout(timer); };\n // A batched return to the same selection still needs a fresh observation.\n }, [props.client, connected, selectionKey, reader, workspace]);\n const inSync = inspectionMatchesSelection(inspection, primary, target);\n const syncedSource = inSync ? inspection?.source ?? null : null;\n const hasSelection = Boolean(primary?.entityId);\n const displaySource = syncedSource;\n const focus = props.client && target && primary?.entityId ? () => {\n void props.client!.call('entity.focus', { entityId: primary.entityId, targetId: target.targetId, targetGeneration: target.generation }).catch((error: unknown) => setFailure(String(error)));\n } : undefined;\n const showEmpty = !hasSelection || (!displaySource && !loading);\n const showLoadingPane = hasSelection && !displaySource && loading;\n const showStaleOverlay = hasSelection && !inSync && loading && Boolean(displaySource);\n const entityIdAttr = inSync ? syncedSource?.id : (primary?.entityId ?? displaySource?.id);\n return (\n <div\n className=\"fx-inspector fx-ui\"\n data-testid=\"panel-inspector\"\n data-view-readonly=\"true\"\n data-entity-id={entityIdAttr}\n data-inspector-loading={showStaleOverlay || showLoadingPane ? 'true' : undefined}\n >\n {showEmpty ? (\n <EmptyState\n className=\"dp-empty\"\n data-testid=\"insp-empty\"\n title={t('inspector.emptyTitle')}\n description={failure ?? t('inspector.emptyDescription')}\n icon={<MousePointer2 />}\n />\n ) : showLoadingPane ? (\n <div className=\"fx-inspector__loading-pane\" data-testid=\"insp-loading\">\n <Spinner label={t('inspector.loading')} />\n </div>\n ) : displaySource ? (\n <>\n <InspectorBody key={displaySource.id} source={displaySource} focus={focus} />\n {showStaleOverlay ? (\n <div className=\"fx-inspector__loading-veil\" aria-hidden>\n <Spinner label={t('inspector.loading')} />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { InspectorPanel } from './InspectorPanel';\nimport './inspector.css';\n\nexport async function mountInspectorPanel(props: ComponentProps<typeof InspectorPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement }) {\n if (!props.mountElement) throw new TypeError('mountInspectorPanel requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <InspectorPanel client={props.client} />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","import type { WorkspaceAsset, WorkspaceInspection } from './contract.ts';\ntype InspectionRow = { label: string; value: string };\n\nfunction displayInspectionValue(value: unknown) {\n if (value === undefined || value === null) return undefined;\n if (typeof value === 'string' && value.trim() === '') return undefined;\n return typeof value === 'object' ? JSON.stringify(value) : String(value);\n}\n\nfunction addInspectionRow(rows: InspectionRow[], label: string, value: unknown) {\n const displayed = displayInspectionValue(value);\n if (displayed === undefined) return;\n rows.push(Object.freeze({ label, value: displayed }));\n}\n\n/** Identity rows for a serialized inspection. Kind-specific facts use meta projections. */\nexport function workspaceInspectionFactRows(inspection: WorkspaceInspection | null | undefined) {\n if (!inspection || typeof inspection !== 'object' || Array.isArray(inspection)) {\n return Object.freeze([]);\n }\n const asset: Partial<WorkspaceAsset> = inspection.asset && typeof inspection.asset === 'object' ? inspection.asset : {};\n const rows: InspectionRow[] = [];\n addInspectionRow(rows, 'GUID', inspection.guid ?? asset.guid);\n addInspectionRow(rows, 'Kind', asset.kind);\n addInspectionRow(rows, 'Name', asset.name);\n addInspectionRow(rows, 'Path', asset.path);\n addInspectionRow(rows, 'Source', inspection.source?.path ?? asset.sourcePath);\n addInspectionRow(rows, 'Revision', inspection.revision ?? asset.revision ?? inspection.source?.revision);\n addInspectionRow(rows, 'Package', asset.packageId ?? asset.packageUrl);\n if (inspection.ddc?.state) addInspectionRow(rows, 'DDC', inspection.ddc.state);\n return Object.freeze(rows);\n}\n\nexport function workspaceInspectionMetaRows(inspection: WorkspaceInspection | null | undefined, keys: readonly string[] | undefined) {\n const meta = inspection?.meta;\n if (!meta || typeof meta !== 'object' || Array.isArray(meta)) return Object.freeze([]);\n const rows: InspectionRow[] = [];\n for (const key of keys ?? []) {\n addInspectionRow(rows, key, meta[key]);\n }\n return Object.freeze(rows);\n}\n\nexport function unwrapWorkspaceInspection(result: unknown): WorkspaceInspection | null {\n if (!result || typeof result !== 'object') return null;\n const payload = 'inspection' in result && result.inspection !== undefined ? result.inspection : result;\n return payload && typeof payload === 'object' && !Array.isArray(payload) ? payload as WorkspaceInspection : null;\n}\n","import { EmptyState, InspectorForm, PanelHeader } from '@forgeax/view-components';\nimport { useEffect, useMemo, useState, useSyncExternalStore } from 'react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { unwrapWorkspaceInspection } from '@forgeax/view-workspace-core/inspection-presentation';\nimport { selectWorkspaceResourceSubject } from '@forgeax/view-workspace-core/resource-open';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.ts';\nimport './material.css';\n\nexport function MaterialPanel(props: { client?: ViewWorkspaceClient }) {\n return <MaterialPropertiesPanel {...props} />;\n}\n\nexport function MaterialPropertiesPanel({\n client,\n}: {\n client?: ViewWorkspaceClient;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-material-properties\">\n <EmptyState title={t('material.unavailable')} description={t('material.empty')} />\n </div>\n );\n }\n return <LiveProperties client={client} />;\n}\n\nfunction LiveProperties({ client }: { client: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const projectId = workspace?.project?.id;\n const [inspection, setInspection] = useState<Record<string, unknown> | null>(null);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!subject?.guid || !projectId) {\n setInspection(null);\n setFailed(false);\n return undefined;\n }\n const controller = new AbortController();\n void client.inspectAsset(subject.guid, {\n projectId,\n tabId: VIEW_WORKSPACE_TAB_ID,\n signal: controller.signal,\n }).then((result: unknown) => {\n if (controller.signal.aborted) return;\n setInspection(unwrapWorkspaceInspection(result));\n setFailed(false);\n }).catch(() => {\n if (!controller.signal.aborted) {\n setInspection(null);\n setFailed(true);\n }\n });\n return () => controller.abort();\n }, [client, subject?.guid, projectId]);\n\n if (!subject) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-material-properties\">\n <EmptyState title={t('material.empty')} description={t('material.unavailable')} />\n </div>\n );\n }\n if (failed) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-material-properties\">\n <EmptyState title={t('material.unavailable')} description={t('material.inspectFailed')} />\n </div>\n );\n }\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-material-properties\" data-view-readonly=\"true\">\n <PanelHeader start={<span><strong>{String(subject.name ?? subject.guid)}</strong></span>} />\n <InspectorForm inspection={inspection ?? { guid: subject.guid, asset: subject }} identityTitle={t('material.facts')} />\n </div>\n );\n}\n","import type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport type { WorkspaceTarget } from '@forgeax/view-workspace-core/contract';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { createWorkspaceId } from '@forgeax/view-workspace-core/id';\n\nconst initialPreviewCameras = new Map<string, unknown>();\n\nexport function previewCameraKey(target: Partial<WorkspaceTarget> | null | undefined) {\n return `${target?.targetId ?? ''}:${target?.generation ?? ''}`;\n}\n\n/** Drop lens.aspect so a later commit does not freeze the spawn-time aspect. */\nexport function cameraPoseForRestore(camera: unknown) {\n if (!camera || typeof camera !== 'object') return camera;\n const pose = { ...camera } as Record<string, unknown>;\n if (pose.lens && typeof pose.lens === 'object') {\n const lens = { ...pose.lens } as Record<string, unknown>;\n delete lens.aspect;\n pose.lens = lens;\n }\n return pose;\n}\n\nexport function materialPreviewShouldCapture(event: Event, surface: HTMLElement | null | undefined, pageType = 'material') {\n const eventTarget = event?.target as Element | null;\n if (!eventTarget || event?.defaultPrevented) return false;\n if (typeof eventTarget.closest === 'function' &&\n eventTarget.closest('button,input,a,select,textarea,[contenteditable=\"true\"]')) {\n return false;\n }\n if (surface && eventTarget !== surface && surface.contains?.(eventTarget) !== true) return false;\n const activePage = surface?.ownerDocument?.documentElement?.dataset?.forgeaxViewActivePage;\n if (activePage !== undefined && activePage !== pageType) return false;\n if (event.type === 'keydown' || event.type === 'keyup') {\n const active = surface?.ownerDocument?.activeElement;\n if (!surface || (!active || (active !== surface && surface.contains?.(active) !== true))) return false;\n }\n return true;\n}\n\n/**\n * Remember the first camera.get for this preview target. Later calls keep that\n * pose so a remount after flying does not treat the flown camera as initial.\n */\nexport async function rememberInitialPreviewCamera(api: Pick<ViewWorkspaceClient, \"getCamera\">, target: WorkspaceTarget, {\n tabId = VIEW_WORKSPACE_TAB_ID,\n snapshots = initialPreviewCameras,\n}: { tabId?: string; snapshots?: Map<string, unknown> } = {}) {\n const key = previewCameraKey(target);\n if (snapshots.has(key)) return snapshots.get(key);\n const current = await api.getCamera({\n targetId: String(target.targetId),\n targetGeneration: target.generation,\n tabId,\n });\n if (!snapshots.has(key)) snapshots.set(key, current?.camera ?? null);\n return snapshots.get(key);\n}\n\nexport async function restorePreviewCamera(api: Pick<ViewWorkspaceClient, \"getCamera\" | \"beginCamera\" | \"commitCamera\">, target: WorkspaceTarget, pose: unknown, {\n tabId = VIEW_WORKSPACE_TAB_ID,\n}: { tabId?: string } = {}) {\n const targetId = String(target.targetId);\n const targetGeneration = target.generation;\n const current = await api.getCamera({ targetId, targetGeneration, tabId });\n const version = current?.version;\n const interactionId = createWorkspaceId('interaction');\n await api.beginCamera({\n targetId,\n targetGeneration,\n tabId,\n baseVersion: version,\n interactionId,\n });\n await api.commitCamera({\n targetId,\n targetGeneration,\n tabId,\n interactionId,\n operationId: createWorkspaceId('operation'),\n expectedVersion: version,\n camera: cameraPoseForRestore(pose),\n });\n}\n","import type { PreviewOwner, ViewPresentation as PreviewPresentation } from '@forgeax/view-workspace-core/engine-presentation';\nimport { Button, EmptyState } from '@forgeax/view-components';\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { bindWorkspacePreviewSurface } from '@forgeax/view-workspace-core/preview-surface';\nimport {\n selectWorkspaceResourcePreview,\n selectWorkspaceResourceSubject,\n} from '@forgeax/view-workspace-core/resource-open';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { PAGE_TYPE, RESOURCE_KINDS } from '../identity.ts';\nimport {\n materialPreviewShouldCapture,\n rememberInitialPreviewCamera,\n restorePreviewCamera,\n} from '../preview-navigation.ts';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './material.css';\n\ntype InputController = {\n attach: (element: HTMLElement) => (reason?: string) => void;\n abort?: (reason?: string) => Promise<void> | void;\n};\ntype InputControllerOptions = {\n api: ViewWorkspaceClient;\n targetId: string;\n targetGeneration?: number;\n tabId: string;\n shouldCapture: (event: Event) => boolean;\n document?: Document;\n window?: Window;\n};\ntype InputControllerFactory = (options: InputControllerOptions) => InputController;\n\nexport function MaterialPreviewPanel({\n client,\n presentation,\n owner,\n inputControllerFactory,\n}: {\n client?: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n inputControllerFactory?: () => InputControllerFactory | undefined;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return <PreviewEmpty title={t('material.previewEmpty')} description={t('material.previewUnavailable')} />;\n }\n return (\n <LivePreview\n client={client}\n presentation={presentation}\n owner={owner}\n inputControllerFactory={inputControllerFactory}\n />\n );\n}\n\nfunction PreviewEmpty({ title, description }: { title: string; description: string }) {\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-material-preview\">\n <EmptyState title={title} description={description} />\n </div>\n );\n}\n\nfunction LivePreview({\n client,\n presentation,\n owner,\n inputControllerFactory,\n}: {\n client: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n inputControllerFactory?: () => InputControllerFactory | undefined;\n}) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(reader.subscribe, reader.getSnapshot, reader.getSnapshot);\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const preview = selectWorkspaceResourcePreview(workspace, subject?.guid);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const controllerRef = useRef<InputController | null>(null);\n const [failure, setFailure] = useState<{ hint?: string; expected?: string }>();\n const [initialPose, setInitialPose] = useState<unknown>(null);\n const [restoring, setRestoring] = useState(false);\n const [restoreError, setRestoreError] = useState('');\n const targetId = preview?.target?.targetId;\n const targetGeneration = preview?.target?.generation;\n\n useEffect(() => {\n const container = containerRef.current;\n const target = preview?.target;\n if (!container || !target) return undefined;\n let cancelled = false;\n let removeInput: ((reason?: string) => void) | undefined;\n let controller: InputController | undefined;\n const bound = bindWorkspacePreviewSurface({\n presentation,\n target,\n container,\n owner,\n api: client,\n editorTargetId: workspace?.editorPreview?.target?.targetId,\n });\n if (!bound.ok) {\n setFailure(bound.error);\n setInitialPose(null);\n return undefined;\n }\n setFailure(undefined);\n const document = container.ownerDocument;\n const pageActive = () => {\n const active = document?.documentElement?.dataset?.forgeaxViewActivePage;\n return active === undefined || active === PAGE_TYPE;\n };\n const detachInput = () => {\n const remove = removeInput;\n removeInput = undefined;\n controllerRef.current = null;\n remove?.('input-detached');\n };\n const attachInput = () => {\n if (cancelled || removeInput || !pageActive()) return;\n const factory = inputControllerFactory?.();\n if (typeof factory !== 'function') return;\n controller = factory({\n api: client,\n targetId: String(target.targetId),\n targetGeneration: target.generation,\n tabId: VIEW_WORKSPACE_TAB_ID,\n document,\n window: document?.defaultView ?? undefined,\n shouldCapture: (event) => materialPreviewShouldCapture(event, container, PAGE_TYPE),\n });\n controllerRef.current = controller;\n removeInput = controller.attach(container);\n };\n void rememberInitialPreviewCamera(client, target).then((pose) => {\n if (!cancelled) setInitialPose(pose ?? null);\n }).catch((error: unknown) => {\n if (!cancelled) setRestoreError(error instanceof Error ? error.message : String(error));\n });\n attachInput();\n const observer = document && typeof MutationObserver === 'function'\n ? new MutationObserver(() => {\n if (pageActive()) attachInput();\n else detachInput();\n })\n : undefined;\n observer?.observe(document.documentElement, { attributes: true, attributeFilter: ['data-forgeax-view-active-page'] });\n return () => {\n cancelled = true;\n observer?.disconnect();\n detachInput();\n void bound.dispose?.();\n };\n }, [\n presentation,\n owner,\n targetId,\n targetGeneration,\n preview?.target,\n preview?.target?.surfaceId,\n workspace?.editorPreview?.target?.targetId,\n client,\n inputControllerFactory,\n ]);\n\n const restoreView = () => {\n const target = preview?.target;\n if (!target || initialPose == null || restoring) return;\n setRestoring(true);\n setRestoreError('');\n void Promise.resolve(controllerRef.current?.abort?.('camera-restore'))\n .then(() => restorePreviewCamera(client, target, initialPose))\n .catch((error: unknown) => {\n setRestoreError(error instanceof Error ? error.message : String(error));\n })\n .finally(() => setRestoring(false));\n };\n\n if (!subject) {\n return <PreviewEmpty title={t('material.previewEmpty')} description={t('material.previewEmptyDescription')} />;\n }\n if (!preview?.target) {\n return (\n <PreviewEmpty\n title={t('material.previewUnavailable')}\n description={t('material.previewCapabilityMissing')}\n />\n );\n }\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-material-preview fx-ui\" data-testid=\"panel-material-preview\">\n <div className=\"fx-material-preview-toolbar\">\n <Button\n size=\"compact\"\n variant=\"secondary\"\n data-testid=\"material-restore-view\"\n disabled={initialPose == null || restoring || Boolean(failure)}\n onClick={restoreView}\n >\n {t('material.restoreView')}\n </Button>\n {restoreError ? (\n <p className=\"fx-material-restore-error\" role=\"alert\">{restoreError}</p>\n ) : null}\n </div>\n <div\n ref={containerRef}\n className=\"fx-asset-preview-surface\"\n data-forgeax-asset-preview={preview.target.targetId}\n hidden={Boolean(failure)}\n />\n {failure ? (\n <EmptyState\n title={t('material.previewUnavailable')}\n description={failure.hint ?? failure.expected ?? t('material.previewCapabilityMissing')}\n />\n ) : null}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { MaterialPanel, MaterialPropertiesPanel } from './MaterialPanel';\nimport { MaterialPreviewPanel } from './MaterialPreviewPanel';\nimport './material.css';\n\ntype MountProps = ComponentProps<typeof MaterialPreviewPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement };\n\nfunction mount(node: Parameters<ReturnType<typeof createRoot>['render']>[0], props: MountProps) {\n if (!props.mountElement) throw new TypeError('material panel mount requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n {node}\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n\nexport async function mountMaterialPanel(props: MountProps) {\n return mount(\n <MaterialPanel client={props.client} />,\n props,\n );\n}\n\nexport async function mountMaterialPropertiesPanel(props: MountProps) {\n return mount(\n <MaterialPropertiesPanel client={props.client} />,\n props,\n );\n}\n\nexport async function mountMaterialPreviewPanel(props: MountProps) {\n return mount(\n <MaterialPreviewPanel\n client={props.client}\n presentation={props.presentation}\n owner={props.owner}\n />,\n props,\n );\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","import type { PreviewOwner, ViewPresentation as PreviewPresentation } from '@forgeax/view-workspace-core/engine-presentation';\nimport { EmptyState } from '@forgeax/view-components';\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { bindWorkspacePreviewSurface } from '@forgeax/view-workspace-core/preview-surface';\nimport {\n selectWorkspaceResourcePreview,\n selectWorkspaceResourceSubject,\n} from '@forgeax/view-workspace-core/resource-open';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.ts';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './mesh.css';\n\n\nexport function MeshPreviewPanel({\n client,\n presentation,\n owner,\n}: {\n client?: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return <PreviewEmpty title={t('mesh.previewEmpty')} description={t('mesh.previewUnavailable')} />;\n }\n return <LivePreview client={client} presentation={presentation} owner={owner} />;\n}\n\nfunction PreviewEmpty({ title, description }: { title: string; description: string }) {\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-mesh-preview\">\n <EmptyState title={title} description={description} />\n </div>\n );\n}\n\nfunction LivePreview({\n client,\n presentation,\n owner,\n}: {\n client: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n}) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const preview = selectWorkspaceResourcePreview(workspace, subject?.guid);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [failure, setFailure] = useState<{ hint?: string; expected?: string }>();\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !preview?.target) return undefined;\n const bound = bindWorkspacePreviewSurface({\n presentation,\n target: preview.target,\n container,\n owner,\n api: client,\n editorTargetId: workspace?.editorPreview?.target?.targetId,\n });\n if (!bound.ok) {\n setFailure(bound.error);\n return undefined;\n }\n setFailure(undefined);\n return () => { void bound.dispose?.(); };\n }, [\n presentation,\n owner,\n preview?.target,\n preview?.target?.targetId,\n preview?.target?.generation,\n preview?.target?.surfaceId,\n workspace?.editorPreview?.target?.targetId,\n client,\n ]);\n\n if (!subject) return <PreviewEmpty title={t('mesh.previewEmpty')} description={t('mesh.empty')} />;\n if (!preview?.target) {\n return (\n <PreviewEmpty\n title={t('mesh.previewUnavailable')}\n description={t('mesh.previewCapabilityMissing')}\n />\n );\n }\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-mesh-preview\">\n <div\n ref={containerRef}\n className=\"fx-asset-preview-surface\"\n data-forgeax-asset-preview={preview.target.targetId}\n hidden={Boolean(failure)}\n />\n {failure ? (\n <EmptyState\n title={t('mesh.previewUnavailable')}\n description={failure.hint ?? failure.expected ?? t('mesh.previewCapabilityMissing')}\n />\n ) : null}\n </div>\n );\n}\n","import { EmptyState, InspectorForm, PanelHeader, PropertyRow } from '@forgeax/view-components';\nimport { useEffect, useMemo, useState, useSyncExternalStore } from 'react';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { unwrapWorkspaceInspection } from '@forgeax/view-workspace-core/inspection-presentation';\nimport { selectWorkspaceResourcePreview, selectWorkspaceResourceSubject } from '@forgeax/view-workspace-core/resource-open';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.ts';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './mesh.css';\n\nexport function MeshPropertiesPanel({\n client,\n}: {\n client?: ViewWorkspaceClient;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.unavailable')} description={t('mesh.empty')} />\n </div>\n );\n }\n return <LiveProperties client={client} />;\n}\n\nfunction LiveProperties({ client }: { client: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const projectId = workspace?.project?.id;\n const selectedPreview = selectWorkspaceResourcePreview(workspace, subject?.guid);\n const previewTarget = selectedPreview?.target;\n const binding = selectedPreview?.assetBinding;\n const [inspection, setInspection] = useState<Record<string, unknown> | null>(null);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!subject?.guid || !projectId || binding) {\n setInspection(null);\n setFailed(false);\n return undefined;\n }\n const controller = new AbortController();\n void client.inspectAsset(subject.guid, {\n projectId,\n tabId: VIEW_WORKSPACE_TAB_ID,\n signal: controller.signal,\n }).then((result: unknown) => {\n if (controller.signal.aborted) return;\n setInspection(unwrapWorkspaceInspection(result));\n setFailed(false);\n }).catch(() => {\n if (!controller.signal.aborted) {\n setInspection(null);\n setFailed(true);\n }\n });\n return () => controller.abort();\n }, [client, subject?.guid, projectId, previewTarget?.targetId, previewTarget?.generation, Boolean(binding)]);\n\n if (!subject) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.empty')} description={t('mesh.unavailable')} />\n </div>\n );\n }\n if (failed && !binding) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\">\n <EmptyState title={t('mesh.unavailable')} description={t('mesh.inspectFailed')} />\n </div>\n );\n }\n const displayed = binding ? { guid: subject.guid, asset: subject, ...binding } : inspection;\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-mesh-properties\" data-view-readonly=\"true\">\n <PanelHeader start={<span><strong>{String(subject.name ?? subject.guid)}</strong></span>} />\n {binding?.publication && <>\n <PropertyRow label=\"Bound generation\">{binding.publication.generation}</PropertyRow>\n <PropertyRow label=\"Bound digest\"><span style={{ overflowWrap: 'anywhere' }}>{binding.publication.digest}</span></PropertyRow>\n </>}\n <InspectorForm inspection={displayed ?? { guid: subject.guid, asset: subject }} identityTitle={t('mesh.facts')} />\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { MeshPreviewPanel } from './MeshPreviewPanel';\nimport { MeshPropertiesPanel } from './MeshPropertiesPanel';\nimport './mesh.css';\n\ntype MountProps = ComponentProps<typeof MeshPreviewPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement };\n\nfunction mountPanel(node: Parameters<ReturnType<typeof createRoot>['render']>[0], props: MountProps) {\n if (!props.mountElement) throw new TypeError('mesh panel mount requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n {node}\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n\nexport async function mountMeshPreviewPanel(props: MountProps) {\n return mountPanel(\n <MeshPreviewPanel client={props.client} presentation={props.presentation} owner={props.owner} />,\n props,\n );\n}\n\nexport async function mountMeshPropertiesPanel(props: MountProps) {\n return mountPanel(\n <MeshPropertiesPanel client={props.client} />,\n props,\n );\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","import type { PreviewOwner, ViewPresentation as PreviewPresentation } from '@forgeax/view-workspace-core/engine-presentation';\nimport { EmptyState } from '@forgeax/view-components';\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { bindWorkspacePreviewSurface } from '@forgeax/view-workspace-core/preview-surface';\nimport {\n selectWorkspaceResourcePreview,\n selectWorkspaceResourceSubject,\n} from '@forgeax/view-workspace-core/resource-open';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.ts';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './texture.css';\n\n\nexport function TexturePreviewPanel({\n client,\n presentation,\n owner,\n}: {\n client?: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return <PreviewEmpty title={t('texture.previewEmpty')} description={t('texture.previewUnavailable')} />;\n }\n return <LivePreview client={client} presentation={presentation} owner={owner} />;\n}\n\nfunction PreviewEmpty({ title, description }: { title: string; description: string }) {\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-texture-preview\">\n <EmptyState title={title} description={description} />\n </div>\n );\n}\n\nfunction LivePreview({\n client,\n presentation,\n owner,\n}: {\n client: ViewWorkspaceClient;\n presentation?: PreviewPresentation;\n owner?: PreviewOwner;\n}) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const preview = selectWorkspaceResourcePreview(workspace, subject?.guid);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [failure, setFailure] = useState<{ hint?: string; expected?: string }>();\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || !preview?.target) return undefined;\n const bound = bindWorkspacePreviewSurface({\n presentation,\n target: preview.target,\n container,\n owner,\n api: client,\n editorTargetId: workspace?.editorPreview?.target?.targetId,\n });\n if (!bound.ok) {\n setFailure(bound.error);\n return undefined;\n }\n setFailure(undefined);\n return () => { void bound.dispose?.(); };\n }, [\n presentation,\n owner,\n preview?.target,\n preview?.target?.targetId,\n preview?.target?.generation,\n preview?.target?.surfaceId,\n workspace?.editorPreview?.target?.targetId,\n client,\n ]);\n\n if (!subject) return <PreviewEmpty title={t('texture.previewEmpty')} description={t('texture.empty')} />;\n if (!preview?.target) {\n return (\n <PreviewEmpty\n title={t('texture.previewUnavailable')}\n description={t('texture.previewCapabilityMissing')}\n />\n );\n }\n return (\n <div className=\"fx-asset-editor fx-asset-preview fx-ui\" data-testid=\"panel-texture-preview\">\n <div\n ref={containerRef}\n className=\"fx-asset-preview-surface\"\n data-forgeax-asset-preview={preview.target.targetId}\n hidden={Boolean(failure)}\n />\n {failure ? (\n <EmptyState\n title={t('texture.previewUnavailable')}\n description={failure.hint ?? failure.expected ?? t('texture.previewCapabilityMissing')}\n />\n ) : null}\n </div>\n );\n}\n","import { EmptyState, InspectorForm, PanelHeader } from '@forgeax/view-components';\nimport { useEffect, useMemo, useState, useSyncExternalStore } from 'react';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { unwrapWorkspaceInspection } from '@forgeax/view-workspace-core/inspection-presentation';\nimport { selectWorkspaceResourceSubject } from '@forgeax/view-workspace-core/resource-open';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { RESOURCE_KINDS } from '../identity.ts';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './texture.css';\n\nexport function TexturePropertiesPanel({\n client,\n}: {\n client?: ViewWorkspaceClient;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-texture-properties\">\n <EmptyState title={t('texture.unavailable')} description={t('texture.empty')} />\n </div>\n );\n }\n return <LiveProperties client={client} />;\n}\n\nfunction LiveProperties({ client }: { client: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = selectWorkspaceResourceSubject(workspace, RESOURCE_KINDS);\n const projectId = workspace?.project?.id;\n const [inspection, setInspection] = useState<Record<string, unknown> | null>(null);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!subject?.guid || !projectId) {\n setInspection(null);\n setFailed(false);\n return undefined;\n }\n const controller = new AbortController();\n void client.inspectAsset(subject.guid, {\n projectId,\n tabId: VIEW_WORKSPACE_TAB_ID,\n signal: controller.signal,\n }).then((result: unknown) => {\n if (controller.signal.aborted) return;\n setInspection(unwrapWorkspaceInspection(result));\n setFailed(false);\n }).catch(() => {\n if (!controller.signal.aborted) {\n setInspection(null);\n setFailed(true);\n }\n });\n return () => controller.abort();\n }, [client, subject?.guid, projectId]);\n\n if (!subject) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-texture-properties\">\n <EmptyState title={t('texture.empty')} description={t('texture.unavailable')} />\n </div>\n );\n }\n if (failed) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-texture-properties\">\n <EmptyState title={t('texture.unavailable')} description={t('texture.inspectFailed')} />\n </div>\n );\n }\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-texture-properties\" data-view-readonly=\"true\">\n <PanelHeader start={<span><strong>{String(subject.name ?? subject.guid)}</strong></span>} />\n <InspectorForm inspection={inspection ?? { guid: subject.guid, asset: subject }} identityTitle={t('texture.facts')} />\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { TexturePreviewPanel } from './TexturePreviewPanel';\nimport { TexturePropertiesPanel } from './TexturePropertiesPanel';\nimport './texture.css';\n\ntype MountProps = ComponentProps<typeof TexturePreviewPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement };\n\nfunction mountPanel(node: Parameters<ReturnType<typeof createRoot>['render']>[0], props: MountProps) {\n if (!props.mountElement) throw new TypeError('texture panel mount requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n {node}\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n\nexport async function mountTexturePreviewPanel(props: MountProps) {\n return mountPanel(\n <TexturePreviewPanel client={props.client} presentation={props.presentation} owner={props.owner} />,\n props,\n );\n}\n\nexport async function mountTexturePropertiesPanel(props: MountProps) {\n return mountPanel(\n <TexturePropertiesPanel client={props.client} />,\n props,\n );\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","import { EmptyState, InspectorForm, PanelHeader } from '@forgeax/view-components';\nimport { useEffect, useMemo, useState, useSyncExternalStore } from 'react';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\nimport { unwrapWorkspaceInspection } from '@forgeax/view-workspace-core/inspection-presentation';\nimport { createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport { useTranslation } from '../i18n/useTranslation';\nimport './asset.css';\n\nexport function AssetPropertiesPanel({\n client,\n}: {\n client?: ViewWorkspaceClient;\n}) {\n const { t } = useTranslation();\n if (!client) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-asset-properties\">\n <EmptyState title={t('asset.unavailable')} description={t('asset.empty')} />\n </div>\n );\n }\n return <LiveProperties client={client} />;\n}\n\nfunction LiveProperties({ client }: { client: ViewWorkspaceClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot(),\n () => reader.getSnapshot(),\n );\n const subject = workspace?.openRequest?.asset;\n const projectId = workspace?.project?.id;\n const [inspection, setInspection] = useState<Record<string, unknown> | null>(null);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!subject?.guid || !projectId) {\n setInspection(null);\n setFailed(false);\n return undefined;\n }\n const controller = new AbortController();\n void client.inspectAsset(subject.guid, {\n projectId,\n tabId: VIEW_WORKSPACE_TAB_ID,\n signal: controller.signal,\n }).then((result: unknown) => {\n if (controller.signal.aborted) return;\n setInspection(unwrapWorkspaceInspection(result));\n setFailed(false);\n }).catch(() => {\n if (!controller.signal.aborted) {\n setInspection(null);\n setFailed(true);\n }\n });\n return () => controller.abort();\n }, [client, subject?.guid, projectId]);\n\n if (!subject) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-asset-properties\">\n <EmptyState title={t('asset.empty')} description={t('asset.unavailable')} />\n </div>\n );\n }\n if (failed) {\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-asset-properties\">\n <EmptyState title={t('asset.unavailable')} description={t('asset.inspectFailed')} />\n </div>\n );\n }\n const inspectionRecord = inspection ?? { guid: subject.guid, asset: subject };\n return (\n <div className=\"fx-asset-editor fx-ui\" data-testid=\"panel-asset-properties\" data-view-readonly=\"true\">\n <PanelHeader start={<span><strong>{String(subject.name ?? subject.guid)}</strong></span>} />\n <InspectorForm inspection={inspectionRecord} identityTitle={t('asset.facts')} />\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { AssetPropertiesPanel } from './AssetPropertiesPanel';\nimport './asset.css';\n\ntype MountProps = ComponentProps<typeof AssetPropertiesPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement };\n\nexport async function mountAssetPropertiesPanel(props: MountProps) {\n if (!props.mountElement) throw new TypeError('asset panel mount requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <AssetPropertiesPanel client={props.client} />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","export const PLUGINS_UI_SCHEMA_VERSION = 'forgeax.view.plugins.ui/1';\n\nexport const PLUGINS_ACTIONS = Object.freeze({\n search: 'plugins.search',\n refresh: 'plugins.refresh',\n select: 'plugins.select',\n});\n\nexport const PLUGINS_MODEL_SCHEMA = Object.freeze({\n $id: PLUGINS_UI_SCHEMA_VERSION,\n type: 'object',\n required: ['entries'],\n properties: {\n entries: {\n type: 'array',\n items: {\n type: 'object',\n required: ['sourceId', 'label', 'version', 'state'],\n properties: {\n sourceId: { type: 'string' },\n label: { type: 'string' },\n version: { type: 'string' },\n state: { enum: ['active', 'inactive', 'error'] },\n },\n },\n },\n },\n});\n","import type { FrontendAssemblyState } from '@forgeax/engine-host';\nimport type { InspectorSources, InspectorSource } from '../runtime.ts';\nimport { workspaceDiagnosticRecord } from '@forgeax/view-workspace-core/command-error';\nexport type PluginEntry = { sourceId: string; entryId: string; module: string; label: string; kind: string; assetGuid?: string; program?: string; realm?: string; version: string; state: string; tags: string[]; operations: string[]; commands: string[] };\ntype PluginRecord = { entryId?: string; id?: string; module?: string; name?: string; realm?: string; fiberId?: string | number; assetGuid?: string; program?: string; requiredServices?: readonly string[]; fiberState?: string; disabled?: boolean; desiredState?: string; commandContract?: unknown };\nexport type PluginSnapshotSource = { sourceId: string; kind: string; generation?: number; state?: string; plugins?: PluginRecord[]; actual?: { entries?: readonly PluginRecord[] }; assembly?: { root?: { program: string; codeRevision: string } | null } | null; api?: InspectorSource['api']; connection?: InspectorSource['connection']; local?: boolean; unavailable?: boolean };\nexport type PluginsInspectorClient = { sources?: (options?: { signal?: AbortSignal }) => Promise<unknown>; inspect?: (options: { sourceId: string; generation?: number; signal?: AbortSignal }) => Promise<unknown>; inspectPlugins?: PluginsInspectorClient['inspect'] };\nexport type PluginSnapshotOptions = { client?: PluginsInspectorClient; hostAssembly?: FrontendAssemblyState; connectionId?: string };\nexport const PLUGIN_TAGS = Object.freeze(['backend', 'frontend', 'game', 'asset', 'api', 'cli']);\n\nfunction entriesFor(source: PluginSnapshotSource): PluginEntry[] {\n const { sourceId, kind, assembly, actual, plugins = [], api } = source;\n const installed = new Map((actual?.entries ?? []).map(entry => [entry.entryId ?? entry.id, entry]));\n // Backend assembly.current is the FRONTEND projection, not backend installations.\n const records = plugins;\n const declared = new Map<string | undefined, PluginRecord>();\n for (const entry of records) {\n const id = entry.entryId ?? entry.id;\n declared.set(id, { ...declared.get(id), ...entry });\n }\n const entries = new Map<string, PluginEntry>();\n for (const entry of declared.values()) {\n const entryId = entry.entryId ?? entry.id;\n if (!entryId) continue;\n const module = entry.module ?? entry.name ?? '';\n const observed = installed.get(entryId);\n const realm = observed?.realm ?? entry.realm;\n const operations = (api?.operations ?? []).filter(({ owner }) => owner && (\n entryId === `provider:${owner.sourceId}:${owner.providerId}` ||\n entryId === owner.fiberId || (entry.fiberId !== undefined && String(entry.fiberId) === String(owner.fiberId))\n ));\n const tags = new Set<string>();\n if (kind === 'backend' || kind === 'frontend') tags.add(kind);\n // A View frontend may use Engine's engine realm. Realm alone is not gameplay evidence.\n const required = observed?.requiredServices ?? entry.requiredServices ?? [];\n if (kind === 'game' || kind === 'engine' ||\n (realm === 'engine' && required.some(service => service === 'world' || service === 'gameHost'))) tags.add('game');\n if (entry.assetGuid) tags.add('asset');\n if (operations.length) tags.add('api');\n const commands = operations.map(({ descriptor }) => descriptor?.path ?? descriptor?.id?.split('.'))\n .filter((path): path is string[] => Array.isArray(path) && path.length > 0).map(path => path.join(' '));\n if (commands.length || entry.commandContract) tags.add('cli');\n entries.set(entryId, {\n sourceId, entryId, module,\n label: module && module !== 'unknown' ? module : entry.program || entry.assetGuid || '', kind,\n ...(entry.assetGuid ? { assetGuid: entry.assetGuid } : {}),\n ...(entry.program ? { program: entry.program } : {}),\n realm,\n version: entry.program && entry.program === assembly?.root?.program ? assembly!.root!.codeRevision : '',\n state: observed?.fiberState ?? entry.fiberState ?? (entry.disabled || entry.desiredState === 'disabled' ? 'disabled' : 'unknown'),\n tags: [...tags],\n operations: operations.map(operation => operation.descriptor?.id ?? 'unknown'),\n commands,\n });\n }\n return [...entries.values()];\n}\n\n/** Both public clients are supported; methods must keep their transport-bound receiver. */\nexport function pluginInspector(client: PluginsInspectorClient | undefined) {\n const inspect = typeof client?.inspect === 'function' ? client.inspect : client?.inspectPlugins;\n if (typeof client?.sources !== 'function' || typeof inspect !== 'function') return undefined;\n return { sources: client.sources.bind(client) as () => Promise<InspectorSources>, inspect: inspect.bind(client) as (input: { sourceId: string; generation?: number }) => Promise<InspectorSource> };\n}\n\n/** One failed or unavailable source must not masquerade as a complete frontend-only inventory. */\nexport async function loadPluginSnapshot({ client, hostAssembly, connectionId }: PluginSnapshotOptions = {}) {\n const sources: PluginSnapshotSource[] = [];\n const issues: { sourceId: string; message: string }[] = [];\n const local: PluginSnapshotSource | undefined = hostAssembly ? {\n sourceId: connectionId ? `view-frontend:${connectionId}` : 'view-frontend',\n kind: 'frontend', assembly: hostAssembly.current, actual: hostAssembly.status,\n plugins: (hostAssembly.inspection ?? []).map(item => ({\n entryId: `fiber:${item.uid}`,\n ...(item.uid == null ? {} : { fiberId: String(item.uid) }),\n module: item.name,\n fiberState: item.state,\n ...(item.origin?.guid ? { assetGuid: item.origin.guid } : {}),\n ...(item.origin?.program ? { program: item.origin.program } : {}),\n missingServices: item.missingServices,\n })), local: true,\n } : undefined;\n const inspector = pluginInspector(client);\n if (!inspector) issues.push({ sourceId: 'remote-hosts', message: 'Remote Host inspection unavailable. Only locally observed entries are shown.' });\n else {\n try {\n const listed = await inspector.sources();\n const ownConnection = listed.caller?.connectionId ?? connectionId;\n if (local && ownConnection) local.sourceId = `view-frontend:${ownConnection}`;\n const remote = (listed.sources ?? []).filter(source => !local || !ownConnection ||\n (source.sourceId !== local.sourceId && source.connection?.connectionId !== ownConnection));\n const results = await Promise.allSettled(remote.map(source => inspector.inspect({\n sourceId: source.sourceId, generation: source.generation,\n })));\n const stale = results.flatMap((result, index) =>\n result.status === 'rejected' && workspaceDiagnosticRecord(result.reason).code === 'view-inspector-stale-generation' ? [index] : []);\n if (stale.length) {\n try {\n const refreshed = await inspector.sources();\n const current = new Map((refreshed.sources ?? []).map(source => [source.sourceId, source]));\n await Promise.all(stale.map(async index => {\n try {\n const source = current.get(remote[index].sourceId);\n if (!source) throw new Error('Inspection source disconnected during refresh.');\n remote[index] = source;\n results[index] = { status: 'fulfilled', value: await inspector.inspect({\n sourceId: source.sourceId, generation: source.generation,\n }) };\n } catch (reason) { results[index] = { status: 'rejected', reason }; }\n }));\n } catch (reason) {\n for (const index of stale) results[index] = { status: 'rejected', reason };\n }\n }\n results.forEach((result, index) => {\n const source = remote[index];\n if (result.status === 'fulfilled') sources.push({ ...source, ...result.value });\n else {\n sources.push({ ...source, unavailable: true });\n issues.push({ sourceId: source.sourceId, message: typeof workspaceDiagnosticRecord(result.reason).message === 'string' ? String(workspaceDiagnosticRecord(result.reason).message) : String(result.reason) });\n }\n });\n } catch (cause) {\n issues.push({ sourceId: 'remote-hosts', message: cause instanceof Error ? cause.message : String(cause) });\n }\n }\n if (local) sources.push(local);\n sources.sort((a, b) => (a.kind === 'backend' ? 0 : 1) - (b.kind === 'backend' ? 0 : 1) || a.sourceId.localeCompare(b.sourceId));\n return { sources, entries: sources.flatMap(entriesFor), issues };\n}\n\n/** Entry-only callers require complete inspection; the UI can display partial snapshots. */\nexport async function loadPluginEntries(options: PluginSnapshotOptions) {\n const snapshot = await loadPluginSnapshot(options);\n if (snapshot.issues.length) throw new Error(snapshot.issues.map(issue => issue.message).join('; '));\n return snapshot.entries;\n}\n\n/** Search and Host selection intersect; selected capability tags use AND semantics.\n * Search, source, and capability tags are View presentation filters.\n * @param {{ query?: string, sourceId?: string, tags?: string[] }} options\n */\nexport function filterPluginEntries(entries: readonly PluginEntry[], { query = '', sourceId = '', tags = [] }: { query?: string; sourceId?: string; tags?: readonly string[] } = {}) {\n const search = query.trim().toLowerCase();\n return entries.filter(entry => (!sourceId || entry.sourceId === sourceId) &&\n tags.every(tag => entry.tags.includes(tag)) &&\n [entry.entryId, entry.module, entry.assetGuid, entry.program, entry.sourceId, entry.kind, entry.realm, entry.state,\n ...entry.tags, ...entry.operations, ...entry.commands].join(' ').toLowerCase().includes(search));\n}\n","import { Button, Text } from '@forgeax/view-components';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { PLUGIN_TAGS } from './plugin-entries.ts';\n\nexport type PluginSource = { sourceId: string; kind: string; local?: boolean; unavailable?: boolean };\n\nexport function PluginFilters({ sources, sourceId, tags, counts, total, onSource, onTag, onReset }: {\n sources: PluginSource[];\n sourceId: string;\n tags: string[];\n counts: Record<string, number>;\n total: number;\n onSource: (sourceId: string) => void;\n onTag: (tag: string) => void;\n onReset: () => void;\n}) {\n const { t } = useTranslation();\n return <div className=\"fx-plugins-filters\">\n <div className=\"fx-plugins-filter-row\" role=\"group\" aria-label={t('plugins.hosts')}>\n <Text variant=\"caption\" className=\"fx-plugins-filter-label\">{t('plugins.hosts')}</Text>\n <Button size=\"compact\" variant=\"quiet\" className=\"fx-plugin-filter\" aria-pressed={!sourceId}\n data-plugin-host=\"all\" onClick={() => onSource('')}>{t('plugins.allHosts')} <span>{total}</span></Button>\n {sources.map(source => <Button key={source.sourceId} size=\"compact\" variant=\"quiet\"\n className=\"fx-plugin-filter\" aria-pressed={sourceId === source.sourceId} title={source.sourceId}\n data-plugin-host={source.sourceId} onClick={() => onSource(source.sourceId)}>\n {source.local ? t('plugins.thisFrontend') : source.sourceId}\n <span>{counts[`host:${source.sourceId}`] ?? 0}{source.unavailable ? ' !' : ''}</span>\n </Button>)}\n </div>\n <div className=\"fx-plugins-filter-row\" role=\"group\" aria-label={t('plugins.tags')}>\n <Text variant=\"caption\" className=\"fx-plugins-filter-label\">{t('plugins.tags')}</Text>\n {PLUGIN_TAGS.map((tag: string) => <Button key={tag} size=\"compact\" variant=\"quiet\"\n className=\"fx-plugin-filter\" aria-pressed={tags.includes(tag)} title={t(`plugins.tagHelp.${tag}`)}\n data-plugin-tag={tag} onClick={() => onTag(tag)}>{t(`plugins.tag.${tag}`)} <span>{counts[tag] ?? 0}</span></Button>)}\n <Button size=\"compact\" variant=\"quiet\" data-action=\"plugins.reset\" onClick={onReset}>{t('plugins.reset')}</Button>\n </div>\n <Text variant=\"caption\" className=\"fx-plugins-filter-help\">{t('plugins.filterHelp')}</Text>\n </div>;\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { jsonUnchanged } from '@forgeax/view-workspace-core/contract';\nimport {\n EmptyState,\n IconButton,\n PanelHeader,\n SearchField,\n Status,\n Surface,\n Text,\n Toolbar,\n type StatusTone,\n} from '@forgeax/view-components';\nimport { Box, Package, RefreshCw, SearchX, ShieldCheck } from 'lucide-react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { PLUGINS_ACTIONS } from '../schema.ts';\n\nimport { type PluginEntry, type PluginsInspectorClient, type PluginSnapshotOptions, filterPluginEntries, loadPluginSnapshot, PLUGIN_TAGS } from './plugin-entries.ts';\nimport { PluginFilters, type PluginSource } from './PluginFilters';\n\n\nfunction pluginType(entry: PluginEntry) {\n return entry.kind ?? 'unknown';\n}\n\nfunction stateTone(state: string): StatusTone {\n if (state === 'active') return 'success';\n if (state === 'failed' || state === 'error') return 'error';\n if (state === 'pending' || state === 'loading' || state === 'unloading') return 'warning';\n return 'info';\n}\n\nexport function PluginsPanel(props: PluginSnapshotOptions & { workspaceClient?: PluginsInspectorClient }) {\n const { t } = useTranslation();\n const inspector = props.client ?? props.workspaceClient;\n const [entries, setEntries] = useState<PluginEntry[]>([]);\n const [sources, setSources] = useState<PluginSource[]>([]);\n const [issues, setIssues] = useState<{ sourceId: string; message: string }[]>([]);\n const [sourceId, setSourceId] = useState('');\n const [tags, setTags] = useState<string[]>([]);\n const [query, setQuery] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n const [selectedEntryId, setSelectedEntryId] = useState<string | null>(null);\n\n const request = useRef(0);\n const refresh = useCallback(async () => {\n const revision = ++request.current;\n setLoading(true);\n setError(null);\n try {\n const snapshot = await loadPluginSnapshot({ client: inspector, hostAssembly: props.hostAssembly, connectionId: props.connectionId });\n if (revision !== request.current) return;\n setEntries((current) => jsonUnchanged(current, snapshot.entries) ? current : snapshot.entries);\n setSources((current) => jsonUnchanged(current, snapshot.sources) ? current : snapshot.sources);\n setIssues((current) => jsonUnchanged(current, snapshot.issues) ? current : snapshot.issues);\n } catch (cause) {\n if (revision !== request.current) return;\n setEntries([]);\n setSources([]);\n setIssues([]);\n setError(cause instanceof Error ? cause.message : t('plugins.loadErrorTitle'));\n } finally {\n if (revision === request.current) setLoading(false);\n }\n }, [inspector, props.hostAssembly, props.connectionId, t]);\n\n useEffect(() => {\n void refresh();\n return () => { request.current += 1; };\n }, [refresh]);\n\n const filtered: PluginEntry[] = filterPluginEntries(entries, { query, sourceId, tags });\n const candidates: PluginEntry[] = filterPluginEntries(entries, { query, sourceId });\n const counts: Record<string, number> = Object.fromEntries(PLUGIN_TAGS.map((tag: string) => [tag, candidates.filter(entry => entry.tags.includes(tag)).length]));\n for (const source of sources) counts[`host:${source.sourceId}`] = entries.filter(entry => entry.sourceId === source.sourceId).length;\n const reset = () => { setQuery(''); setSourceId(''); setTags([]); };\n\n const hostTone: StatusTone = error ? 'error' : loading || issues.length ? 'warning' : 'info';\n const hostLabel = error\n ? t('plugins.loadErrorTitle')\n : loading\n ? t('plugins.loading')\n : issues.length ? t('plugins.partial') : t('plugins.observed');\n\n return (\n <Surface className=\"fx-plugins fx-ui\" tone=\"sidebar\" data-testid=\"panel-plugins\">\n <PanelHeader\n className=\"fx-plugins-header\"\n start={<Text as=\"h2\" variant=\"heading\">{t('plugins.title')}</Text>}\n center={(\n <Toolbar className=\"fx-plugins-toolbar\" aria-label={t('plugins.toolbar')}>\n <SearchField\n data-action={PLUGINS_ACTIONS.search}\n label={t('plugins.filterLabel')}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n onClear={() => setQuery('')}\n placeholder={t('plugins.filterPlaceholder')}\n />\n </Toolbar>\n )}\n end={(\n <IconButton\n data-action={PLUGINS_ACTIONS.refresh}\n label={t('plugins.refresh')}\n icon={<RefreshCw className=\"fx-icon\" />}\n variant=\"quiet\"\n size=\"compact\"\n disabled={loading}\n onClick={() => void refresh()}\n />\n )}\n />\n <PluginFilters sources={sources} sourceId={sourceId} tags={tags} counts={counts} total={entries.length}\n onSource={setSourceId} onTag={tag => setTags(current => current.includes(tag) ? current.filter(value => value !== tag) : [...current, tag])}\n onReset={reset} />\n <div className=\"fx-plugins-summary\">\n <Text as=\"span\" variant=\"caption\">\n <ShieldCheck className=\"fx-icon\" /> {t('plugins.resultCount', { count: filtered.length, total: entries.length })}\n </Text>\n <Status tone={hostTone}>{hostLabel}</Status>\n </div>\n {issues.length > 0 ? <div className=\"fx-plugins-notice\" role=\"status\" data-testid=\"plugins-partial\">\n {issues.map(issue => <p key={issue.sourceId}>{issue.sourceId}: {issue.message}</p>)}\n </div> : null}\n <div className=\"fx-plugins-list\">\n {!error && sources.filter(source => filtered.some(entry => entry.sourceId === source.sourceId)).map(source => <section\n key={source.sourceId} className=\"fx-plugin-source\" aria-label={source.sourceId}>\n <div className=\"fx-plugin-source-header\"><Text variant=\"caption\">{source.sourceId}</Text>\n <Text variant=\"caption\">{filtered.filter(entry => entry.sourceId === source.sourceId).length}</Text></div>\n {filtered.filter(entry => entry.sourceId === source.sourceId).map((entry) => {\n const entryId = `${entry.sourceId}:${entry.entryId}`;\n const sourceId = entry.sourceId;\n const label = entry.label || t('plugins.unnamed');\n const version = entry.version || '—';\n const selected = selectedEntryId === entryId;\n const type = pluginType(entry);\n return (\n <button\n type=\"button\"\n key={entryId}\n data-action={PLUGINS_ACTIONS.select}\n className={`fx-plugin-row${selected ? ' selected' : ''}`}\n data-plugin-kind={type}\n data-plugin-tags={entry.tags.join(' ')}\n data-source-id={sourceId}\n data-entry-id={entry.entryId}\n data-asset-guid={entry.assetGuid}\n aria-pressed={selected}\n onClick={() => setSelectedEntryId(entryId)}\n >\n <span className=\"fx-plugin-icon\">{sourceId.includes('view-plugin') || sourceId.includes('viewport') ? <Package size={15} /> : <Box size={15} />}</span>\n <span className=\"fx-plugin-copy\">\n <strong title={label}>{label}</strong>\n {entry.program && entry.program !== label ? <small title={entry.program}>{entry.program}</small> : null}\n {entry.assetGuid ? <small title={t('plugins.sourceAssetGuidHelp')}>{t('plugins.sourceAssetGuid')}: {entry.assetGuid}</small> : null}\n {selected && entry.operations.length > 0 ? <small className=\"fx-plugin-operations\">{entry.commands.join(' · ')}</small> : null}\n </span>\n <span className=\"fx-plugin-tags\">{entry.tags.map(tag => <Status key={tag} className=\"fx-plugin-type\" tone=\"info\" pill icon={null}>{t(`plugins.tag.${tag}`)}</Status>)}</span>\n <span className=\"fx-plugin-version\">{version}</span>\n <Status className=\"fx-plugin-state\" tone={stateTone(entry.state)} pill>\n {entry.state}\n </Status>\n </button>\n );\n })}</section>)}\n {!error && !loading && filtered.length === 0 ? (\n <EmptyState\n icon={<SearchX className=\"fx-plugins-empty-icon\" />}\n title={entries.length === 0 ? t('plugins.empty') : t('plugins.emptyTitle')}\n description={tags.includes('game') && !entries.some(entry => entry.tags.includes('game'))\n ? t('plugins.gameUnavailable') : entries.length === 0 ? t('plugins.unavailable') : t('plugins.emptyDescription')}\n />\n ) : null}\n {error ? (\n <EmptyState\n title={t('plugins.loadErrorTitle')}\n description={error}\n action={<IconButton label={t('plugins.retry')} icon={<RefreshCw className=\"fx-icon\" />} onClick={() => void refresh()} />}\n />\n ) : null}\n </div>\n </Surface>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { PluginsPanel } from './PluginsPanel';\nimport './plugins.css';\n\nexport async function mountPluginsPanel(props: ComponentProps<typeof PluginsPanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement }) {\n if (!props.mountElement) throw new TypeError('mountPluginsPanel requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <PluginsPanel\n hostAssembly={props.hostAssembly}\n connectionId={props.connectionId}\n client={props.client}\n workspaceClient={props.workspaceClient}\n />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n","import { createPluginI18n } from '@forgeax/view-workspace-core/plugin-i18n';\nimport { registerViewLocaleSink } from '@forgeax/view-workspace-core/locale-bridge';\nimport en from './locales/en.json' with { type: 'json' };\nimport zh from './locales/zh.json' with { type: 'json' };\n\n\nconst i18n = createPluginI18n({ en, zh });\n\nexport const t = i18n.t;\nexport const subscribeLocale = i18n.subscribe;\nexport const getLocale = i18n.getLocale;\nexport const setLocale = i18n.setLocale;\n\nregisterViewLocaleSink(i18n.setLocale);\n","import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.ts';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n","export const SCENE_TREE_UI_SCHEMA_VERSION = 'forgeax.view.scene-tree.ui/1';\n\nexport const SCENE_TREE_ACTIONS = Object.freeze({\n search: 'scene-tree.search',\n toggleColumn: 'scene-tree.column.toggle',\n expandAll: 'scene-tree.expand-all',\n collapseAll: 'scene-tree.collapse-all',\n toggleExpanded: 'scene-tree.expanded.toggle',\n toggleVisibility: 'scene-tree.visibility.toggle',\n select: 'scene-tree.select',\n selectRange: 'scene-tree.select-range',\n create: 'scene-tree.create',\n rename: 'scene-tree.rename',\n duplicate: 'scene-tree.duplicate',\n delete: 'scene-tree.delete',\n reparent: 'scene-tree.reparent',\n group: 'scene-tree.group',\n focus: 'scene-tree.focus',\n copyJson: 'scene-tree.copy-json',\n referenceInChat: 'scene-tree.reference-in-chat',\n showContextMenu: 'scene-tree.context-menu.show',\n});\n\nexport const SCENE_TREE_MODEL_SCHEMA = Object.freeze({\n $id: SCENE_TREE_UI_SCHEMA_VERSION,\n type: 'object',\n required: ['rows'],\n properties: {\n rows: {\n type: 'array',\n items: {\n type: 'object',\n required: ['id', 'name', 'typeLabel', 'depth', 'kind'],\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n typeLabel: { type: 'string' },\n depth: { type: 'integer', minimum: 0 },\n kind: { enum: ['folder', 'entity'] },\n hidden: { type: 'boolean' },\n hasChildren: { type: 'boolean' },\n expanded: { type: 'boolean' },\n },\n },\n },\n },\n});\n","/**\n * Scene-tree type filters mirror forgeax-editor hierarchy filter options:\n * option ids are component schema names from the Engine host, not UI enums.\n */\n\nconst CATEGORY_RULES = [\n { test: /Camera/, category: 'camera' },\n { test: /Light/, category: 'light' },\n { test: /Character|Controller/, category: 'character' },\n { test: /PlayerStart/, category: 'start' },\n { test: /Spawner/, category: 'spawner' },\n { test: /Mesh/, category: 'mesh' },\n];\n\nfunction categoryRank(category: string) {\n const index = CATEGORY_RULES.findIndex((rule) => rule.category === category);\n return index === -1 ? CATEGORY_RULES.length : index;\n}\n\n/** @param {string} id */\nexport function hierarchyTypeCategory(id: string) {\n if (id === 'group') return 'group';\n if (id === 'entity') return 'entity';\n for (const rule of CATEGORY_RULES) {\n if (rule.test.test(id)) return rule.category;\n }\n return 'generic';\n}\n\n/** @param {string} a @param {string} b */\nexport function compareComponentFilterIds(a: string, b: string) {\n const ra = categoryRank(hierarchyTypeCategory(a));\n const rb = categoryRank(hierarchyTypeCategory(b));\n return ra - rb || a.localeCompare(b);\n}\n\n/**\n * @param {readonly string[]} componentNames\n * @param {ReadonlySet<string>} activeFilters\n */\nexport function entityMatchesSceneTreeFilters(componentNames: readonly string[], activeFilters: ReadonlySet<string>) {\n if (activeFilters.size === 0) return true;\n return componentNames.some((name) => activeFilters.has(name));\n}\n\n/**\n * Build filter options from a component schema name list and optional counts.\n * View derives these options from the loaded entity component identities.\n *\n * @param {readonly string[]} schemaNames\n * @param {ReadonlyMap<string, number>} [counts]\n */\nexport function buildSceneTreeFilterOptions(schemaNames: readonly string[], counts: ReadonlyMap<string, number> = new Map()) {\n const seen = new Set();\n const options = [];\n for (const name of schemaNames) {\n const id = String(name);\n if (!id || seen.has(id)) continue;\n seen.add(id);\n const count = counts.get(id);\n options.push({\n id,\n ...(count === undefined ? {} : { count }),\n });\n }\n options.sort((left, right) => compareComponentFilterIds(left.id, right.id));\n return options;\n}\n","export type SceneEntityTypeKey = 'mesh' | 'directionalLight' | 'sky' | 'folder' | 'entity' | 'playerStart' | 'camera';\nexport type HierarchyRow = { id: string; name: string; typeKey?: SceneEntityTypeKey; componentNames?: string[]; depth: number; kind: 'folder' | 'entity'; virtual?: boolean; hidden?: boolean; hasChildren?: boolean; expanded?: boolean };\ntype EntityNode = { entityId?: string; entity?: number; name?: string; parentId?: string; componentNames?: string[] };\nimport { buildSceneTreeFilterOptions } from './hierarchy-filters.ts';\n\n/**\n * Normalize Engine `scene-tree.get` payloads into panel rows.\n * View does not author hierarchy; it only projects the latest Engine response.\n */\n\n/**\n * @param {unknown} result\n * @returns {Array<Record<string, unknown>>}\n */\nfunction projectEntityRows(result: unknown): HierarchyRow[] {\n if (!result || typeof result !== 'object') return [];\n const nodes = 'nodes' in result ? result.nodes : undefined;\n if (!Array.isArray(nodes)) return [];\n const rows: HierarchyRow[] = [];\n const seen = new Set();\n const flat = nodes.filter((node): node is EntityNode => node != null && typeof node === 'object');\n const byId = new Map(flat.map(node => [String(node.entityId), node]));\n const children = new Map<string, EntityNode[]>();\n for (const node of flat) {\n if (node.parentId && byId.has(node.parentId)) {\n const siblings = children.get(node.parentId) ?? [];\n siblings.push(node);\n children.set(node.parentId, siblings);\n }\n }\n const visit = (root: EntityNode) => {\n const stack = [{ node: root, depth: 0 }];\n while (stack.length) {\n const { node, depth } = stack.pop()!;\n const id = String(node.entityId ?? '');\n if (!id || seen.has(id)) continue;\n seen.add(id);\n const descendants = children.get(id) ?? [];\n const componentNames = Array.isArray(node.componentNames) ? node.componentNames.filter(name => typeof name === 'string') : [];\n const typeKey = componentNames.includes('Camera') ? 'camera'\n : componentNames.includes('DirectionalLight') ? 'directionalLight'\n : componentNames.includes('MeshFilter') ? 'mesh' : 'entity';\n rows.push({ id, componentNames, name: String(node.name ?? (node.entity === undefined ? id : `Entity ${node.entity}`)), typeKey,\n depth,\n kind: 'entity',\n ...(descendants.length ? { hasChildren: true, expanded: depth < 1 } : {}) });\n for (let i = descendants.length - 1; i >= 0; i--) stack.push({ node: descendants[i], depth: depth + 1 });\n }\n };\n for (const node of flat) if (!node.parentId || !byId.has(node.parentId)) visit(node);\n // Preserve discoverability for cyclic or partial parent projections.\n for (const node of flat) visit(node);\n return rows;\n}\n\n/** Counts describe the loaded rows; Engine owns only component identities. */\nexport function sceneTreeComponentFilters(rows: readonly HierarchyRow[]) {\n const counts = new Map();\n for (const row of rows) for (const name of row.componentNames ?? []) counts.set(name, (counts.get(name) ?? 0) + 1);\n return buildSceneTreeFilterOptions([...counts.keys()], counts);\n}\n\n/** This grouping row belongs only to View and is never sent as an entity reference. */\nexport const HIERARCHY_SCENE_FOLDER_ID = 'hierarchy:scene-root';\nexport function isSceneRootRow(row: HierarchyRow) { return row?.id === HIERARCHY_SCENE_FOLDER_ID; }\nexport function wrapWithVirtualSceneRoot(rows: HierarchyRow[]): HierarchyRow[] {\n if (rows.some(isSceneRootRow)) return rows.map(row => isSceneRootRow(row) ? { ...row, virtual: true } : row);\n return [{ id: HIERARCHY_SCENE_FOLDER_ID, name: 'Scene', typeKey: 'folder', depth: 0,\n kind: 'folder', virtual: true, hasChildren: rows.length > 0, expanded: true },\n ...rows.map(row => ({ ...row, depth: row.depth + 1 }))];\n}\nexport function normalizeSceneTreeRows(result: unknown) { return wrapWithVirtualSceneRoot(projectEntityRows(result)); }\nexport function normalizeSceneTreeResponse(result: unknown) {\n const rows = normalizeSceneTreeRows(result);\n return { rows, filterOptions: sceneTreeComponentFilters(rows) };\n}\n","import type { WorkspaceState } from '@forgeax/view-workspace-core/contract';\nimport {\n Box,\n Braces,\n Camera,\n ChevronDown,\n ChevronRight,\n CircleUserRound,\n Crosshair,\n Filter,\n Folder,\n Layers,\n Lightbulb,\n Maximize2,\n Minimize2,\n Settings,\n X,\n} from 'lucide-react';\nimport {\n Checkbox,\n EmptyState,\n useOverlayRoot,\n FloatingMenu,\n IconButton,\n PanelHeader,\n SearchField,\n Toolbar,\n useWorkspaceClientConnected,\n type AnchorRect,\n} from '@forgeax/view-components';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useTranslation } from '../i18n/useTranslation';\nimport { SCENE_TREE_ACTIONS } from '../schema.ts';\nimport type { ViewWorkspaceClient } from '@forgeax/view-workspace-core/client';\nimport { VIEW_WORKSPACE_TAB_ID, jsonUnchanged } from '@forgeax/view-workspace-core/contract';\nimport { createWorkspaceObservation, createWorkspaceStateReader } from '@forgeax/view-workspace-core/workspace-state';\nimport {\n entityMatchesSceneTreeFilters,\n hierarchyTypeCategory,\n} from '../hierarchy-filters.ts';\nimport {\n HIERARCHY_SCENE_FOLDER_ID,\n isSceneRootRow,\n sceneTreeComponentFilters,\n normalizeSceneTreeRows,\n type HierarchyRow,\n} from '../hierarchy.ts';\n\ntype SceneTreeFilterOption = {\n id: string;\n label?: string;\n count?: number;\n};\n\ntype SceneSelectionClient = Pick<\n ViewWorkspaceClient,\n 'subscribe' | 'getState' | 'selectSceneEntity' | 'clearSceneSelection' | 'getSceneTree' | 'call' | 'onDisconnect' | 'transport'\n>;\n\ntype WorkspacePreviewSnapshot = WorkspaceState;\n\ntype MenuItem =\n | { kind: 'title'; label: string; icon?: ReactNode }\n | { kind: 'separator' }\n | {\n kind: 'item';\n id: string;\n label: string;\n icon?: ReactNode;\n shortcut?: string;\n disabled?: boolean;\n danger?: boolean;\n forge?: boolean;\n children?: MenuItem[];\n action?: () => void;\n };\ntype MenuState = { x: number; y: number; items: MenuItem[] } | null;\n\nfunction rowComponentNames(row: HierarchyRow) {\n if (Array.isArray(row.componentNames) && row.componentNames.length > 0) {\n return row.componentNames;\n }\n return row.typeKey ? [String(row.typeKey)] : [];\n}\n\nfunction rowType(row: HierarchyRow) {\n if (isSceneRootRow(row)) return 'scene';\n if (row.kind === 'folder') return 'group';\n const primary = rowComponentNames(row).find((name) => name !== 'Transform') ?? row.typeKey;\n if (!primary) return 'mesh';\n return hierarchyTypeCategory(String(primary));\n}\n\nfunction filterOptionIcon(id: string) {\n switch (hierarchyTypeCategory(id)) {\n case 'camera': return <Camera size={14} />;\n case 'light': return <Lightbulb size={14} />;\n case 'character': return <CircleUserRound size={14} />;\n case 'group': return <Layers size={14} />;\n default: return <Box size={14} />;\n }\n}\n\nfunction RowIcon({ row }: { row: HierarchyRow }) {\n if (isSceneRootRow(row)) return <Folder size={15} />;\n if (row.kind === 'folder') return <Layers size={15} />;\n if (row.typeKey === 'directionalLight') return <Lightbulb size={15} />;\n if (row.typeKey === 'camera') return <Camera size={15} />;\n if (row.name === 'Player') return <CircleUserRound size={15} />;\n return <Box size={15} />;\n}\n\nfunction HierarchyContextMenu({ state, close }: { state: Exclude<MenuState, null>; close: () => void }) {\n const overlayRoot = useOverlayRoot();\n const [submenu, setSubmenu] = useState<string | null>(null);\n useEffect(() => {\n const dismiss = () => close();\n const escape = (event: KeyboardEvent) => event.key === 'Escape' && close();\n window.addEventListener('pointerdown', dismiss);\n window.addEventListener('keydown', escape);\n return () => {\n window.removeEventListener('pointerdown', dismiss);\n window.removeEventListener('keydown', escape);\n };\n }, [close]);\n const renderItems = (items: MenuItem[], nested = false) => (\n <div className={nested ? 'hier-context-submenu' : 'hier-context-menu'}>\n {items.map((item, index) => {\n if (item.kind === 'separator') return <i className=\"hier-context-separator\" key={`sep-${index}`} />;\n if (item.kind === 'title') return <div className=\"hier-context-title\" key={`title-${index}`}>{item.icon}{item.label}</div>;\n return (\n <div className=\"hier-context-item-wrap\" key={item.id} onPointerEnter={() => item.children && setSubmenu(item.id)}>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-operation={item.id}\n data-danger={item.danger || undefined}\n data-forge={item.forge || undefined}\n disabled={item.disabled}\n onClick={() => {\n if (item.children) {\n setSubmenu(submenu === item.id ? null : item.id);\n return;\n }\n item.action?.();\n close();\n }}\n >\n <span className=\"hier-context-icon\">{item.icon}</span>\n <span>{item.label}</span>\n {item.shortcut ? <kbd>{item.shortcut}</kbd> : null}\n {item.children ? <ChevronRight size={12} /> : null}\n </button>\n {item.children && submenu === item.id ? renderItems(item.children, true) : null}\n </div>\n );\n })}\n </div>\n );\n return createPortal(\n <div\n className=\"hier-context-position\"\n data-action={SCENE_TREE_ACTIONS.showContextMenu}\n role=\"menu\"\n style={{\n left: Math.max(8, Math.min(state.x, window.innerWidth - 260)),\n top: Math.max(8, Math.min(state.y, window.innerHeight - 420)),\n }}\n onPointerDown={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n {renderItems(state.items)}\n </div>,\n overlayRoot ?? document.body,\n );\n}\n\nfunction highlighted(value: string, query: string) {\n const index = value.toLowerCase().indexOf(query.toLowerCase());\n if (!query || index < 0) return value;\n return <>{value.slice(0, index)}<mark className=\"hl\">{value.slice(index, index + query.length)}</mark>{value.slice(index + query.length)}</>;\n}\n\nexport function SceneTreePanel(props: { client?: SceneSelectionClient }) {\n if (!props.client) {\n return (\n <EmptyState\n title=\"Scene hierarchy unavailable\"\n description=\"Connect to the View workspace API to load the Engine scene tree.\"\n />\n );\n }\n return <SceneTreeLivePanel client={props.client} />;\n}\n\nfunction useEngineSceneRows(\n client: SceneSelectionClient,\n workspace: WorkspacePreviewSnapshot | null,\n connected: boolean,\n reader: ReturnType<typeof createWorkspaceStateReader>,\n) {\n const [projection, setProjection] = useState<{ key: string; rows: HierarchyRow[]; failed: boolean; hasMore: boolean } | null>(null);\n const [pageCount, setPageCount] = useState(1);\n const target = workspace?.preview?.target;\n const projectId = workspace?.project?.id;\n const key = `${target?.targetId}:${target?.generation}`;\n const current = projection?.key === key ? projection : null;\n const rows = current?.rows ?? [];\n\n useEffect(() => { setPageCount(1); }, [target?.targetId, target?.generation]);\n\n useEffect(() => {\n if (!connected || !target?.targetId || !projectId) {\n if (!connected) return;\n setProjection(null);\n return;\n }\n const observation = createWorkspaceObservation(reader, (current: WorkspacePreviewSnapshot | null) =>\n current?.project?.id === projectId &&\n current?.preview?.target?.targetId === target.targetId &&\n current?.preview?.target?.generation === target.generation);\n const { signal } = observation;\n let timer: ReturnType<typeof setTimeout>;\n const refresh = async () => {\n if (signal.aborted) return;\n let retryDelay = 500;\n try {\n const binding = {\n tabId: VIEW_WORKSPACE_TAB_ID, projectId, targetId: target.targetId,\n targetGeneration: target.generation, signal,\n };\n const result = await client.getSceneTree({ ...binding, limit: 1000 });\n if (signal.aborted) return;\n const nodes = [...(result.nodes ?? [])];\n let nextOffset = result.nextOffset;\n for (let page = 1; page < pageCount && nextOffset !== null && nextOffset !== undefined; page++) {\n const next = await client.getSceneTree({ ...binding, offset: nextOffset, revision: String(result.revision), limit: 1000 });\n if (signal.aborted) return;\n nodes.push(...next.nodes);\n nextOffset = next.nextOffset;\n }\n if (signal.aborted) return;\n setProjection((current) => {\n const next = { key, rows: normalizeSceneTreeRows({ ...result, nodes }), hasMore: nextOffset !== null && nextOffset !== undefined, failed: false };\n if (\n current?.key === next.key &&\n current.failed === next.failed &&\n current.hasMore === next.hasMore &&\n jsonUnchanged(current.rows, next.rows)\n ) return current;\n return next;\n });\n } catch {\n if (signal.aborted) return;\n setProjection((current) => {\n if (current?.key === key && current.failed && !current.hasMore && current.rows.length === 0) return current;\n return { key, rows: [], hasMore: false, failed: true };\n });\n retryDelay = 1500;\n }\n if (!signal.aborted) {\n timer = setTimeout(refresh, retryDelay);\n }\n };\n void refresh();\n return () => { observation.dispose(); clearTimeout(timer); };\n // Include the published snapshot: React may batch A -> B -> A into one\n // render after the observation for A has already been revoked.\n }, [client, connected, projectId, target?.targetId, target?.generation, pageCount, key, reader, workspace]);\n\n return { rows, filterOptions: sceneTreeComponentFilters(rows), failed: current?.failed ?? false, hasMore: current?.hasMore ?? false, loadMore: () => setPageCount(value => value + 1) };\n}\n\nfunction SceneTreeLivePanel({ client }: { client: SceneSelectionClient }) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot() as WorkspacePreviewSnapshot | null,\n () => reader.getSnapshot() as WorkspacePreviewSnapshot | null,\n );\n const connected = useWorkspaceClientConnected(client);\n const { rows, filterOptions, failed, hasMore, loadMore } = useEngineSceneRows(client, workspace, connected, reader);\n\n if (!workspace?.preview?.target?.targetId) {\n return (\n <EmptyState\n title={t('sceneTree.unavailable')}\n description=\"Open a scene preview from the Content Browser to load the Engine hierarchy.\"\n />\n );\n }\n if (failed) {\n return (\n <EmptyState\n title={t('sceneTree.unavailable')}\n description={t('sceneTree.loadErrorDescription')}\n />\n );\n }\n if (rows.length === 0) return <EmptyState title=\"Loading hierarchy\" description=\"Reading the selected Engine target.\" />;\n return <>\n {hasMore && <button type=\"button\" onClick={loadMore}>Showing {Math.max(0, rows.length - 1)} entities. Load more</button>}\n <SceneTreeRowsPanel key={`${workspace.preview?.target?.targetId}:${workspace.preview?.target?.generation}`}\n client={client} rows={rows} filterOptions={filterOptions} />\n </>;\n}\n\nfunction SceneTreeRowsPanel({\n client,\n rows,\n filterOptions,\n}: {\n client: SceneSelectionClient;\n rows: HierarchyRow[];\n filterOptions: SceneTreeFilterOption[];\n}) {\n const { t } = useTranslation();\n const reader = useMemo(() => createWorkspaceStateReader(client), [client]);\n const workspace = useSyncExternalStore(\n reader.subscribe,\n () => reader.getSnapshot() as (WorkspacePreviewSnapshot & { sceneSelection?: { primary?: { entityId: string } | null } | null }) | null,\n () => reader.getSnapshot() as (WorkspacePreviewSnapshot & { sceneSelection?: { primary?: { entityId: string } | null } | null }) | null,\n );\n const externalEntityId = workspace?.sceneSelection?.primary?.entityId ?? null;\n const sceneIdentity = workspace?.preview?.asset?.guid ?? workspace?.preview?.target?.targetId ?? null;\n const rowLabel = useCallback(\n (row: HierarchyRow) => (isSceneRootRow(row) ? t('sceneTree.sceneRoot') : row.name),\n [t],\n );\n const typeLabelFor = useCallback(\n (row: HierarchyRow) => {\n if (row.kind === 'folder') return t('sceneTree.types.folder');\n if (row.typeKey) {\n const key = `sceneTree.types.${row.typeKey}`;\n const label = t(key);\n return label === key ? t('sceneTree.types.entity') : label;\n }\n return '';\n },\n [t],\n );\n const componentTypeLabel = useCallback((id: string) => {\n const key = `sceneTree.types.${id}`;\n const label = t(key);\n return label === key ? id : label;\n }, [t]);\n const resolvedFilterOptions = useMemo(\n () => filterOptions.map((option) => ({\n ...option,\n label: option.label ?? componentTypeLabel(option.id),\n })),\n [componentTypeLabel, filterOptions],\n );\n const [query, setQuery] = useState('');\n const [filters, setFilters] = useState(new Set<string>());\n const [expanded, setExpanded] = useState(() => new Set(\n rows.filter((row) => row.expanded || isSceneRootRow(row)).map((row) => row.id),\n ));\n const [columns, setColumns] = useState({ type: true, id: false });\n const [headerMenu, setHeaderMenu] = useState<'filter' | 'settings' | null>(null);\n const [headerMenuAnchor, setHeaderMenuAnchor] = useState<AnchorRect | null>(null);\n const filterButtonRef = useRef<HTMLButtonElement>(null);\n const settingsButtonRef = useRef<HTMLButtonElement>(null);\n const [contextMenu, setContextMenu] = useState<MenuState>(null);\n const [selected, setSelected] = useState(new Set<string>());\n const [anchor, setAnchor] = useState<string | null>(null);\n\n useEffect(() => {\n setExpanded((current) => {\n if (current.has(HIERARCHY_SCENE_FOLDER_ID)) return current;\n const next = new Set(current);\n next.add(HIERARCHY_SCENE_FOLDER_ID);\n return next;\n });\n }, [sceneIdentity]);\n\n useEffect(() => {\n if (externalEntityId && rows.some((row) => row.id === externalEntityId)) {\n setSelected(new Set([externalEntityId]));\n setAnchor(externalEntityId);\n } else if (!externalEntityId) {\n setSelected(new Set());\n setAnchor(null);\n }\n }, [externalEntityId, rows]);\n\n useEffect(() => {\n const allowed = new Set(resolvedFilterOptions.map((option) => option.id));\n setFilters((current) => {\n if (current.size === 0) return current;\n const next = new Set([...current].filter((id) => allowed.has(id)));\n return next.size === current.size ? current : next;\n });\n }, [resolvedFilterOptions]);\n\n const publishSceneSelection = (row: HierarchyRow) => {\n if (row.kind !== 'entity') return;\n const target = workspace?.preview?.target;\n if (!target?.targetId) return;\n void client.selectSceneEntity(row.id, {\n label: row.name,\n tabId: VIEW_WORKSPACE_TAB_ID,\n targetId: target.targetId,\n targetGeneration: target.generation,\n }).catch(() => {});\n };\n\n const clearSceneSelection = () => {\n setSelected(new Set());\n setAnchor(null);\n const target = workspace?.preview?.target;\n if (!target?.targetId) return;\n void client.clearSceneSelection({\n tabId: VIEW_WORKSPACE_TAB_ID,\n targetId: target.targetId,\n targetGeneration: target.generation,\n }).catch(() => {});\n };\n\n const visibleRows = useMemo(() => {\n const text = query.trim().toLowerCase();\n const filtering = text.length > 0 || filters.size > 0;\n if (filtering) {\n return rows.filter((row) => {\n const names = rowComponentNames(row);\n const typeText = typeLabelFor(row).toLowerCase();\n const componentText = names.join(' ').toLowerCase();\n const textMatch = !text\n || rowLabel(row).toLowerCase().includes(text)\n || typeText.includes(text)\n || componentText.includes(text);\n const typeMatch = entityMatchesSceneTreeFilters(names, filters);\n return !isSceneRootRow(row) && textMatch && typeMatch;\n }).map((row) => ({ ...row, depth: 0 }));\n }\n const collapsedDepths: number[] = [];\n return rows.filter((row) => {\n while (collapsedDepths.length && collapsedDepths.at(-1)! >= row.depth) collapsedDepths.pop();\n const hiddenByParent = collapsedDepths.length > 0;\n if (row.hasChildren && !expanded.has(row.id)) collapsedDepths.push(row.depth);\n return !hiddenByParent;\n });\n }, [expanded, filters, query, rowLabel, rows, typeLabelFor]);\n\n const selectRow = (row: HierarchyRow, event: MouseEvent) => {\n if (row.kind === 'folder') {\n setExpanded((current) => {\n const next = new Set(current);\n if (next.has(row.id)) next.delete(row.id); else next.add(row.id);\n return next;\n });\n return;\n }\n const ordered = visibleRows.filter((entry) => entry.kind === 'entity').map((entry) => entry.id);\n let next: Set<string>;\n if (event.shiftKey && anchor) {\n const from = ordered.indexOf(anchor);\n const to = ordered.indexOf(row.id);\n next = from < 0 || to < 0\n ? new Set([row.id])\n : new Set(ordered.slice(Math.min(from, to), Math.max(from, to) + 1));\n } else if (event.ctrlKey || event.metaKey) {\n next = new Set(selected);\n if (next.has(row.id)) next.delete(row.id); else next.add(row.id);\n } else {\n next = new Set([row.id]);\n }\n if (next.size === 0) {\n clearSceneSelection();\n return;\n }\n const primary = next.has(row.id)\n ? row\n : rows.find((entry) => entry.kind === 'entity' && next.has(entry.id));\n if (!primary) {\n clearSceneSelection();\n return;\n }\n setSelected(next);\n setAnchor(primary.id);\n publishSceneSelection(primary);\n };\n const showContext = (event: MouseEvent, items: MenuItem[]) => {\n event.preventDefault();\n event.stopPropagation();\n setHeaderMenu(null);\n setContextMenu({ x: event.clientX, y: event.clientY, items });\n };\n const blankMenu = useCallback((): MenuItem[] => [\n { kind: 'title', label: t('sceneTree.readOnlyTitle') },\n { kind: 'item', id: 'clear-filter', label: t('sceneTree.menu.clearSearchAndFilters'), icon: <X size={14} />, disabled: !query && filters.size === 0, action: () => { setQuery(''); setFilters(new Set()); } },\n { kind: 'item', id: 'focus', label: t('sceneTree.menu.focusSelection'), icon: <Crosshair size={14} />, shortcut: 'F', disabled: selected.size === 0, action: () => {} },\n ], [filters.size, query, selected.size, t]);\n const rowMenu = useCallback((row: HierarchyRow): MenuItem[] => [\n { kind: 'title', label: rowLabel(row), icon: <RowIcon row={row} /> },\n { kind: 'item', id: 'copy-json', label: t('sceneTree.menu.copyJson'), icon: <Braces size={14} />, action: () => void navigator.clipboard?.writeText(JSON.stringify(row, null, 2)) },\n { kind: 'item', id: 'focus', label: t('sceneTree.menu.focusInViewport'), icon: <Crosshair size={14} />, shortcut: 'F', disabled: !workspace?.preview || isSceneRootRow(row), action: () => { const target = workspace?.preview?.target; if (target) void client?.call('entity.focus', { entityId: row.id, targetId: target.targetId, targetGeneration: target.generation }); } },\n ], [rowLabel, t, client, workspace?.preview]);\n useEffect(() => {\n if (!headerMenu) setHeaderMenuAnchor(null);\n }, [headerMenu]);\n\n const openHeaderMenu = (kind: 'filter' | 'settings') => {\n if (headerMenu === kind) {\n setHeaderMenu(null);\n return;\n }\n const ref = kind === 'filter' ? filterButtonRef : settingsButtonRef;\n const rect = ref.current?.getBoundingClientRect();\n if (rect) setHeaderMenuAnchor(rect);\n setHeaderMenu(kind);\n };\n\n const toggleTypeFilter = (filterId: string) => {\n setFilters((current) => {\n const next = new Set(current);\n if (next.has(filterId)) next.delete(filterId);\n else next.add(filterId);\n return next;\n });\n };\n\n return (\n <div\n className=\"panel outliner-panel\"\n data-testid=\"panel-hierarchy\"\n data-view-readonly=\"true\"\n role=\"tree\"\n tabIndex={0}\n onKeyDown={(event) => {\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a') {\n event.preventDefault();\n setSelected(new Set(rows.filter((row) => row.kind === 'entity').map((row) => row.id)));\n }\n }}\n >\n <PanelHeader\n className=\"fx-hier-toolbar\"\n data-testid=\"hier-toolbar\"\n start={(\n <Toolbar>\n <IconButton\n ref={filterButtonRef}\n className={filters.size ? 'active' : undefined}\n label={t('sceneTree.filterByType')}\n icon={<Filter size={14} />}\n size=\"compact\"\n onClick={() => openHeaderMenu('filter')}\n />\n </Toolbar>\n )}\n center={(\n <SearchField\n className=\"fx-hier-search\"\n data-testid=\"hier-search\"\n data-action={SCENE_TREE_ACTIONS.search}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n onClear={() => setQuery('')}\n placeholder={t('sceneTree.searchPlaceholder')}\n label={t('sceneTree.searchLabel')}\n />\n )}\n end={(\n <Toolbar>\n <IconButton\n ref={settingsButtonRef}\n label={t('sceneTree.displaySettings')}\n icon={<Settings size={14} />}\n size=\"compact\"\n onClick={() => openHeaderMenu('settings')}\n />\n </Toolbar>\n )}\n />\n <div className=\"ol-colhead\" data-testid=\"hier-colhead\">\n <span className=\"ch-caret\" aria-hidden />\n <span className=\"ch-name sortable\">{t('sceneTree.columnName')}</span>\n {columns.type ? <span className=\"ch-type sortable col-type\">{t('sceneTree.columnType')}</span> : null}\n {columns.id ? <span className=\"ch-id sortable col-id\">{t('sceneTree.columnId')}</span> : null}\n </div>\n <div\n className=\"ol-body\"\n data-testid=\"hier-root-dropzone\"\n onClick={(event) => {\n if (event.target === event.currentTarget) clearSceneSelection();\n }}\n onContextMenu={(event) => {\n if (!(event.target as HTMLElement).closest('.tn')) showContext(event, blankMenu());\n }}\n >\n {visibleRows.length === 0 ? (\n <EmptyState\n className=\"hier-no-match\"\n title={t('sceneTree.noMatchTitle')}\n description={t('sceneTree.noMatchDescription')}\n />\n ) : visibleRows.map((row) => {\n const isSelected = selected.has(row.id);\n const isHidden = row.hidden === true;\n const isExpanded = expanded.has(row.id);\n return (\n <div\n key={row.id}\n className={`tn k-${rowType(row)}${isSelected ? ' sel' : ''}${isHidden ? ' dim' : ''}`}\n data-testid={isSceneRootRow(row) ? 'hier-row-scene-folder' : `hier-row-${row.id}`}\n data-action={SCENE_TREE_ACTIONS.select}\n style={{ paddingLeft: `calc(var(--fx-ref-space-8) + ${row.depth} * var(--hier-indent-step, calc(var(--fx-ref-space-12) + var(--fx-ref-space-2))))` }}\n role=\"treeitem\"\n aria-selected={isSelected}\n tabIndex={isSelected ? 0 : -1}\n onClick={(event) => selectRow(row, event)}\n onContextMenu={(event) => {\n if (!selected.has(row.id)) {\n setSelected(new Set([row.id]));\n if (row.kind === 'entity') publishSceneSelection(row);\n }\n showContext(event, isSceneRootRow(row) ? blankMenu() : rowMenu(row));\n }}\n >\n <button\n type=\"button\"\n className=\"caret\"\n data-action={SCENE_TREE_ACTIONS.toggleExpanded}\n disabled={!row.hasChildren}\n tabIndex={-1}\n onClick={(event) => {\n event.stopPropagation();\n if (!row.hasChildren) return;\n setExpanded((current) => {\n const next = new Set(current);\n if (next.has(row.id)) next.delete(row.id);\n else next.add(row.id);\n return next;\n });\n }}\n >\n {row.hasChildren ? (isExpanded ? <ChevronDown size={12} /> : <ChevronRight size={12} />) : null}\n </button>\n <span className=\"ico\"><RowIcon row={row} /></span>\n <span className=\"name-cell\">\n <span className=\"nm\">{highlighted(rowLabel(row), query)}</span>\n </span>\n {columns.type ? <span className=\"cell type col-type\"><span className=\"kind\">{typeLabelFor(row)}</span></span> : null}\n {columns.id ? <span className=\"cell id col-id\">{isSceneRootRow(row) ? '' : `#${row.id}`}</span> : null}\n </div>\n );\n })}\n </div>\n <FloatingMenu\n open={Boolean(headerMenuAnchor && headerMenu === 'filter')}\n anchorRect={headerMenuAnchor}\n onClose={() => setHeaderMenu(null)}\n ignorePointerWithin={[filterButtonRef]}\n className=\"hier-filter-menu\"\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"hier-filter-menu-body\">\n <div className=\"hier-filter-section\">{t('sceneTree.filterByType')}</div>\n {resolvedFilterOptions.map((filter) => {\n const active = filters.has(filter.id);\n return (\n <button\n type=\"button\"\n className=\"hier-filter-option\"\n data-active={active ? 'true' : 'false'}\n key={filter.id}\n onClick={() => toggleTypeFilter(filter.id)}\n >\n <Checkbox\n checked={active}\n onChange={() => toggleTypeFilter(filter.id)}\n tabIndex={-1}\n hideLabel\n label={filter.label}\n className=\"hier-filter-check\"\n />\n <span className=\"hier-filter-option-icon\" aria-hidden>{filterOptionIcon(filter.id)}</span>\n {filter.label}\n </button>\n );\n })}\n <div className=\"hier-filter-separator\" />\n <button\n type=\"button\"\n className=\"hier-filter-option hier-filter-clear\"\n disabled={filters.size === 0}\n onClick={() => setFilters(new Set())}\n >\n {t('sceneTree.clearFilters')}\n </button>\n </div>\n </FloatingMenu>\n <FloatingMenu\n open={Boolean(headerMenuAnchor && headerMenu === 'settings')}\n anchorRect={headerMenuAnchor}\n onClose={() => setHeaderMenu(null)}\n ignorePointerWithin={[settingsButtonRef]}\n className=\"hier-filter-menu\"\n containerProps={{ onPointerDown: (event) => event.stopPropagation() }}\n >\n <div className=\"hier-filter-menu-body hierarchy-header-menu-settings\">\n <div className=\"hier-filter-section\">{t('sceneTree.columns')}</div>\n {(['type', 'id'] as const).map((column) => {\n const label = column === 'type'\n ? t('sceneTree.columnType')\n : t('sceneTree.columnId');\n const checked = columns[column];\n const toggle = () => setColumns((current) => ({ ...current, [column]: !current[column] }));\n return (\n <button\n type=\"button\"\n className=\"hier-filter-option\"\n data-action={SCENE_TREE_ACTIONS.toggleColumn}\n data-active={checked ? 'true' : 'false'}\n key={column}\n onClick={toggle}\n >\n <Checkbox\n checked={checked}\n onChange={toggle}\n tabIndex={-1}\n hideLabel\n label={label}\n className=\"hier-filter-check\"\n />\n {label}\n </button>\n );\n })}\n <div className=\"hier-filter-separator\" />\n <button\n type=\"button\"\n className=\"hier-filter-option hier-filter-action\"\n data-action={SCENE_TREE_ACTIONS.expandAll}\n onClick={() => setExpanded(new Set(rows.filter((row) => row.hasChildren).map((row) => row.id)))}\n >\n <Maximize2 size={14} className=\"hier-filter-option-icon\" />\n {t('sceneTree.expandAll')}\n </button>\n <button\n type=\"button\"\n className=\"hier-filter-option hier-filter-action\"\n data-action={SCENE_TREE_ACTIONS.collapseAll}\n onClick={() => setExpanded(new Set(rows.filter(isSceneRootRow).map((row) => row.id)))}\n >\n <Minimize2 size={14} className=\"hier-filter-option-icon\" />\n {t('sceneTree.collapseAll')}\n </button>\n </div>\n </FloatingMenu>\n {contextMenu ? <HierarchyContextMenu state={contextMenu} close={() => setContextMenu(null)} /> : null}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\nimport '@forgeax/view-components/styles.css';\nimport { OverlayRootProvider } from '@forgeax/view-components';\nimport '../i18n/index.ts';\nimport { createRoot } from 'react-dom/client';\nimport { SceneTreePanel } from './SceneTreePanel';\nimport './scene-tree.css';\n\nexport async function mountSceneTreePanel(props: ComponentProps<typeof SceneTreePanel> & { mountElement: HTMLElement; overlayRoot?: HTMLElement }) {\n if (!props.mountElement) throw new TypeError('mountSceneTreePanel requires mountElement');\n const root = createRoot(props.mountElement);\n root.render(\n <OverlayRootProvider root={props.overlayRoot ?? props.mountElement}>\n <SceneTreePanel client={props.client} />\n </OverlayRootProvider>,\n );\n return async () => root.unmount();\n}\n","import { lazy, Suspense } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport type { Root } from 'react-dom/client';\nimport './viewer.css';\n// Reuse the real existing linked work/resource viewer, including replay and its no-GPU errors.\nconst TapeViewer = lazy(async () => ({ default: (await import('../../../apps/rhi-debug-viewer/src/App')).App }));\nexport function mountRhiDebugPanel({ mountElement }: { mountElement: HTMLElement }) {\n mountElement.classList.add('fx-rhi-tool');\n const root: Root = createRoot(mountElement);\n root.render(<Suspense fallback={<p role=\"status\">Loading RHI Debug…</p>}><TapeViewer /></Suspense>);\n return () => root.unmount();\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport type { ProfileModel } from '@forgeax/engine-profiler';\nimport './style.css';\ntype Result = { ok: true; value: ProfileModel } | { ok: false; error: { code: string; hint: string } };\nfunction ProfilePanel({ readCapture }: { readCapture: (bytes: string) => Result }) {\n const [model, setModel] = useState<ProfileModel | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [name, setName] = useState('');\n const generation = useRef(0);\n const input = useRef<HTMLInputElement>(null);\n useEffect(() => () => { generation.current++; }, []);\n async function load(file?: File) {\n if (!file) return;\n const current = ++generation.current;\n try {\n const result = readCapture(await file.text());\n if (current !== generation.current) return;\n if (!result.ok) throw new Error(`${result.error.code}: ${result.error.hint}`);\n setModel(result.value); setName(file.name); setError(null);\n } catch (error) { if (current === generation.current) { setModel(null); setError(String(error)); } }\n }\n const max = model?.frames.reduce((max, frame) => Math.max(max, frame.durationMicros), 1) ?? 1;\n return <div className=\"fx-profile\" data-profile-status={model ? 'loaded' : error ? 'error' : 'empty'}>\n <header><div><h1>CPU Profiler</h1><p>Inspect a ProfileCapture without opening a game project.</p></div>\n <button onClick={() => input.current?.click()}>Open capture</button><input ref={input} type=\"file\" accept=\".json\" hidden onChange={event => void load(event.target.files?.[0])} /></header>\n {error && <p role=\"alert\">{error}</p>}\n {!model && !error && <p className=\"fx-profile-empty\">Select a real Engine capture. No runtime or GPU is started by this page.</p>}\n {model && <><h2>{name}</h2><div className=\"fx-profile-summary\"><span>{model.summary.frameCount} frames</span><span>{model.summary.recordCount} records</span><span>P95 {model.summary.p95DurationMicros ?? '—'} µs</span><span>{model.completeness.status}</span></div>\n <svg viewBox=\"0 0 1000 180\" role=\"img\" aria-label=\"Frame CPU durations\" data-profile-frames={model.frames.length}>\n {model.frames.map((frame, i) => <rect key={frame.frameId} x={i * 1000 / model.frames.length} y={170 - frame.durationMicros / max * 160} width={Math.max(1, 1000 / model.frames.length - 1)} height={frame.durationMicros / max * 160} fill=\"currentColor\"><title>Frame {frame.frameId}: {frame.durationMicros} µs</title></rect>)}\n </svg><table><thead><tr><th>Source / phase</th><th>Samples</th><th>Skipped</th><th>P95 (µs)</th></tr></thead><tbody>{model.phases.map((phase,i) => <tr key={i}><td>{phase.source} / {phase.phase}</td><td>{phase.count}</td><td>{phase.skipCount}</td><td>{phase.p95DurationMicros ?? '—'}</td></tr>)}</tbody></table></>}\n </div>;\n}\nexport function mountProfilerPanel({ mountElement, readCapture }: { mountElement: HTMLElement; readCapture: (bytes: string) => Result }) {\n const root = createRoot(mountElement); root.render(<ProfilePanel readCapture={readCapture} />); return () => root.unmount();\n}\n"],"file":"panels-ui-CfUtl68h.js"}