reeval 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +64 -39
  2. package/THIRD_PARTY_NOTICES.md +75 -106
  3. package/bin/mcp-timer.cjs +224 -0
  4. package/dist/{adapter-DWlpOtRn.js → adapter-DigeVFWC.js} +3 -3
  5. package/dist/{adapter-DWlpOtRn.js.map → adapter-DigeVFWC.js.map} +1 -1
  6. package/dist/{agent-CaS_2Sce.js → agent-CatUEo5h.js} +21 -6
  7. package/dist/{agent-CaS_2Sce.js.map → agent-CatUEo5h.js.map} +1 -1
  8. package/dist/{assemble-B9Alds-z.js → assemble-CF063ms6.js} +19 -17
  9. package/dist/assemble-CF063ms6.js.map +1 -0
  10. package/dist/assemble-CJoD_Rzr.js +1 -0
  11. package/dist/bridge/index.mjs +15 -7
  12. package/dist/{capture-CNb9SuU5.js → capture-BiD7lVaM.js} +26 -18
  13. package/dist/{capture-CNb9SuU5.js.map → capture-BiD7lVaM.js.map} +1 -1
  14. package/dist/capture-Dp3q7K7Y.js +1 -0
  15. package/dist/{cli-D303Vj5N.js → cli-B5zQCR2r.js} +266 -547
  16. package/dist/cli-B5zQCR2r.js.map +1 -0
  17. package/dist/{cli-spec-BPZbQG2p.js → cli-spec-BXIBUlaK.js} +46 -18
  18. package/dist/cli-spec-BXIBUlaK.js.map +1 -0
  19. package/dist/cli.js +2 -2
  20. package/dist/{command-BT9a37ZR.js → command-BMHXHqMT.js} +17 -14
  21. package/dist/command-BMHXHqMT.js.map +1 -0
  22. package/dist/command-C94CQNh8.js +91 -0
  23. package/dist/command-C94CQNh8.js.map +1 -0
  24. package/dist/command-CVtgyqlM.js +335 -0
  25. package/dist/command-CVtgyqlM.js.map +1 -0
  26. package/dist/{command-BLfT7vnQ.js → command-CaZgCTIw.js} +13 -17
  27. package/dist/command-CaZgCTIw.js.map +1 -0
  28. package/dist/{command-CMJtHKRa.js → command-DTgBZR0k.js} +6 -6
  29. package/dist/{command-CMJtHKRa.js.map → command-DTgBZR0k.js.map} +1 -1
  30. package/dist/{commands-1p-bIWhN.js → commands-BXzIDB3X.js} +1 -1
  31. package/dist/commands-CjpGBUWr.js +666 -0
  32. package/dist/commands-CjpGBUWr.js.map +1 -0
  33. package/dist/{config-DEgnUiU-.js → config-Dv5MG7Rp.js} +31 -34
  34. package/dist/config-Dv5MG7Rp.js.map +1 -0
  35. package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
  36. package/dist/context-Dgn48BqT.js.map +1 -0
  37. package/dist/contrasts-CcoMLC_y.js +101 -0
  38. package/dist/contrasts-CcoMLC_y.js.map +1 -0
  39. package/dist/db-BeqRiWLl.js +602 -0
  40. package/dist/db-BeqRiWLl.js.map +1 -0
  41. package/dist/db-CJDRVQal.js +2 -0
  42. package/dist/{dist-B8hJImYt.js → dist-CMjp3qqF.js} +81 -14
  43. package/dist/dist-CMjp3qqF.js.map +1 -0
  44. package/dist/{docker-sZrNrr82.js → docker-BbTlMmYi.js} +2 -2
  45. package/dist/{docker-sZrNrr82.js.map → docker-BbTlMmYi.js.map} +1 -1
  46. package/dist/{docker-7b_2SaH7.js → docker-CCXdbREk.js} +20 -4
  47. package/dist/{docker-7b_2SaH7.js.map → docker-CCXdbREk.js.map} +1 -1
  48. package/dist/{docker-yauK-9X8.js → docker-DC69dKxB.js} +1 -1
  49. package/dist/{doctor-BYNok4UO.js → doctor-CqttrZcs.js} +56 -22
  50. package/dist/doctor-CqttrZcs.js.map +1 -0
  51. package/dist/{egress-C4PZTSSe.js → egress-BfK_O9ce.js} +435 -31
  52. package/dist/egress-BfK_O9ce.js.map +1 -0
  53. package/dist/{environment-DNjRk0nU.js → environment-BBz1Yes9.js} +225 -12
  54. package/dist/environment-BBz1Yes9.js.map +1 -0
  55. package/dist/{evaluate-D4zeRGBF.js → evaluate-CXQ1o-pd.js} +539 -562
  56. package/dist/evaluate-CXQ1o-pd.js.map +1 -0
  57. package/dist/{evaluate-C1UVL21l.d.ts → evaluate-yjZKUexW.d.ts} +2 -2
  58. package/dist/facts-DtENlf9s.js +898 -0
  59. package/dist/facts-DtENlf9s.js.map +1 -0
  60. package/dist/{files-BXUdY8tr.js → files-B-eUpCZ1.js} +30 -7
  61. package/dist/files-B-eUpCZ1.js.map +1 -0
  62. package/dist/files-BsQbYz2i.js +65 -0
  63. package/dist/files-BsQbYz2i.js.map +1 -0
  64. package/dist/{files-DQmHE7pb.js → files-COHQLEHE.js} +6 -17
  65. package/dist/files-COHQLEHE.js.map +1 -0
  66. package/dist/files-DqCBW7i8.js +1 -0
  67. package/dist/files-Ha-jsQXf.js +1 -0
  68. package/dist/generate-Cs2TMH_k.js +1647 -0
  69. package/dist/generate-Cs2TMH_k.js.map +1 -0
  70. package/dist/{git-DfG-YJ1u.js → git-DhykwgKF.js} +2 -2
  71. package/dist/{git-DfG-YJ1u.js.map → git-DhykwgKF.js.map} +1 -1
  72. package/dist/{harness-B8QC9u0O.js → harness-BAjw1fcr.js} +3 -3
  73. package/dist/{harness-B8QC9u0O.js.map → harness-BAjw1fcr.js.map} +1 -1
  74. package/dist/harness.d.ts +1 -1
  75. package/dist/harness.js +1 -1
  76. package/dist/{header-hK-Z_Po9.js → header-kSmWatcO.js} +10 -3
  77. package/dist/{header-hK-Z_Po9.js.map → header-kSmWatcO.js.map} +1 -1
  78. package/dist/{images-0On0cztu.js → images-BmJRuTpm.js} +61 -13
  79. package/dist/images-BmJRuTpm.js.map +1 -0
  80. package/dist/index.d.ts +3 -3
  81. package/dist/index.js +4 -4
  82. package/dist/init-Bwc9byQr.js +543 -0
  83. package/dist/init-Bwc9byQr.js.map +1 -0
  84. package/dist/init-D7Y1ny1z.js +1 -0
  85. package/dist/insights-B2Xmhz9o.js +64 -0
  86. package/dist/insights-B2Xmhz9o.js.map +1 -0
  87. package/dist/{invocations-DbGfBAA_.js → invocations-CQTbP092.js} +3 -3
  88. package/dist/{invocations-DbGfBAA_.js.map → invocations-CQTbP092.js.map} +1 -1
  89. package/dist/{judge-DW_GDOmB.js → judge-Dt6KW6_O.js} +5 -3
  90. package/dist/judge-Dt6KW6_O.js.map +1 -0
  91. package/dist/judge.d.ts +7 -6
  92. package/dist/judge.js +8 -7
  93. package/dist/judge.js.map +1 -1
  94. package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
  95. package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
  96. package/dist/{model-h_cDtcRr.js → model-B-mel-Gv.js} +46 -20
  97. package/dist/model-B-mel-Gv.js.map +1 -0
  98. package/dist/model-BGKYVpoj.js +1 -0
  99. package/dist/{model-DaVCY3rb.js → model-C7tSwT7f.js} +2 -2
  100. package/dist/{model-DaVCY3rb.js.map → model-C7tSwT7f.js.map} +1 -1
  101. package/dist/{model-oqcDplJG.js → model-CWlAqmbU.js} +150 -46
  102. package/dist/model-CWlAqmbU.js.map +1 -0
  103. package/dist/model-DHY-dfoO.js +1 -0
  104. package/dist/{node-B3ydHo6t.js → node-D0mtjRAO.js} +3 -3
  105. package/dist/{node-B3ydHo6t.js.map → node-D0mtjRAO.js.map} +1 -1
  106. package/dist/{options-Bh2W63dK.js → options-CPUW97_7.js} +9 -12
  107. package/dist/options-CPUW97_7.js.map +1 -0
  108. package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
  109. package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
  110. package/dist/{patch-Zac5aIRM.js → patch-D4oluWzH.js} +2 -2
  111. package/dist/{patch-Zac5aIRM.js.map → patch-D4oluWzH.js.map} +1 -1
  112. package/dist/{plan-C9Cy27Ay.js → plan-OkwUcJQ9.js} +31 -12
  113. package/dist/plan-OkwUcJQ9.js.map +1 -0
  114. package/dist/plugins-CUWMnSNb.js +654 -0
  115. package/dist/plugins-CUWMnSNb.js.map +1 -0
  116. package/dist/{preflight-CPWpQeBI.js → preflight-B6pY89bF.js} +1 -1
  117. package/dist/{preflight-D7iFPKeK.js → preflight-Bjm7_ylE.js} +14 -10
  118. package/dist/preflight-Bjm7_ylE.js.map +1 -0
  119. package/dist/{prepare-doGxaAGR.js → prepare-CQmK3SBn.js} +71 -24
  120. package/dist/prepare-CQmK3SBn.js.map +1 -0
  121. package/dist/prepare-DbdgtZKe.js +2 -0
  122. package/dist/{provenance-DmE9uPVt.js → provenance-B3Y17oCC.js} +2 -2
  123. package/dist/{provenance-DmE9uPVt.js.map → provenance-B3Y17oCC.js.map} +1 -1
  124. package/dist/providers-CXN2RFz-.js +1 -0
  125. package/dist/{providers-tAOD1NQN.js → providers-eoniqK6w.js} +24 -10
  126. package/dist/providers-eoniqK6w.js.map +1 -0
  127. package/dist/query-CLRZmWBT.js +139 -0
  128. package/dist/query-CLRZmWBT.js.map +1 -0
  129. package/dist/query-CmBDYt0_.js +1 -0
  130. package/dist/{questions-DjAwMxZ3.js → questions-1XOulevV.js} +6 -6
  131. package/dist/{questions-DjAwMxZ3.js.map → questions-1XOulevV.js.map} +1 -1
  132. package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
  133. package/dist/record-kk9M1hj-.js.map +1 -0
  134. package/dist/remarks-1521zwfW.js +38 -0
  135. package/dist/remarks-1521zwfW.js.map +1 -0
  136. package/dist/remarks-BhAV1H4V.js +1 -0
  137. package/dist/remarks-DlJCqWRs.js +278 -0
  138. package/dist/remarks-DlJCqWRs.js.map +1 -0
  139. package/dist/{remote-HDRt16ew.js → remote-cE2VWfkJ.js} +3 -3
  140. package/dist/{remote-HDRt16ew.js.map → remote-cE2VWfkJ.js.map} +1 -1
  141. package/dist/resolve-C4zeccCH.js +724 -0
  142. package/dist/resolve-C4zeccCH.js.map +1 -0
  143. package/dist/resolve-D30yZYmB.js +1 -0
  144. package/dist/{results-DuauQI3Z.js → results-Drtt0uFl.js} +33 -7
  145. package/dist/results-Drtt0uFl.js.map +1 -0
  146. package/dist/{resume-BRfa8E_s.js → resume-BEFazUfy.js} +4 -4
  147. package/dist/{resume-BRfa8E_s.js.map → resume-BEFazUfy.js.map} +1 -1
  148. package/dist/rules-BFzQqPIm.js +317 -0
  149. package/dist/rules-BFzQqPIm.js.map +1 -0
  150. package/dist/run-BeMy92Us.js +88 -0
  151. package/dist/run-BeMy92Us.js.map +1 -0
  152. package/dist/{sandbox-D3A8oUb7.js → sandbox-CQaJj7n9.js} +2 -2
  153. package/dist/{sandbox-D3A8oUb7.js.map → sandbox-CQaJj7n9.js.map} +1 -1
  154. package/dist/sandbox.d.ts +1 -1
  155. package/dist/sandbox.js +1 -1
  156. package/dist/server-V4-2w0l8.js +1 -0
  157. package/dist/{server-XDleKaF_.js → server-xK0les4f.js} +8 -8
  158. package/dist/{server-XDleKaF_.js.map → server-xK0les4f.js.map} +1 -1
  159. package/dist/{shared-DYpIb1BI.js → shared-CA61BuPJ.js} +25 -3
  160. package/dist/shared-CA61BuPJ.js.map +1 -0
  161. package/dist/source-BDow_oW8.js +1 -0
  162. package/dist/{source-C8xumIWj.js → source-Q1hEKbCs.js} +2 -2
  163. package/dist/{source-C8xumIWj.js.map → source-Q1hEKbCs.js.map} +1 -1
  164. package/dist/src-B9L9yGKI.js +1 -0
  165. package/dist/{src-ofUaYbuY.js → src-Bcah6ZkT.js} +1 -1
  166. package/dist/{src-DvCg0NBs.js → src-BhmaorOU.js} +28 -6
  167. package/dist/{src-DvCg0NBs.js.map → src-BhmaorOU.js.map} +1 -1
  168. package/dist/{src-CF17Ug08.js → src-C0CeKiLU.js} +19 -4
  169. package/dist/{src-CF17Ug08.js.map → src-C0CeKiLU.js.map} +1 -1
  170. package/dist/src-C0xowZ3C.js +2 -0
  171. package/dist/src-CHIfIKUu.js +2 -0
  172. package/dist/src-DLtyz4w5.js +2 -0
  173. package/dist/src-DPIjmReZ.js +2 -0
  174. package/dist/{src-C_lPtowT.js → src-DXNh5mTr.js} +1 -1
  175. package/dist/{src-FGXhkEkH.js → src-DiLMkIr9.js} +142 -13
  176. package/dist/src-DiLMkIr9.js.map +1 -0
  177. package/dist/{src-B7treWa8.js → src-LekQrr_S.js} +324 -32
  178. package/dist/src-LekQrr_S.js.map +1 -0
  179. package/dist/src-bCnsA6Vp.js +2 -0
  180. package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
  181. package/dist/src-cbCb-MPy.js.map +1 -0
  182. package/dist/{src-DvK0EIZx.js → src-qGoFkuJF.js} +55 -6
  183. package/dist/{src-DvK0EIZx.js.map → src-qGoFkuJF.js.map} +1 -1
  184. package/dist/{src-jzagbuqH.js → src-ynBVosfX.js} +1 -1
  185. package/dist/state-BQR_BCm4.js +1 -0
  186. package/dist/{state-C__9swoG.js → state-BmZ8QVZ8.js} +12 -12
  187. package/dist/{state-C__9swoG.js.map → state-BmZ8QVZ8.js.map} +1 -1
  188. package/dist/studio-app/assets/index-CnYJijyI.js +58 -0
  189. package/dist/studio-app/index.html +1 -1
  190. package/dist/suite-BaHPmAGy.js +1 -0
  191. package/dist/suite-C8sw2pox.js +481 -0
  192. package/dist/suite-C8sw2pox.js.map +1 -0
  193. package/dist/summary-0oQNGskv.js +837 -0
  194. package/dist/summary-0oQNGskv.js.map +1 -0
  195. package/dist/testing.d.ts +2 -2
  196. package/dist/testing.js +2 -2
  197. package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
  198. package/dist/text-CrVy5ioL.js.map +1 -0
  199. package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
  200. package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
  201. package/dist/types-C5vI3g1C.js.map +1 -1
  202. package/dist/{types-g17bRAzt.d.ts → types-GraZtfHN.d.ts} +858 -39
  203. package/dist/usage-BDo2q_yu.js +1 -0
  204. package/dist/{command-Bge8F7Ko.js → validate-BdoXUuL_.js} +35 -383
  205. package/dist/validate-BdoXUuL_.js.map +1 -0
  206. package/dist/view/index.d.ts +20 -9
  207. package/dist/view/index.js +7 -6
  208. package/dist/views-BoUoX4_A.js +125 -0
  209. package/dist/views-BoUoX4_A.js.map +1 -0
  210. package/dist/views-noVQNCUP.js +2 -0
  211. package/dist/{worker-entry-yOchGYYv.js → worker-entry-D0-GErmU.js} +2 -2
  212. package/dist/{worker-entry-yOchGYYv.js.map → worker-entry-D0-GErmU.js.map} +1 -1
  213. package/dist/{workspace-D8sSgpiy.js → workspace-B90YDU_a.js} +1 -1
  214. package/dist/{workspace-CgyHEM0l.js → workspace-tjZFkjxC.js} +4 -4
  215. package/dist/{workspace-CgyHEM0l.js.map → workspace-tjZFkjxC.js.map} +1 -1
  216. package/package.json +10 -8
  217. package/skills/eval-rubric/SKILL.md +130 -0
  218. package/dist/agent-CURAwx_q.js +0 -334
  219. package/dist/agent-CURAwx_q.js.map +0 -1
  220. package/dist/assemble-B9Alds-z.js.map +0 -1
  221. package/dist/assemble-J5MukZFY.js +0 -1
  222. package/dist/capture-jquXZBKK.js +0 -1
  223. package/dist/cli-D303Vj5N.js.map +0 -1
  224. package/dist/cli-spec-BPZbQG2p.js.map +0 -1
  225. package/dist/command-BLfT7vnQ.js.map +0 -1
  226. package/dist/command-BT9a37ZR.js.map +0 -1
  227. package/dist/command-Bge8F7Ko.js.map +0 -1
  228. package/dist/command-BkFjijN2.js +0 -1
  229. package/dist/commands-BFx16WB8.js +0 -225
  230. package/dist/commands-BFx16WB8.js.map +0 -1
  231. package/dist/config-DEgnUiU-.js.map +0 -1
  232. package/dist/context-C1mxXh80.js.map +0 -1
  233. package/dist/db-CdHizc4_.js +0 -1406
  234. package/dist/db-CdHizc4_.js.map +0 -1
  235. package/dist/db-Dm1cRJJP.js +0 -2
  236. package/dist/dist-B8hJImYt.js.map +0 -1
  237. package/dist/doctor-BYNok4UO.js.map +0 -1
  238. package/dist/duration-CEOQww97.js +0 -26
  239. package/dist/duration-CEOQww97.js.map +0 -1
  240. package/dist/egress-C4PZTSSe.js.map +0 -1
  241. package/dist/environment-DNjRk0nU.js.map +0 -1
  242. package/dist/evaluate-D4zeRGBF.js.map +0 -1
  243. package/dist/family-D2b7WD10.js +0 -67
  244. package/dist/family-D2b7WD10.js.map +0 -1
  245. package/dist/files-BXUdY8tr.js.map +0 -1
  246. package/dist/files-BhyltlDB.js +0 -1
  247. package/dist/files-DQmHE7pb.js.map +0 -1
  248. package/dist/files-ZZPqfAo6.js +0 -1
  249. package/dist/images-0On0cztu.js.map +0 -1
  250. package/dist/init-B77Rpcqc.js +0 -360
  251. package/dist/init-B77Rpcqc.js.map +0 -1
  252. package/dist/init-BrOWin3W.js +0 -1
  253. package/dist/judge-DW_GDOmB.js.map +0 -1
  254. package/dist/model-NM3ID0uR.js +0 -1
  255. package/dist/model-h_cDtcRr.js.map +0 -1
  256. package/dist/model-nwWJvaUR.js +0 -1
  257. package/dist/model-oqcDplJG.js.map +0 -1
  258. package/dist/options-Bh2W63dK.js.map +0 -1
  259. package/dist/plan-C9Cy27Ay.js.map +0 -1
  260. package/dist/preflight-D7iFPKeK.js.map +0 -1
  261. package/dist/prepare-BGjePFQl.js +0 -2
  262. package/dist/prepare-doGxaAGR.js.map +0 -1
  263. package/dist/process-CSVO_jsc.js +0 -119
  264. package/dist/process-CSVO_jsc.js.map +0 -1
  265. package/dist/providers-gDMko8fl.js +0 -1
  266. package/dist/providers-tAOD1NQN.js.map +0 -1
  267. package/dist/query-Bes9Kh6Y.js +0 -91
  268. package/dist/query-Bes9Kh6Y.js.map +0 -1
  269. package/dist/query-C_G_svLU.js +0 -1
  270. package/dist/record-BKmMvZ6O.js.map +0 -1
  271. package/dist/results-DuauQI3Z.js.map +0 -1
  272. package/dist/server-C7sg1ndo.js +0 -1
  273. package/dist/shared-DYpIb1BI.js.map +0 -1
  274. package/dist/source-fGd0SaKP.js +0 -1
  275. package/dist/src-B7treWa8.js.map +0 -1
  276. package/dist/src-DNnG4e4R.js +0 -2
  277. package/dist/src-DTbrY1hi.js +0 -2
  278. package/dist/src-DdyJEh2v.js +0 -2
  279. package/dist/src-Dj9PAroc.js +0 -2
  280. package/dist/src-Du8H85Qq.js +0 -2
  281. package/dist/src-FGXhkEkH.js.map +0 -1
  282. package/dist/src-pJZOrYR9.js +0 -1
  283. package/dist/src-u8_ixn_F.js.map +0 -1
  284. package/dist/state-CgjQo29K.js +0 -1
  285. package/dist/studio-app/assets/index-DrQc2Yxd.js +0 -58
  286. package/dist/summary-BLAVLySU.js +0 -385
  287. package/dist/summary-BLAVLySU.js.map +0 -1
  288. package/dist/summary-DgyjUh_l.js +0 -192
  289. package/dist/summary-DgyjUh_l.js.map +0 -1
  290. package/dist/text-gEcKjAyp.js.map +0 -1
  291. package/dist/tools-GCyNYSc1.js +0 -249
  292. package/dist/tools-GCyNYSc1.js.map +0 -1
  293. package/dist/views-BW6oCDUQ.js +0 -2
  294. package/dist/views-BmQF4UCI.js +0 -225
  295. package/dist/views-BmQF4UCI.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  <meta name="referrer" content="no-referrer" />
7
7
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
8
8
  <title>reeval Studio</title>
9
- <script type="module" crossorigin src="./assets/index-DrQc2Yxd.js"></script>
9
+ <script type="module" crossorigin src="./assets/index-CnYJijyI.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="./assets/index-CwQN3f_h.css">
11
11
  </head>
12
12
  <body>
@@ -0,0 +1 @@
1
+ export { l as suiteResult } from "./suite-C8sw2pox.js";
@@ -0,0 +1,481 @@
1
+ import { $ as contrastEffort, Q as cellSamples, T as runOutcome, V as labelledJudgements, Z as cellEffort, _t as round3, ft as liftInterval } from "./model-CWlAqmbU.js";
2
+ //#region src/view/family.ts
3
+ const signed = (x) => `${x >= 0 ? "+" : "−"}${Math.round(Math.abs(x) * 100)}`;
4
+ const pct = (x) => `${Math.round(x * 100)}%`;
5
+ const pValue = (p) => p < .001 ? "<0.001" : String(p);
6
+ /** `pass@1 2/3 · 67% (95% 21…94)`, or `pass@1 67% over 3 cases (95% 30…100)` at several runs. */
7
+ function familyRateLabel(rate) {
8
+ const { interval: i } = rate;
9
+ const range = `95% ${Math.round(i.lo * 100)}…${Math.round(i.hi * 100)}`;
10
+ return i.method === "wilson" ? `pass@1 ${rate.pass}/${rate.counted} · ${pct(rate.rate)} (${range})` : `pass@1 ${pct(rate.rate)} over ${rate.cases} cases (${range})`;
11
+ }
12
+ const VERDICT_NOTE = {
13
+ lift: "",
14
+ drop: "",
15
+ noise: ", within noise",
16
+ insufficient: ", insufficient"
17
+ };
18
+ /**
19
+ * `pass@1 88% vs 20% lift +68 pts (95% +40…+82, paired, 18 vs 1 discordant, p <0.001)`. At
20
+ * one attempt a case, the counts are the discordant pairs; at several, the paired cases.
21
+ */
22
+ function familyLiftLabel(lift) {
23
+ const { interval: i } = lift;
24
+ const range = `95% ${signed(i.lo)}…${signed(i.hi)}`;
25
+ const pairs = lift.discordant ? `${lift.discordant.variantOnly} vs ${lift.discordant.controlOnly} discordant` : `${lift.pairs} cases`;
26
+ const p = lift.p === null ? "" : `, p ${pValue(lift.p)}`;
27
+ return `${`pass@1 ${pct(lift.variantRate)} vs ${pct(lift.controlRate)}`} lift ${signed(lift.points)} pts (${range}, paired, ${pairs}${p})${VERDICT_NOTE[lift.verdict]}`;
28
+ }
29
+ const metricText = (name, m) => !m || m.ratio === null ? [] : [`${name} ×${m.ratio.toFixed(2)} per case (${m.verdict}${m.p === null ? "" : `, signed-rank p ${pValue(m.p)}`})`];
30
+ /**
31
+ * `tools ×0.41 per case (fewer, signed-rank p 0.002) · agent time ×0.80 per case (noise, …)`;
32
+ * a metric whose control median is 0 has no ratio and is left out.
33
+ */
34
+ function familyEffortLabel(lift) {
35
+ const e = lift.effort;
36
+ if (!e) return null;
37
+ const parts = [
38
+ ...metricText("tools", e.tools),
39
+ ...metricText("agent time", e.agentMs),
40
+ ...metricText("tokens", e.tokens)
41
+ ];
42
+ return parts.length ? parts.join(" · ") : null;
43
+ }
44
+ /** `25 cases · paired` with a compare, and `3 of 25 cases` when a filter left some out. */
45
+ function familyHeadLabel(family) {
46
+ const cases = family.ran === family.cases ? `${family.cases} cases` : `${family.ran} of ${family.cases} cases`;
47
+ return family.lifts.length ? `${cases} · paired` : cases;
48
+ }
49
+ /**
50
+ * A case's short label: its name less the template's literal text before the first placeholder
51
+ * and after the last, so `fixes $id` labels `fixes GH-101` as `GH-101`.
52
+ */
53
+ function caseLabel(template, name) {
54
+ const matches = [...template.matchAll(/%#|%s|\$[A-Za-z_][A-Za-z0-9_]*/g)];
55
+ const first = matches[0];
56
+ const last = matches.at(-1);
57
+ if (!first || !last) return name;
58
+ const prefix = template.slice(0, first.index);
59
+ const suffix = template.slice((last.index ?? 0) + last[0].length);
60
+ if (!name.startsWith(prefix) || !name.endsWith(suffix)) return name;
61
+ return name.slice(prefix.length, name.length - suffix.length) || name;
62
+ }
63
+ /** The family's cases in list order. */
64
+ const familyCases = (family, evals) => evals.filter((e) => e.family?.id === family.id).sort((a, b) => (a.family?.case ?? 0) - (b.family?.case ?? 0));
65
+ //#endregion
66
+ //#region src/view/suite.ts
67
+ /** The fewest counted attempts a side for an effect to be anything but `unclear`. */
68
+ const EFFECT_MIN_COUNTED = 4;
69
+ /** A cell's attempts the run's interrupt cancelled: recorded as fails, but not the agent's. */
70
+ const cancelledOf = (cell) => cell.errors.filter((err) => err.kind === "aborted").reduce((n, err) => n + err.attempts, 0);
71
+ /** A cell's counted tries: its passes and fails, less the ones the interrupt cancelled. */
72
+ const countedOf = (cell) => Math.max(0, cell.passed + cell.failed - cancelledOf(cell));
73
+ /**
74
+ * The effect of `variant` against `control`, from the interval on their difference. A side
75
+ * with fewer than `EFFECT_MIN_COUNTED` counted attempts is `unclear`, whatever the interval.
76
+ */
77
+ function effectOf(variant, control, interval) {
78
+ if (variant.counted < 4 || control.counted < 4) return "unclear";
79
+ if (variant.pass * control.counted === control.pass * variant.counted) return "same";
80
+ if (!interval) return "unclear";
81
+ if (interval.low > 0) return "better";
82
+ if (interval.high < 0) return "worse";
83
+ return "unclear";
84
+ }
85
+ /** A check's passes over the attempts that answered it; `notRun` and `error` aren't counted. */
86
+ const checkSide = (t) => ({
87
+ pass: t.pass,
88
+ counted: t.pass + t.fail
89
+ });
90
+ /** The check's effect, on the same Newcombe interval the record stores for a cell's lift. */
91
+ function checkEffect(variant, control) {
92
+ const v = checkSide(variant);
93
+ const c = checkSide(control);
94
+ if (v.counted === 0 || c.counted === 0) return "unclear";
95
+ const { low, high } = liftInterval({
96
+ pass: v.pass,
97
+ n: v.counted
98
+ }, {
99
+ pass: c.pass,
100
+ n: c.counted
101
+ });
102
+ return effectOf(v, c, {
103
+ low: round3(low),
104
+ high: round3(high)
105
+ });
106
+ }
107
+ /** One path segment: `%`, `/` and `+` percent-encoded, so segments split back unambiguously. */
108
+ const factSegment = (s) => s.replace(/%/g, "%25").replace(/\//g, "%2F").replace(/\+/g, "%2B");
109
+ const cellSegment = (c) => [
110
+ c.harness,
111
+ c.environment,
112
+ c.sandbox
113
+ ].map(factSegment).join("+");
114
+ const counted = (a) => a.outcome === "pass" || a.outcome === "fail";
115
+ function evalAcross(cells) {
116
+ const harness = new Set(cells.map((c) => c.harness)).size > 1;
117
+ const change = cells.some((c) => c.role === "variant") || new Set(cells.map((c) => c.environment)).size > 1;
118
+ return harness && change ? "both" : harness ? "harness" : change ? "change" : "none";
119
+ }
120
+ /** The skill sources and files an environment placed; `local:` sources as their path. */
121
+ function contextOf(record, cell) {
122
+ const envs = record.environments.filter((e) => e.digest === cell.environmentDigest);
123
+ const env = envs.find((e) => e.name === cell.environment) ?? envs[0];
124
+ if (!env) return [];
125
+ return [...env.skills.map((s) => s.source.replace(/^local:/, "")), ...env.files.map((f) => f.path)];
126
+ }
127
+ /** The control a variant is measured against: its lift's, else the control on its harness and sandbox. */
128
+ function baselineOf(e, cell) {
129
+ if (cell.role !== "variant") return void 0;
130
+ const vs = cell.lift?.vs;
131
+ return vs ? e.cells.find((c) => c.key === vs) : e.cells.find((c) => c.role === "control" && c.harness === cell.harness && c.sandbox === cell.sandbox);
132
+ }
133
+ /** Every check label the attempts recorded, in first-seen order: the eval's declared checks. */
134
+ function declaredChecks(entries) {
135
+ return [...new Set(entries.flatMap((e) => e.attempts.flatMap((a) => (a.assertions ?? []).map((x) => x.label))))];
136
+ }
137
+ function checksOf(e, cell, baseline, base, declared) {
138
+ const attempts = e.attempts.filter((a) => a.cell === cell.key && counted(a));
139
+ return (cell.checks ?? declared.map((label) => ({
140
+ label,
141
+ pass: 0,
142
+ fail: 0,
143
+ error: 0,
144
+ notRun: 0
145
+ }))).map((k, order) => {
146
+ const ran = k.pass + k.fail + k.error;
147
+ const answered = attempts.flatMap((a) => a.assertions ?? []).filter((x) => x.label === k.label && x.message);
148
+ const assertion = (answered.find((x) => x.status === "fail") ?? answered.find((x) => x.status === "error"))?.message ?? null;
149
+ const control = baseline ? baseline.checks?.find((x) => x.label === k.label) ?? {
150
+ pass: 0,
151
+ fail: 0,
152
+ error: 0,
153
+ notRun: 0
154
+ } : void 0;
155
+ const judged = attempts.flatMap((a) => labelledJudgements(a).filter((j) => j.check === k.label).map((j) => j.judgement));
156
+ const first = judged[0];
157
+ return {
158
+ path: `${base}/checks/${factSegment(k.label)}`,
159
+ label: k.label,
160
+ order,
161
+ outcome: ran === 0 ? { status: "not run" } : {
162
+ status: "ran",
163
+ passed: k.pass,
164
+ failed: k.fail,
165
+ errored: k.error,
166
+ notRun: k.notRun,
167
+ assertion
168
+ },
169
+ effect: control ? checkEffect(k, control) : null,
170
+ judge: first ? {
171
+ question: first.question,
172
+ threshold: first.threshold,
173
+ scores: judged.map((j) => j.score)
174
+ } : null
175
+ };
176
+ });
177
+ }
178
+ const informative = (line) => /[\p{L}\p{N}]/u.test(line);
179
+ /**
180
+ * An error's one line: its first line with any letter or digit in it, joined with the next one
181
+ * when it ends with `:`, since `Docker failed:` alone says nothing. A log line's `| ` is dropped.
182
+ */
183
+ function messageLine(text) {
184
+ const [first = "", next] = text.split("\n").map((l) => l.trim()).filter(informative);
185
+ return first.endsWith(":") && next ? `${first} ${next.replace(/^[|>]\s*/, "")}` : first;
186
+ }
187
+ /**
188
+ * The errors of a cell's failed and infra-error attempts that no failed check explains: every
189
+ * timeout, infra error and abort, and an assertion or judge error on an attempt whose recorded
190
+ * checks all passed (a throw in the eval's body), plus each turn's error, which is often why.
191
+ */
192
+ function errorsOf(e, cell) {
193
+ const out = [];
194
+ const add = (kind, text) => {
195
+ const message = messageLine(text);
196
+ const same = out.find((x) => x.kind === kind && x.message === message);
197
+ if (same) same.attempts++;
198
+ else out.push({
199
+ kind,
200
+ message,
201
+ attempts: 1
202
+ });
203
+ };
204
+ for (const a of e.attempts) {
205
+ if (a.cell !== cell.key) continue;
206
+ if (a.outcome !== "fail" && a.outcome !== "infra_error") continue;
207
+ for (const turn of a.turns ?? []) if (turn.error) add("turn", turn.error);
208
+ if (!a.error) continue;
209
+ if ((a.error.kind === "assertion" || a.error.kind === "judge") && (a.assertions ?? []).some((x) => x.status !== "pass")) continue;
210
+ add(a.error.kind, a.error.message);
211
+ }
212
+ return out;
213
+ }
214
+ function effortDiffers(e, cell, baseline) {
215
+ if (!baseline) return false;
216
+ const c = contrastEffort(cellSamples(e, cell.key), cellSamples(e, baseline.key));
217
+ if (!c) return false;
218
+ const moved = (v) => v === "fewer" || v === "more";
219
+ return moved(c.verdict) || moved(c.timeVerdict) || moved(c.tokensVerdict);
220
+ }
221
+ function questionsOf(e) {
222
+ return (e.answers ?? []).map((a) => ({
223
+ question: a.question,
224
+ votes: a.votes.length,
225
+ rates: a.rates.map((r) => ({
226
+ cut: r.cut,
227
+ name: r.name,
228
+ wins: r.wins,
229
+ n: r.n
230
+ })),
231
+ error: a.error ?? null
232
+ }));
233
+ }
234
+ function effortOf(e, cell) {
235
+ const effort = cellEffort(e, cell.key);
236
+ if (!effort || effort.n < 4) return null;
237
+ return {
238
+ tools: effort.tools.median,
239
+ agentMs: effort.agentMs.median,
240
+ tokens: effort.tokens?.median ?? null
241
+ };
242
+ }
243
+ /** A variant's effect from its stored lift; with none (nothing counted on a side), `unclear`. */
244
+ function cellEffect(cell, baseline, interval) {
245
+ if (cell.lift) return effectOf(cell.lift.variant, cell.lift.control, interval);
246
+ if (!baseline) return "unclear";
247
+ return effectOf({
248
+ pass: cell.pass,
249
+ counted: cell.pass + cell.fail
250
+ }, {
251
+ pass: baseline.pass,
252
+ counted: baseline.pass + baseline.fail
253
+ }, null);
254
+ }
255
+ function cellsOf(record, e, parent, declared) {
256
+ const hasVariants = e.cells.some((c) => c.role === "variant");
257
+ return e.cells.map((cell, order) => {
258
+ const path = `${parent}/${cellSegment(cell)}`;
259
+ const baseline = baselineOf(e, cell);
260
+ const attempts = e.attempts.filter((a) => a.cell === cell.key && counted(a));
261
+ const lift = cell.lift;
262
+ const interval = lift ? {
263
+ low: lift.interval.lo,
264
+ high: lift.interval.hi
265
+ } : null;
266
+ return {
267
+ path,
268
+ key: cell.key,
269
+ harness: cell.harness,
270
+ environment: cell.environment,
271
+ sandbox: cell.sandbox,
272
+ variant: cell.variant ?? null,
273
+ baseline: hasVariants && cell.role === "control",
274
+ vs: baseline?.key ?? null,
275
+ order,
276
+ gated: cell.gate !== "none",
277
+ outcome: cell.outcome,
278
+ attempts: cell.runs,
279
+ passed: cell.pass,
280
+ failed: cell.fail,
281
+ infraError: cell.infraError,
282
+ skipped: cell.skipped,
283
+ fingerprint: cell.fingerprint,
284
+ context: contextOf(record, cell),
285
+ checks: checksOf(e, cell, baseline, path, declared),
286
+ effect: cell.role === "variant" ? cellEffect(cell, baseline, interval) : null,
287
+ interval,
288
+ minLift: lift?.minLift ?? null,
289
+ effort: effortOf(e, cell),
290
+ effortDiffers: cell.role === "variant" && effortDiffers(e, cell, baseline),
291
+ errors: errorsOf(e, cell),
292
+ searches: attempts.map((a) => a.activity.webSearches),
293
+ fetches: attempts.map((a) => a.activity.webFetches)
294
+ };
295
+ });
296
+ }
297
+ function pooledEffect(lift) {
298
+ if (lift.verdict === "insufficient" || lift.pairs < 4) return "unclear";
299
+ if (lift.variantRate === lift.controlRate) return "same";
300
+ if (lift.interval.lo > 0) return "better";
301
+ if (lift.interval.hi < 0) return "worse";
302
+ return "unclear";
303
+ }
304
+ /** Fail beats infra error, which beats cancelled, which beats pass; skipped only when every one was. */
305
+ function worst(outcomes) {
306
+ if (outcomes.includes("fail")) return "fail";
307
+ if (outcomes.includes("infra_error")) return "infra_error";
308
+ if (outcomes.includes("cancelled")) return "cancelled";
309
+ if (outcomes.length && outcomes.every((o) => o === "skipped")) return "skipped";
310
+ return "pass";
311
+ }
312
+ /** The record's outcome, or `cancelled` when every gated attempt that failed was cancelled. */
313
+ function outcomeOf(e) {
314
+ if (e.outcome !== "fail") return e.outcome;
315
+ const gated = new Set(e.cells.filter((c) => c.gate !== "none").map((c) => c.key));
316
+ const failed = e.attempts.filter((a) => a.outcome === "fail" && gated.has(a.cell));
317
+ return failed.length && failed.every((a) => a.error?.kind === "aborted") ? "cancelled" : "fail";
318
+ }
319
+ /** Each question any case asked, in first-asked order, with votes and wins summed over the cases. */
320
+ function familyQuestions(cases) {
321
+ const out = /* @__PURE__ */ new Map();
322
+ for (const q of cases.flatMap(questionsOf)) {
323
+ const have = out.get(q.question);
324
+ if (!have) {
325
+ out.set(q.question, {
326
+ ...q,
327
+ rates: q.rates.map((r) => ({ ...r }))
328
+ });
329
+ continue;
330
+ }
331
+ have.votes += q.votes;
332
+ have.error ??= q.error;
333
+ for (const r of q.rates) {
334
+ const same = have.rates.find((x) => x.cut === r.cut && x.name === r.name);
335
+ if (!same) have.rates.push({ ...r });
336
+ else {
337
+ same.wins += r.wins;
338
+ same.n += r.n;
339
+ }
340
+ }
341
+ }
342
+ return [...out.values()];
343
+ }
344
+ function familyResult(record, family, cases, order) {
345
+ const path = factSegment(family.id);
346
+ const sorted = [...cases].sort((a, b) => (a.family?.case ?? 0) - (b.family?.case ?? 0));
347
+ const declared = declaredChecks(sorted);
348
+ const cellOf = (key) => sorted.flatMap((c) => c.cells).find((c) => c.key === key);
349
+ const results = sorted.map((c) => {
350
+ const label = caseLabel(family.name, c.name);
351
+ const casePath = `${path}/${factSegment(label)}`;
352
+ return {
353
+ path: casePath,
354
+ id: c.id,
355
+ label,
356
+ name: c.name,
357
+ order: c.family?.case ?? 0,
358
+ outcome: outcomeOf(c),
359
+ cells: cellsOf(record, c, casePath, declared)
360
+ };
361
+ });
362
+ return {
363
+ path,
364
+ id: family.id,
365
+ group: family.group,
366
+ name: family.name,
367
+ template: family.name,
368
+ order,
369
+ across: evalAcross(cases.flatMap((c) => c.cells)),
370
+ family: true,
371
+ todo: false,
372
+ outcome: worst([...family.outcome === "fail" ? ["fail"] : [], ...results.map((c) => c.outcome)]),
373
+ cells: null,
374
+ cases: results,
375
+ pooled: family.lifts.map((lift) => {
376
+ const cell = cellOf(lift.variant);
377
+ return {
378
+ path: `${path}/${cell ? cellSegment(cell) : factSegment(lift.variant)}`,
379
+ key: lift.variant,
380
+ vs: lift.vs,
381
+ effect: pooledEffect(lift),
382
+ pairs: lift.pairs,
383
+ interval: {
384
+ low: lift.interval.lo,
385
+ high: lift.interval.hi
386
+ },
387
+ minLift: lift.minLift ?? null,
388
+ outcome: lift.outcome
389
+ };
390
+ }),
391
+ questions: familyQuestions(sorted)
392
+ };
393
+ }
394
+ function evalResult(record, e, order) {
395
+ const path = factSegment(e.id);
396
+ return {
397
+ path,
398
+ id: e.id,
399
+ group: e.group,
400
+ name: e.name,
401
+ template: null,
402
+ order,
403
+ across: evalAcross(e.cells),
404
+ family: false,
405
+ todo: e.todo,
406
+ outcome: outcomeOf(e),
407
+ cells: cellsOf(record, e, path, declaredChecks([e])),
408
+ cases: null,
409
+ pooled: null,
410
+ questions: questionsOf(e)
411
+ };
412
+ }
413
+ function pathsOf(files) {
414
+ const out = [];
415
+ const cell = (c) => {
416
+ out.push(c.path);
417
+ for (const k of c.checks) out.push(k.path);
418
+ if (c.effort) out.push(`${c.path}/effort`);
419
+ };
420
+ for (const file of files) for (const e of file.evals) {
421
+ out.push(e.path);
422
+ for (const c of e.cells ?? []) cell(c);
423
+ for (const k of e.cases ?? []) {
424
+ out.push(k.path);
425
+ for (const c of k.cells) cell(c);
426
+ }
427
+ for (const p of e.pooled ?? []) out.push(p.path);
428
+ }
429
+ return out;
430
+ }
431
+ /** The facts of a run, from its record. Pure: the same record always gives the same result. */
432
+ function suiteResult(record) {
433
+ const families = new Map((record.families ?? []).map((f) => [f.id, f]));
434
+ const byFile = /* @__PURE__ */ new Map();
435
+ const seen = /* @__PURE__ */ new Set();
436
+ const errors = record.errors ?? [];
437
+ const tally = {
438
+ errors: errors.length,
439
+ pass: 0,
440
+ fail: 0,
441
+ infraError: 0,
442
+ cancelled: 0,
443
+ skipped: 0
444
+ };
445
+ const count = (o) => {
446
+ if (o === "infra_error") tally.infraError++;
447
+ else tally[o]++;
448
+ };
449
+ for (const e of record.evals) {
450
+ const evals = byFile.get(e.file) ?? [];
451
+ byFile.set(e.file, evals);
452
+ count(outcomeOf(e));
453
+ const family = e.family && families.get(e.family.id);
454
+ if (!family) {
455
+ evals.push(evalResult(record, e, evals.length));
456
+ continue;
457
+ }
458
+ if (seen.has(family.id)) continue;
459
+ seen.add(family.id);
460
+ if (family.outcome === "fail" && family.lifts.some((l) => l.outcome === "fail")) tally.fail++;
461
+ const cases = record.evals.filter((x) => x.family?.id === family.id);
462
+ evals.push(familyResult(record, family, cases, evals.length));
463
+ }
464
+ const files = [...byFile].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([path, evals]) => ({
465
+ path,
466
+ evals
467
+ }));
468
+ return {
469
+ runId: record.runId,
470
+ status: record.status,
471
+ outcome: runOutcome(record),
472
+ errors,
473
+ tally,
474
+ files,
475
+ paths: pathsOf(files)
476
+ };
477
+ }
478
+ //#endregion
479
+ export { effectOf as a, messageLine as c, familyCases as d, familyEffortLabel as f, familyRateLabel as h, countedOf as i, suiteResult as l, familyLiftLabel as m, cancelledOf as n, evalAcross as o, familyHeadLabel as p, checkEffect as r, factSegment as s, EFFECT_MIN_COUNTED as t, caseLabel as u };
480
+
481
+ //# sourceMappingURL=suite-C8sw2pox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite-C8sw2pox.js","names":[],"sources":["../src/view/family.ts","../src/view/suite.ts"],"mappings":";;AASA,MAAM,UAAU,MAAc,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG;AAClF,MAAM,OAAO,MAAc,GAAG,KAAK,MAAM,IAAI,GAAG,EAAE;AAClD,MAAM,UAAU,MAAe,IAAI,OAAQ,WAAW,OAAO,CAAC;;AAG9D,SAAgB,gBAAgB,MAA0B;CACxD,MAAM,EAAE,UAAU,MAAM;CACxB,MAAM,QAAQ,OAAO,KAAK,MAAM,EAAE,KAAK,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,KAAK,GAAG;CACpE,OAAO,EAAE,WAAW,WAChB,UAAU,KAAK,KAAK,GAAG,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,KAClE,UAAU,IAAI,KAAK,IAAI,EAAE,QAAQ,KAAK,MAAM,UAAU,MAAM;AAClE;AAEA,MAAM,eAAsD;CAC1D,MAAM;CACN,MAAM;CACN,OAAO;CACP,cAAc;AAChB;;;;;AAMA,SAAgB,gBAAgB,MAA0B;CACxD,MAAM,EAAE,UAAU,MAAM;CACxB,MAAM,QAAQ,OAAO,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE;CAChD,MAAM,QAAQ,KAAK,aACf,GAAG,KAAK,WAAW,YAAY,MAAM,KAAK,WAAW,YAAY,eACjE,GAAG,KAAK,MAAM;CAClB,MAAM,IAAI,KAAK,MAAM,OAAO,KAAK,OAAO,OAAO,KAAK,CAAC;CAErD,OAAO,GAAG,UADc,IAAI,KAAK,WAAW,EAAE,MAAM,IAAI,KAAK,WAAW,IACxD,SAAS,OAAO,KAAK,MAAM,EAAE,QAAQ,MAAM,YAAY,QAAQ,EAAE,GAAG,aAAa,KAAK;AACxG;AAEA,MAAM,cAAc,MAAc,MAChC,CAAC,KAAK,EAAE,UAAU,OACd,CAAC,IACD,CACE,GAAG,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,KAAK,mBAAmB,OAAO,EAAE,CAAC,IAAI,EAC/G;;;;;AAMN,SAAgB,kBAAkB,MAAiC;CACjE,MAAM,IAAI,KAAK;CACf,IAAI,CAAC,GAAG,OAAO;CACf,MAAM,QAAQ;EACZ,GAAG,WAAW,SAAS,EAAE,KAAK;EAC9B,GAAG,WAAW,cAAc,EAAE,OAAO;EACrC,GAAG,WAAW,UAAU,EAAE,MAAM;CAClC;CACA,OAAO,MAAM,SAAS,MAAM,KAAK,KAAK,IAAI;AAC5C;;AAGA,SAAgB,gBAAgB,QAA8B;CAC5D,MAAM,QACJ,OAAO,QAAQ,OAAO,QAAQ,GAAG,OAAO,MAAM,UAAU,GAAG,OAAO,IAAI,MAAM,OAAO,MAAM;CAC3F,OAAO,OAAO,MAAM,SAAS,GAAG,MAAM,aAAa;AACrD;;;;;AAMA,SAAgB,UAAU,UAAkB,MAAsB;CAEhE,MAAM,UAAU,CAAC,GAAG,SAAS,SAAS,iCAAW,CAAC;CAClD,MAAM,QAAQ,QAAQ;CACtB,MAAM,OAAO,QAAQ,GAAG,EAAE;CAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO;CAC5B,MAAM,SAAS,SAAS,MAAM,GAAG,MAAM,KAAK;CAC5C,MAAM,SAAS,SAAS,OAAO,KAAK,SAAS,KAAK,KAAK,EAAE,CAAC,MAAM;CAChE,IAAI,CAAC,KAAK,WAAW,MAAM,KAAK,CAAC,KAAK,SAAS,MAAM,GAAG,OAAO;CAE/D,OADc,KAAK,MAAM,OAAO,QAAQ,KAAK,SAAS,OAAO,MAClD,KAAK;AAClB;;AAGA,MAAa,eAAe,QAAkC,UAC5D,MACG,QAAQ,MAAM,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,CACzC,MAAM,GAAG,OAAO,EAAE,QAAQ,QAAQ,MAAM,EAAE,QAAQ,QAAQ,EAAE;;;;AC5DjE,MAAa,qBAAqB;;AA0KlC,MAAa,eAAe,SAC1B,KAAK,OAAO,QAAQ,QAAQ,IAAI,SAAS,SAAS,CAAC,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,UAAU,CAAC;;AAG5F,MAAa,aAAa,SACxB,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK,SAAS,YAAY,IAAI,CAAC;;;;;AAgF3D,SAAgB,SAAS,SAAe,SAAe,UAAmC;CACxF,IAAI,QAAQ,UAAA,KAAgC,QAAQ,UAAA,GAClD,OAAO;CAET,IAAI,QAAQ,OAAO,QAAQ,YAAY,QAAQ,OAAO,QAAQ,SAAS,OAAO;CAC9E,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,SAAS,MAAM,GAAG,OAAO;CAC7B,IAAI,SAAS,OAAO,GAAG,OAAO;CAC9B,OAAO;AACT;;AAGA,MAAM,aAAa,OAAyB;CAAE,MAAM,EAAE;CAAM,SAAS,EAAE,OAAO,EAAE;AAAK;;AAGrF,SAAgB,YAAY,SAAqB,SAA6B;CAC5E,MAAM,IAAI,UAAU,OAAO;CAC3B,MAAM,IAAI,UAAU,OAAO;CAC3B,IAAI,EAAE,YAAY,KAAK,EAAE,YAAY,GAAG,OAAO;CAC/C,MAAM,EAAE,KAAK,SAAS,aAAa;EAAE,MAAM,EAAE;EAAM,GAAG,EAAE;CAAQ,GAAG;EAAE,MAAM,EAAE;EAAM,GAAG,EAAE;CAAQ,CAAC;CACjG,OAAO,SAAS,GAAG,GAAG;EAAE,KAAK,OAAO,GAAG;EAAG,MAAM,OAAO,IAAI;CAAE,CAAC;AAChE;;AAGA,MAAa,eAAe,MAC1B,EAAE,QAAQ,MAAM,KAAK,CAAC,CAAC,QAAQ,OAAO,KAAK,CAAC,CAAC,QAAQ,OAAO,KAAK;AAEnE,MAAM,eAAe,MACnB;CAAC,EAAE;CAAS,EAAE;CAAa,EAAE;AAAO,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,KAAK,GAAG;AAEjE,MAAM,WAAW,MAAsC,EAAE,YAAY,UAAU,EAAE,YAAY;AAE7F,SAAgB,WACd,OACQ;CACR,MAAM,UAAU,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO;CAC5D,MAAM,SACJ,MAAM,MAAM,MAAM,EAAE,SAAS,SAAS,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO;CAC7F,OAAO,WAAW,SAAS,SAAS,UAAU,YAAY,SAAS,WAAW;AAChF;;AAGA,SAAS,UAAU,QAAmB,MAA4B;CAChE,MAAM,OAAO,OAAO,aAAa,QAAQ,MAAM,EAAE,WAAW,KAAK,iBAAiB;CAClF,MAAM,MAAM,KAAK,MAAM,MAAM,EAAE,SAAS,KAAK,WAAW,KAAK,KAAK;CAClE,IAAI,CAAC,KAAK,OAAO,CAAC;CAClB,OAAO,CACL,GAAG,IAAI,OAAO,KAAK,MAAM,EAAE,OAAO,QAAQ,WAAW,EAAE,CAAC,GACxD,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,IAAI,CAChC;AACF;;AAGA,SAAS,WAAW,GAAc,MAA0C;CAC1E,IAAI,KAAK,SAAS,WAAW,OAAO,KAAA;CACpC,MAAM,KAAK,KAAK,MAAM;CACtB,OAAO,KACH,EAAE,MAAM,MAAM,MAAM,EAAE,QAAQ,EAAE,IAChC,EAAE,MAAM,MACL,MAAM,EAAE,SAAS,aAAa,EAAE,YAAY,KAAK,WAAW,EAAE,YAAY,KAAK,OAClF;AACN;;AAGA,SAAS,eAAe,SAAyC;CAC/D,OAAO,CACL,GAAG,IAAI,IACL,QAAQ,SAAS,MAAM,EAAE,SAAS,SAAS,OAAO,EAAE,cAAc,CAAC,EAAA,CAAG,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CAC5F,CACF;AACF;AAEA,SAAS,SACP,GACA,MACA,UACA,MACA,UACe;CACf,MAAM,WAAW,EAAE,SAAS,QAAQ,MAAM,EAAE,SAAS,KAAK,OAAO,QAAQ,CAAC,CAAC;CAI3E,QADE,KAAK,UAAU,SAAS,KAAK,WAAW;EAAE;EAAO,MAAM;EAAG,MAAM;EAAG,OAAO;EAAG,QAAQ;CAAE,EAAE,EAAA,CAC5E,KAAK,GAAG,UAAU;EAC/B,MAAM,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;EAChC,MAAM,WAAW,SACd,SAAS,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAClC,QAAQ,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;EACjD,MAAM,aACH,SAAS,MAAM,MAAM,EAAE,WAAW,MAAM,KAAK,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,EAAA,EACnF,WAAW;EAEjB,MAAM,UAAU,WACX,SAAS,QAAQ,MAAM,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK;GACpD,MAAM;GACN,MAAM;GACN,OAAO;GACP,QAAQ;EACV,IACA,KAAA;EACJ,MAAM,SAAS,SAAS,SAAS,MAC/B,mBAAmB,CAAC,CAAC,CAClB,QAAQ,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAClC,KAAK,MAAM,EAAE,SAAS,CAC3B;EACA,MAAM,QAAQ,OAAO;EACrB,OAAO;GACL,MAAM,GAAG,KAAK,UAAU,YAAY,EAAE,KAAK;GAC3C,OAAO,EAAE;GACT;GACA,SACE,QAAQ,IACJ,EAAE,QAAQ,UAAU,IACpB;IACE,QAAQ;IACR,QAAQ,EAAE;IACV,QAAQ,EAAE;IACV,SAAS,EAAE;IACX,QAAQ,EAAE;IACV;GACF;GACN,QAAQ,UAAU,YAAY,GAAG,OAAO,IAAI;GAC5C,OAAO,QACH;IACE,UAAU,MAAM;IAChB,WAAW,MAAM;IACjB,QAAQ,OAAO,KAAK,MAAM,EAAE,KAAK;GACnC,IACA;EACN;CACF,CAAC;AACH;AAEA,MAAM,eAAe,SAAiB,gBAAgB,KAAK,IAAI;;;;;AAM/D,SAAgB,YAAY,MAAsB;CAChD,MAAM,CAAC,QAAQ,IAAI,QAAQ,KACxB,MAAM,IAAI,CAAC,CACX,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CACpB,OAAO,WAAW;CACrB,OAAO,MAAM,SAAS,GAAG,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,QAAQ,YAAY,EAAE,MAAM;AACpF;;;;;;AAOA,SAAS,SAAS,GAAc,MAA+B;CAC7D,MAAM,MAAmB,CAAC;CAC1B,MAAM,OAAO,MAAyB,SAAiB;EACrD,MAAM,UAAU,YAAY,IAAI;EAChC,MAAM,OAAO,IAAI,MAAM,MAAM,EAAE,SAAS,QAAQ,EAAE,YAAY,OAAO;EACrE,IAAI,MAAM,KAAK;OACV,IAAI,KAAK;GAAE;GAAM;GAAS,UAAU;EAAE,CAAC;CAC9C;CACA,KAAK,MAAM,KAAK,EAAE,UAAU;EAC1B,IAAI,EAAE,SAAS,KAAK,KAAK;EACzB,IAAI,EAAE,YAAY,UAAU,EAAE,YAAY,eAAe;EACzD,KAAK,MAAM,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,KAAK,OAAO,IAAI,QAAQ,KAAK,KAAK;EACxE,IAAI,CAAC,EAAE,OAAO;EAEd,KADgB,EAAE,MAAM,SAAS,eAAe,EAAE,MAAM,SAAS,aACjD,EAAE,cAAc,CAAC,EAAA,CAAG,MAAM,MAAM,EAAE,WAAW,MAAM,GAAG;EACtE,IAAI,EAAE,MAAM,MAAM,EAAE,MAAM,OAAO;CACnC;CACA,OAAO;AACT;AAEA,SAAS,cAAc,GAAc,MAAkB,UAA2C;CAChG,IAAI,CAAC,UAAU,OAAO;CACtB,MAAM,IAAI,eAAe,YAAY,GAAG,KAAK,GAAG,GAAG,YAAY,GAAG,SAAS,GAAG,CAAC;CAC/E,IAAI,CAAC,GAAG,OAAO;CACf,MAAM,SAAS,MAA4B,MAAM,WAAW,MAAM;CAClE,OAAO,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,WAAW,KAAK,MAAM,EAAE,aAAa;AAC1E;AAEA,SAAS,YAAY,GAAgC;CACnD,QAAQ,EAAE,WAAW,CAAC,EAAA,CAAG,KAAK,OAAO;EACnC,UAAU,EAAE;EACZ,OAAO,EAAE,MAAM;EACf,OAAO,EAAE,MAAM,KAAK,OAAO;GAAE,KAAK,EAAE;GAAK,MAAM,EAAE;GAAM,MAAM,EAAE;GAAM,GAAG,EAAE;EAAE,EAAE;EAC9E,OAAO,EAAE,SAAS;CACpB,EAAE;AACJ;AAEA,SAAS,SAAS,GAAc,MAAyC;CACvE,MAAM,SAAS,WAAW,GAAG,KAAK,GAAG;CACrC,IAAI,CAAC,UAAU,OAAO,IAAA,GAAwB,OAAO;CACrD,OAAO;EACL,OAAO,OAAO,MAAM;EACpB,SAAS,OAAO,QAAQ;EACxB,QAAQ,OAAO,QAAQ,UAAU;CACnC;AACF;;AAGA,SAAS,WACP,MACA,UACA,UACQ;CACR,IAAI,KAAK,MAAM,OAAO,SAAS,KAAK,KAAK,SAAS,KAAK,KAAK,SAAS,QAAQ;CAC7E,IAAI,CAAC,UAAU,OAAO;CACtB,OAAO,SACL;EAAE,MAAM,KAAK;EAAM,SAAS,KAAK,OAAO,KAAK;CAAK,GAClD;EAAE,MAAM,SAAS;EAAM,SAAS,SAAS,OAAO,SAAS;CAAK,GAC9D,IACF;AACF;AAEA,SAAS,QACP,QACA,GACA,QACA,UACc;CACd,MAAM,cAAc,EAAE,MAAM,MAAM,MAAM,EAAE,SAAS,SAAS;CAC5D,OAAO,EAAE,MAAM,KAAK,MAAM,UAAU;EAClC,MAAM,OAAO,GAAG,OAAO,GAAG,YAAY,IAAI;EAC1C,MAAM,WAAW,WAAW,GAAG,IAAI;EACnC,MAAM,WAAW,EAAE,SAAS,QAAQ,MAAM,EAAE,SAAS,KAAK,OAAO,QAAQ,CAAC,CAAC;EAC3E,MAAM,OAAO,KAAK;EAClB,MAAM,WAAW,OAAO;GAAE,KAAK,KAAK,SAAS;GAAI,MAAM,KAAK,SAAS;EAAG,IAAI;EAC5E,OAAO;GACL;GACA,KAAK,KAAK;GACV,SAAS,KAAK;GACd,aAAa,KAAK;GAClB,SAAS,KAAK;GACd,SAAS,KAAK,WAAW;GACzB,UAAU,eAAe,KAAK,SAAS;GACvC,IAAI,UAAU,OAAO;GACrB;GACA,OAAO,KAAK,SAAS;GACrB,SAAS,KAAK;GACd,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,SAAS,KAAK;GACd,aAAa,KAAK;GAClB,SAAS,UAAU,QAAQ,IAAI;GAC/B,QAAQ,SAAS,GAAG,MAAM,UAAU,MAAM,QAAQ;GAClD,QAAQ,KAAK,SAAS,YAAY,WAAW,MAAM,UAAU,QAAQ,IAAI;GACzE;GACA,SAAS,MAAM,WAAW;GAC1B,QAAQ,SAAS,GAAG,IAAI;GACxB,eAAe,KAAK,SAAS,aAAa,cAAc,GAAG,MAAM,QAAQ;GACzE,QAAQ,SAAS,GAAG,IAAI;GACxB,UAAU,SAAS,KAAK,MAAM,EAAE,SAAS,WAAW;GACpD,SAAS,SAAS,KAAK,MAAM,EAAE,SAAS,UAAU;EACpD;CACF,CAAC;AACH;AAEA,SAAS,aAAa,MAA0B;CAC9C,IAAI,KAAK,YAAY,kBAAkB,KAAK,QAAA,GAA4B,OAAO;CAC/E,IAAI,KAAK,gBAAgB,KAAK,aAAa,OAAO;CAClD,IAAI,KAAK,SAAS,KAAK,GAAG,OAAO;CACjC,IAAI,KAAK,SAAS,KAAK,GAAG,OAAO;CACjC,OAAO;AACT;;AAGA,SAAS,MAAM,UAA0C;CACvD,IAAI,SAAS,SAAS,MAAM,GAAG,OAAO;CACtC,IAAI,SAAS,SAAS,aAAa,GAAG,OAAO;CAC7C,IAAI,SAAS,SAAS,WAAW,GAAG,OAAO;CAC3C,IAAI,SAAS,UAAU,SAAS,OAAO,MAAM,MAAM,SAAS,GAAG,OAAO;CACtE,OAAO;AACT;;AAGA,SAAS,UAAU,GAA6B;CAC9C,IAAI,EAAE,YAAY,QAAQ,OAAO,EAAE;CACnC,MAAM,QAAQ,IAAI,IAAI,EAAE,MAAM,QAAQ,MAAM,EAAE,SAAS,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,CAAC;CAChF,MAAM,SAAS,EAAE,SAAS,QAAQ,MAAM,EAAE,YAAY,UAAU,MAAM,IAAI,EAAE,IAAI,CAAC;CACjF,OAAO,OAAO,UAAU,OAAO,OAAO,MAAM,EAAE,OAAO,SAAS,SAAS,IAAI,cAAc;AAC3F;;AAGA,SAAS,gBAAgB,OAA+C;CACtE,MAAM,sBAAM,IAAI,IAA4B;CAC5C,KAAK,MAAM,KAAK,MAAM,QAAQ,WAAW,GAAG;EAC1C,MAAM,OAAO,IAAI,IAAI,EAAE,QAAQ;EAC/B,IAAI,CAAC,MAAM;GACT,IAAI,IAAI,EAAE,UAAU;IAAE,GAAG;IAAG,OAAO,EAAE,MAAM,KAAK,OAAO,EAAE,GAAG,EAAE,EAAE;GAAE,CAAC;GACnE;EACF;EACA,KAAK,SAAS,EAAE;EAChB,KAAK,UAAU,EAAE;EACjB,KAAK,MAAM,KAAK,EAAE,OAAO;GACvB,MAAM,OAAO,KAAK,MAAM,MAAM,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI;GACxE,IAAI,CAAC,MAAM,KAAK,MAAM,KAAK,EAAE,GAAG,EAAE,CAAC;QAC9B;IACH,KAAK,QAAQ,EAAE;IACf,KAAK,KAAK,EAAE;GACd;EACF;CACF;CACA,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC;AACzB;AAEA,SAAS,aACP,QACA,QACA,OACA,OACY;CACZ,MAAM,OAAO,YAAY,OAAO,EAAE;CAClC,MAAM,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,QAAQ,QAAQ,MAAM,EAAE,QAAQ,QAAQ,EAAE;CACtF,MAAM,WAAW,eAAe,MAAM;CACtC,MAAM,UAAU,QAAgB,OAAO,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,MAAM,EAAE,QAAQ,GAAG;CACxF,MAAM,UAAU,OAAO,KAAK,MAAkB;EAC5C,MAAM,QAAQ,UAAU,OAAO,MAAM,EAAE,IAAI;EAC3C,MAAM,WAAW,GAAG,KAAK,GAAG,YAAY,KAAK;EAC7C,OAAO;GACL,MAAM;GACN,IAAI,EAAE;GACN;GACA,MAAM,EAAE;GACR,OAAO,EAAE,QAAQ,QAAQ;GACzB,SAAS,UAAU,CAAC;GACpB,OAAO,QAAQ,QAAQ,GAAG,UAAU,QAAQ;EAC9C;CACF,CAAC;CACD,OAAO;EACL;EACA,IAAI,OAAO;EACX,OAAO,OAAO;EACd,MAAM,OAAO;EACb,UAAU,OAAO;EACjB;EACA,QAAQ,WAAW,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC;EAChD,QAAQ;EACR,MAAM;EACN,SAAS,MAAM,CACb,GAAI,OAAO,YAAY,SAAS,CAAC,MAAe,IAAI,CAAC,GACrD,GAAG,QAAQ,KAAK,MAAM,EAAE,OAAO,CACjC,CAAC;EACD,OAAO;EACP,OAAO;EACP,QAAQ,OAAO,MAAM,KAAK,SAAS;GACjC,MAAM,OAAO,OAAO,KAAK,OAAO;GAChC,OAAO;IACL,MAAM,GAAG,KAAK,GAAG,OAAO,YAAY,IAAI,IAAI,YAAY,KAAK,OAAO;IACpE,KAAK,KAAK;IACV,IAAI,KAAK;IACT,QAAQ,aAAa,IAAI;IACzB,OAAO,KAAK;IACZ,UAAU;KAAE,KAAK,KAAK,SAAS;KAAI,MAAM,KAAK,SAAS;IAAG;IAC1D,SAAS,KAAK,WAAW;IACzB,SAAS,KAAK;GAChB;EACF,CAAC;EACD,WAAW,gBAAgB,MAAM;CACnC;AACF;AAEA,SAAS,WAAW,QAAmB,GAAc,OAA2B;CAC9E,MAAM,OAAO,YAAY,EAAE,EAAE;CAC7B,OAAO;EACL;EACA,IAAI,EAAE;EACN,OAAO,EAAE;EACT,MAAM,EAAE;EACR,UAAU;EACV;EACA,QAAQ,WAAW,EAAE,KAAK;EAC1B,QAAQ;EACR,MAAM,EAAE;EACR,SAAS,UAAU,CAAC;EACpB,OAAO,QAAQ,QAAQ,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;EACnD,OAAO;EACP,QAAQ;EACR,WAAW,YAAY,CAAC;CAC1B;AACF;AAEA,SAAS,QAAQ,OAA+B;CAC9C,MAAM,MAAgB,CAAC;CACvB,MAAM,QAAQ,MAAkB;EAC9B,IAAI,KAAK,EAAE,IAAI;EACf,KAAK,MAAM,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,IAAI;EACzC,IAAI,EAAE,QAAQ,IAAI,KAAK,GAAG,EAAE,KAAK,QAAQ;CAC3C;CACA,KAAK,MAAM,QAAQ,OACjB,KAAK,MAAM,KAAK,KAAK,OAAO;EAC1B,IAAI,KAAK,EAAE,IAAI;EACf,KAAK,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;EACrC,KAAK,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG;GAC7B,IAAI,KAAK,EAAE,IAAI;GACf,KAAK,MAAM,KAAK,EAAE,OAAO,KAAK,CAAC;EACjC;EACA,KAAK,MAAM,KAAK,EAAE,UAAU,CAAC,GAAG,IAAI,KAAK,EAAE,IAAI;CACjD;CAEF,OAAO;AACT;;AAGA,SAAgB,YAAY,QAAgC;CAC1D,MAAM,WAAW,IAAI,KAAK,OAAO,YAAY,CAAC,EAAA,CAAG,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CACtE,MAAM,yBAAS,IAAI,IAA0B;CAC7C,MAAM,uBAAO,IAAI,IAAY;CAC7B,MAAM,SAAS,OAAO,UAAU,CAAC;CACjC,MAAM,QAAoB;EACxB,QAAQ,OAAO;EACf,MAAM;EACN,MAAM;EACN,YAAY;EACZ,WAAW;EACX,SAAS;CACX;CACA,MAAM,SAAS,MAAqB;EAClC,IAAI,MAAM,eAAe,MAAM;OAC1B,MAAM,EAAE;CACf;CACA,KAAK,MAAM,KAAK,OAAO,OAAO;EAC5B,MAAM,QAAQ,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC;EACrC,OAAO,IAAI,EAAE,MAAM,KAAK;EACxB,MAAM,UAAU,CAAC,CAAC;EAClB,MAAM,SAAS,EAAE,UAAU,SAAS,IAAI,EAAE,OAAO,EAAE;EACnD,IAAI,CAAC,QAAQ;GACX,MAAM,KAAK,WAAW,QAAQ,GAAG,MAAM,MAAM,CAAC;GAC9C;EACF;EACA,IAAI,KAAK,IAAI,OAAO,EAAE,GAAG;EACzB,KAAK,IAAI,OAAO,EAAE;EAClB,IAAI,OAAO,YAAY,UAAU,OAAO,MAAM,MAAM,MAAM,EAAE,YAAY,MAAM,GAAG,MAAM;EACvF,MAAM,QAAQ,OAAO,MAAM,QAAQ,MAAM,EAAE,QAAQ,OAAO,OAAO,EAAE;EACnE,MAAM,KAAK,aAAa,QAAQ,QAAQ,OAAO,MAAM,MAAM,CAAC;CAC9D;CACA,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,CACtB,MAAM,CAAC,IAAI,CAAC,OAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAE,CAAC,CAChD,KAAK,CAAC,MAAM,YAAY;EAAE;EAAM;CAAM,EAAE;CAC3C,OAAO;EACL,OAAO,OAAO;EACd,QAAQ,OAAO;EACf,SAAS,WAAW,MAAM;EAC1B;EACA;EACA;EACA,OAAO,QAAQ,KAAK;CACtB;AACF"}