@sjcrh/proteinpaint-client 2.185.0 → 2.186.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 (848) hide show
  1. package/dist/2dmaf-F5QNP7AQ.js +1371 -0
  2. package/dist/AIProjectAdmin-ROSQHK6Q.js +827 -0
  3. package/dist/AIProjectAdmin-ROSQHK6Q.js.map +7 -0
  4. package/dist/AppHeader-STVCDLET.js +833 -0
  5. package/dist/BoxPlot-CU7MEBH7.js +1217 -0
  6. package/dist/CorrelationVolcano-OE4R2GS3.js +617 -0
  7. package/dist/DE-SR7PJPKI.js +93 -0
  8. package/dist/DEinput-PRIAIBFH.js +299 -0
  9. package/dist/DEinput-PRIAIBFH.js.map +7 -0
  10. package/dist/DifferentialAnalysis-UWTYK7NU.js +241 -0
  11. package/dist/Disco-IL6REGSA.js +3235 -0
  12. package/dist/Disco.UI-JHHLS5BA.js +242 -0
  13. package/dist/DmrPlot-DDP53T3F.js +640 -0
  14. package/dist/GB-F4LMYMHF.js +1127 -0
  15. package/dist/GB-F4LMYMHF.js.map +7 -0
  16. package/dist/GeneExpInput-ZWBC226P.js +363 -0
  17. package/dist/GeneExpInput-ZWBC226P.js.map +7 -0
  18. package/dist/HicApp-RVFHTYED.js +2248 -0
  19. package/dist/NumBinaryEditor-B3FXQAOH.js +268 -0
  20. package/dist/NumBinaryEditor.unit.spec-75YQJ2U6.js +284 -0
  21. package/dist/NumContEditor-5PYW3OLY.js +105 -0
  22. package/dist/NumContEditor.unit.spec-F7ZRDGBN.js +167 -0
  23. package/dist/NumCustomBinEditor-TBT6GLYQ.js +36 -0
  24. package/dist/NumCustomBinEditor.unit.spec-6YHU45XV.js +282 -0
  25. package/dist/NumDiscreteEditor-N6OJYSJA.js +177 -0
  26. package/dist/NumDiscreteEditor.unit.spec-HQS5RZ6R.js +200 -0
  27. package/dist/NumRegularBinEditor-HSDDKVNG.js +36 -0
  28. package/dist/NumRegularBinEditor.unit.spec-33KN2MVM.js +225 -0
  29. package/dist/NumSplineEditor-XERKOACS.js +190 -0
  30. package/dist/NumSplineEditor.unit.spec-MPVM6KSC.js +197 -0
  31. package/dist/NumericDensity-35EKYW3V.js +36 -0
  32. package/dist/NumericDensity.unit.spec-OR24PPRJ.js +219 -0
  33. package/dist/NumericHandler-D6ZNGRE3.js +37 -0
  34. package/dist/NumericHandler.unit.spec-EKPGVSXI.js +217 -0
  35. package/dist/RunChart2-7DOXOFXV.js +756 -0
  36. package/dist/SC-APZRV4H6.js +826 -0
  37. package/dist/SC-APZRV4H6.js.map +7 -0
  38. package/dist/Volcano-X4ZWK644.js +1344 -0
  39. package/dist/Volcano-X4ZWK644.js.map +7 -0
  40. package/dist/WSIViewer-E247ELKN.js +47971 -0
  41. package/dist/WsiSamplesPlot-3522VRB5.js +163 -0
  42. package/dist/adSandbox-IDFY5P2P.js +36 -0
  43. package/dist/alphaGenome-F3W7GJQ5.js +173 -0
  44. package/dist/app-2HDSFMRM.js +47 -0
  45. package/dist/app-LIWPFL7C.js +35 -0
  46. package/dist/app.js +10 -10
  47. package/dist/bam-TBHHSATL.js +857 -0
  48. package/dist/barchart-HHFCBOZE.js +45 -0
  49. package/dist/barchart.events-UQUSSRXB.js +45 -0
  50. package/dist/barchart.integration.spec-OF3MWFQ5.js +1675 -0
  51. package/dist/barchart2-XRMPCBBU.js +309 -0
  52. package/dist/block-5UEORHFB.js +6200 -0
  53. package/dist/block.init-QSSFUVIT.js +36 -0
  54. package/dist/block.mds.expressionrank-VBIIJHQF.js +357 -0
  55. package/dist/block.mds.geneboxplot-KSBHXBNX.js +826 -0
  56. package/dist/block.mds.junction-FWZWMZJ2.js +1543 -0
  57. package/dist/block.mds.svcnv-UXORVLH2.js +6799 -0
  58. package/dist/block.svg-6KIGW4QH.js +162 -0
  59. package/dist/block.tk.aicheck-DK566Q4C.js +281 -0
  60. package/dist/block.tk.ase-2GB2VJJ6.js +363 -0
  61. package/dist/block.tk.bam-RQNOLY52.js +1904 -0
  62. package/dist/block.tk.bedgraphdot-N4YMZFO4.js +382 -0
  63. package/dist/block.tk.bigwig.ui-4S7L7D7D.js +209 -0
  64. package/dist/block.tk.hicstraw-AHFNQKCS.js +821 -0
  65. package/dist/block.tk.junction-7E6SNQMQ.js +2362 -0
  66. package/dist/block.tk.junction.textmatrixui-3C5JVYX5.js +197 -0
  67. package/dist/block.tk.ld-TOUCLT3W.js +97 -0
  68. package/dist/block.tk.menu-JCV5ORD6.js +1027 -0
  69. package/dist/block.tk.pgv-CUU22U6M.js +942 -0
  70. package/dist/brainImaging-MTQTXNNL.js +421 -0
  71. package/dist/chunk-2UYBBUXK.js +293 -0
  72. package/dist/chunk-2VPEFXEJ.js +4207 -0
  73. package/dist/chunk-2YC6ZVE4.js +20377 -0
  74. package/dist/chunk-2YC6ZVE4.js.map +7 -0
  75. package/dist/chunk-37MD3Y5G.js +1230 -0
  76. package/dist/chunk-37MD3Y5G.js.map +7 -0
  77. package/dist/chunk-3QHIL3V3.js +55 -0
  78. package/dist/chunk-44VXWKYJ.js +129 -0
  79. package/dist/chunk-52D6EGUS.js +95 -0
  80. package/dist/chunk-5FHM3L4I.js +102 -0
  81. package/dist/chunk-62TF2MCH.js +142 -0
  82. package/dist/chunk-67QM2NUK.js +6364 -0
  83. package/dist/chunk-6AAPHEWK.js +676 -0
  84. package/dist/chunk-6KPGMUHS.js +153 -0
  85. package/dist/chunk-6WBIZXNI.js +455 -0
  86. package/dist/chunk-7AAJVXEG.js +302 -0
  87. package/dist/chunk-AFJRAR4N.js +1271 -0
  88. package/dist/chunk-BBNO6JLO.js +200 -0
  89. package/dist/chunk-BBNO6JLO.js.map +7 -0
  90. package/dist/chunk-CVRYZMDE.js +148 -0
  91. package/dist/chunk-DGUTCYH2.js +276 -0
  92. package/dist/chunk-DHNXATHC.js +158 -0
  93. package/dist/chunk-DXHATYHE.js +180 -0
  94. package/dist/chunk-DXHATYHE.js.map +7 -0
  95. package/dist/chunk-E3BI23UK.js +229 -0
  96. package/dist/chunk-E4JDHA3C.js +621 -0
  97. package/dist/chunk-FOJWYEGV.js +228 -0
  98. package/dist/chunk-FTN7Y34O.js +158 -0
  99. package/dist/chunk-GAOUV4ID.js +1943 -0
  100. package/dist/chunk-GAOUV4ID.js.map +7 -0
  101. package/dist/chunk-GRG5MMPN.js +2815 -0
  102. package/dist/chunk-GSU4PZN3.js +482 -0
  103. package/dist/chunk-I55NLUCQ.js +1823 -0
  104. package/dist/chunk-I55NLUCQ.js.map +7 -0
  105. package/dist/chunk-IIRU2JLK.js +217 -0
  106. package/dist/chunk-JCB74ZSK.js +272 -0
  107. package/dist/chunk-JUDWPYMA.js +824 -0
  108. package/dist/chunk-KT6VZBC7.js +1087 -0
  109. package/dist/chunk-L2HBHFTK.js +2370 -0
  110. package/dist/chunk-LKADRF3Q.js +368 -0
  111. package/dist/chunk-MAXFRUGM.js +407 -0
  112. package/dist/chunk-MQN7RYCK.js +37 -0
  113. package/dist/chunk-OEUI4CYZ.js +470 -0
  114. package/dist/chunk-OM36XUQL.js +34 -0
  115. package/dist/chunk-P5LNIH5X.js +54 -0
  116. package/dist/chunk-PG62PRMF.js +102 -0
  117. package/dist/chunk-Q3J3F2NU.js +205 -0
  118. package/dist/chunk-RYCOJY7M.js +188 -0
  119. package/dist/chunk-RYCOJY7M.js.map +7 -0
  120. package/dist/chunk-RZBV6474.js +117 -0
  121. package/dist/chunk-T5V4OC27.js +442 -0
  122. package/dist/chunk-TXJG4N6S.js +4992 -0
  123. package/dist/chunk-TXJG4N6S.js.map +7 -0
  124. package/dist/chunk-UCKSUNSJ.js +335 -0
  125. package/dist/chunk-W4TLYHZO.js +514 -0
  126. package/dist/chunk-WPZUXKIB.js +56 -0
  127. package/dist/chunk-XM47XD6G.js +215 -0
  128. package/dist/chunk-XVA3UOWD.js +263 -0
  129. package/dist/chunk-XVA3UOWD.js.map +7 -0
  130. package/dist/chunk-YIMRBXQK.js +1210 -0
  131. package/dist/chunk-YIMRBXQK.js.map +7 -0
  132. package/dist/chunk-YL7VT4QT.js +1159 -0
  133. package/dist/chunk-YL7VT4QT.js.map +7 -0
  134. package/dist/chunk-YWBUK4B7.js +291 -0
  135. package/dist/chunk-YWBUK4B7.js.map +7 -0
  136. package/dist/chunk-YZHGLSKQ.js +50 -0
  137. package/dist/chunk-ZGOOZK3I.js +203 -0
  138. package/dist/chunk-ZH2VP6Q6.js +95 -0
  139. package/dist/chunk-ZLOQXO5K.js +14 -0
  140. package/dist/chunk-ZMNDBPJU.js +100 -0
  141. package/dist/chunk-ZRTW6X3F.js +2784 -0
  142. package/dist/chunk-ZTT52MBP.js +2681 -0
  143. package/dist/condition-VUACUQYF.js +330 -0
  144. package/dist/controls-N4MPSNO4.js +39 -0
  145. package/dist/controls.config-PRXVODCM.js +37 -0
  146. package/dist/correlation-QJZUYDFH.js +96 -0
  147. package/dist/cuminc-JJHXW55V.js +1147 -0
  148. package/dist/cuminc.integration.spec-IXS2UO2O.js +676 -0
  149. package/dist/customdata.inputui-DUHO6M6I.js +287 -0
  150. package/dist/dataDownload-OFB7TYDB.js +328 -0
  151. package/dist/dataDownload.integration.spec-4HWDQO4C.js +191 -0
  152. package/dist/databrowser.ui-FGZ5SWG3.js +430 -0
  153. package/dist/databrowser.ui-FGZ5SWG3.js.map +7 -0
  154. package/dist/dictionary-BSKN37CP.js +109 -0
  155. package/dist/dnaMethylation-5QNEEGC6.js +36 -0
  156. package/dist/dnaMethylation.integration.spec-YIX3JSA7.js +201 -0
  157. package/dist/dofetch-KFMGQY7G.js +50 -0
  158. package/dist/e2pca-VX42HDYZ.js +348 -0
  159. package/dist/ep-B6ZNETLI.js +1254 -0
  160. package/dist/expclust.gdc.spec-SGECIILQ.js +305 -0
  161. package/dist/facet-2W5SBPGP.js +519 -0
  162. package/dist/gb-67KTSE2W.js +86 -0
  163. package/dist/gb-67KTSE2W.js.map +7 -0
  164. package/dist/geneExpClustering-6A7364T5.js +247 -0
  165. package/dist/geneExpression-NAM2UEYN.js +36 -0
  166. package/dist/geneExpression-WF56ODMZ.js +312 -0
  167. package/dist/geneExpression.unit.spec-DNE2T3WI.js +100 -0
  168. package/dist/geneORA-33FK2YOS.js +276 -0
  169. package/dist/geneVariant-C7PCNBOQ.js +37 -0
  170. package/dist/geneVariant-REELFRRA.js +39 -0
  171. package/dist/geneVariant.integration.spec-GNXUGDKL.js +196 -0
  172. package/dist/genefusion.ui-WO5EPJDS.js +306 -0
  173. package/dist/geneset-4C6ZLVMN.js +201 -0
  174. package/dist/geneset-4C6ZLVMN.js.map +7 -0
  175. package/dist/genomeBrowser.spec-VPAKTUJF.js +279 -0
  176. package/dist/grin2-AJFEBD43.js +852 -0
  177. package/dist/grin2-AJFEBD43.js.map +7 -0
  178. package/dist/grin2-GYHUYNEF.js +1554 -0
  179. package/dist/gsea-PE5WZ5ZI.js +45 -0
  180. package/dist/hierCluster-FH6YJHRT.js +61 -0
  181. package/dist/hierCluster-IFM5I5QN.js +57 -0
  182. package/dist/hierCluster.config-M57ZIWMB.js +38 -0
  183. package/dist/hierCluster.integration.spec-Z64RL7MC.js +393 -0
  184. package/dist/hierCluster.interactivity-CDBAJXOY.js +52 -0
  185. package/dist/imagePlot-NFEE6IGV.js +161 -0
  186. package/dist/imagePlot-NFEE6IGV.js.map +7 -0
  187. package/dist/importPlot-OWKXSK77.js +8 -0
  188. package/dist/isoformExpression-66XLJG73.js +38 -0
  189. package/dist/isoformExpression.unit.spec-QJX2IRHL.js +206 -0
  190. package/dist/launch.adhoc-JCWID253.js +40 -0
  191. package/dist/leftlabel.sample-5NZ6VQDN.js +257 -0
  192. package/dist/lollipop-BPFDEM2R.js +169 -0
  193. package/dist/lollipop-BPFDEM2R.js.map +7 -0
  194. package/dist/maf-HIS2FQXK.js +450 -0
  195. package/dist/maftimeline-UPJJQE23.js +591 -0
  196. package/dist/matrix-62CN2KXR.js +56 -0
  197. package/dist/matrix-SPEDEB3J.js +61 -0
  198. package/dist/matrix.config-XB6WFXUY.js +39 -0
  199. package/dist/matrix.integration.spec-NN7OR5XM.js +3070 -0
  200. package/dist/matrix.interactivity-OWMHUJCX.js +40 -0
  201. package/dist/matrix.layout-27QB6MWK.js +42 -0
  202. package/dist/matrix.renderers-EPXES5E4.js +36 -0
  203. package/dist/matrix.sort.unit.spec-NBT5FSZ6.js +470 -0
  204. package/dist/matrix.sorterUi.unit.spec-QKGUE4RR.js +340 -0
  205. package/dist/mavb-M7Y74OWQ.js +730 -0
  206. package/dist/mds.fimo-WCDFA7HG.js +516 -0
  207. package/dist/mds.samplescatterplot-ZDHQ3MKJ.js +1548 -0
  208. package/dist/mds.survivalplot-R74DL2RA.js +481 -0
  209. package/dist/oncomatrix-MOITJBII.js +293 -0
  210. package/dist/oncomatrix.spec-NALJBPYS.js +446 -0
  211. package/dist/plot.2dvaf-IE2EZEFA.js +375 -0
  212. package/dist/plot.app-HTW6TZEH.js +39 -0
  213. package/dist/plot.barplot-NCQEPEOY.js +100 -0
  214. package/dist/plot.boxplot-WNKVBVJJ.js +150 -0
  215. package/dist/plot.brainImaging-2Z3TOO6J.js +51 -0
  216. package/dist/plot.disco-4JAEIAYK.js +101 -0
  217. package/dist/plot.dzi-ZGLOVJJN.js +33 -0
  218. package/dist/plot.ssgq-IHUILM43.js +137 -0
  219. package/dist/plot.vaf2cov-ZYCQMD27.js +257 -0
  220. package/dist/plot.wsi-3GISVBDH.js +36 -0
  221. package/dist/polar-4AUAZHBV.js +184 -0
  222. package/dist/polar2-SRD4WWXU.js +226 -0
  223. package/dist/profile.spec-TOITKBBZ.js +78 -0
  224. package/dist/profileBarchart-Z4SYIYBE.js +265 -0
  225. package/dist/profileForms-RA7XQ2QT.js +438 -0
  226. package/dist/profilePlot-4BM3XZVK.js +52 -0
  227. package/dist/profileRadar-EYBESEPI.js +261 -0
  228. package/dist/profileRadarFacility-FZYTFM26.js +261 -0
  229. package/dist/proteinView-F6XKT2A5.js +1122 -0
  230. package/dist/proteinView-F6XKT2A5.js.map +7 -0
  231. package/dist/proteomeAbundance-3RJMRXYI.js +68 -0
  232. package/dist/proteomeAbundance-3RJMRXYI.js.map +7 -0
  233. package/dist/proteomeAbundance-65R6M4YQ.js +21 -0
  234. package/dist/qualitative-E7WL6DN4.js +41 -0
  235. package/dist/radar2-I6FN5SUX.js +314 -0
  236. package/dist/radarFacility2-GVK7PT3V.js +323 -0
  237. package/dist/regression-TIR5D354.js +54 -0
  238. package/dist/regression.inputs-2AMJCJ3L.js +46 -0
  239. package/dist/regression.inputs.term-D6D2QEUB.js +46 -0
  240. package/dist/regression.inputs.values.table-M3IPLGDJ.js +43 -0
  241. package/dist/regression.integration.spec-ROUSXLMH.js +782 -0
  242. package/dist/regression.results-YD5S74YS.js +38 -0
  243. package/dist/regression.spec-4OXBBTNO.js +706 -0
  244. package/dist/report-ETNALKTY.js +220 -0
  245. package/dist/sampleScatter.spec-LECMFMI2.js +200 -0
  246. package/dist/sampleView-B5TM7JOW.js +46 -0
  247. package/dist/samplelst-GFQCG4SS.js +109 -0
  248. package/dist/samplematrix-OMTNWCJK.js +2196 -0
  249. package/dist/sc-MIEEZBWG.js +84 -0
  250. package/dist/scatter-ETOZ722F.js +800 -0
  251. package/dist/scatter.integration.spec-TS4PNRLX.js +1194 -0
  252. package/dist/selectGenomeWithTklst-Y5QIM2JB.js +132 -0
  253. package/dist/singleCellCellType-HOJHZF5W.js +36 -0
  254. package/dist/singleCellCellType.unit.spec-MH5V3RPX.js +158 -0
  255. package/dist/singleCellGeneExpression-YVQ5TIKN.js +36 -0
  256. package/dist/singleCellGeneExpression.unit.spec-BMFFT5HO.js +151 -0
  257. package/dist/singleCellPlot-3YFUYA2Y.js +51 -0
  258. package/dist/singlecell-FK5JETW5.js +1570 -0
  259. package/dist/singlecell-RL7V7DIC.js +84 -0
  260. package/dist/snp-FT7HB3XN.js +36 -0
  261. package/dist/snp.unit.spec-CLYVYPPG.js +174 -0
  262. package/dist/snplocus-M5SEQGAC.js +206 -0
  263. package/dist/spliceevent.a53ss.diagram-EJ5CTRCZ.js +149 -0
  264. package/dist/spliceevent.exonskip.diagram-ETXMOHZ3.js +275 -0
  265. package/dist/spliceevent.noeventdiagram-S2O4ZM2Z.js +458 -0
  266. package/dist/ssGSEA-6PMDQDTJ.js +36 -0
  267. package/dist/ssGSEA.unit.spec-JD5T4R2N.js +86 -0
  268. package/dist/summarizeCnvGeneexp-GCHNKTIU.js +161 -0
  269. package/dist/summarizeGeneexpSurvival-R2RYQZ3M.js +106 -0
  270. package/dist/summarizeMutationCnv-LB2BIYRL.js +162 -0
  271. package/dist/summarizeMutationDiagnosis-3JUY75LM.js +38 -0
  272. package/dist/summarizeMutationSurvival-VYLRWTCF.js +97 -0
  273. package/dist/summary-2QQ72IEQ.js +47 -0
  274. package/dist/summary.integration.spec-XXU362UQ.js +412 -0
  275. package/dist/summaryInput-OZHZG3PV.js +233 -0
  276. package/dist/sunburst-CMCJCANX.js +282 -0
  277. package/dist/survival-EBD4DHO7.js +44 -0
  278. package/dist/survival-ISLRRPKU.js +56 -0
  279. package/dist/survival.integration.spec-FS7V4OXK.js +800 -0
  280. package/dist/svgraph-KGLNUM7W.js +1385 -0
  281. package/dist/svmr-NXZ5VLKH.js +3840 -0
  282. package/dist/table-ISOQOI6C.js +198 -0
  283. package/dist/termCollection-7ZSU3I45.js +36 -0
  284. package/dist/termCollection-V2A5BDQB.js +177 -0
  285. package/dist/termCollection.unit.spec-6VLCJGOU.js +206 -0
  286. package/dist/tk-6AB6XYIE.js +44 -0
  287. package/dist/tp.ui-2O4UW5N7.js +1457 -0
  288. package/dist/tvs.dt-CY6TOQVB.js +37 -0
  289. package/dist/tvs.dtcnv.categorical-AYQ432TW.js +38 -0
  290. package/dist/tvs.dtcnv.continuous-XVDL6SG3.js +70 -0
  291. package/dist/tvs.dtfusion-V3AV7A6Q.js +38 -0
  292. package/dist/tvs.dtsnvindel-XM3NXIT7.js +38 -0
  293. package/dist/tvs.dtsv-Z2GYRINW.js +38 -0
  294. package/dist/tvs.samplelst-C4FB63G7.js +102 -0
  295. package/dist/tvs.termCollection-VHTSC2ST.js +157 -0
  296. package/dist/violin-KGGTUQFF.js +44 -0
  297. package/dist/violin.integration.spec-5EW6PLJX.js +1423 -0
  298. package/dist/violin.interactivity-RI4RURGO.js +36 -0
  299. package/dist/violin.renderer-EWU2IFZE.js +38 -0
  300. package/dist/vocabulary-VLIGC7OP.js +39 -0
  301. package/package.json +3 -3
  302. package/src/databrowser/dictionary.parse.js +14 -2
  303. package/dist/2dmaf-X7LATQT7.js +0 -1371
  304. package/dist/AIProjectAdmin-GUBKURGO.js +0 -830
  305. package/dist/AIProjectAdmin-GUBKURGO.js.map +0 -7
  306. package/dist/AppHeader-RDOFP322.js +0 -833
  307. package/dist/BoxPlot-AZF2EMGQ.js +0 -1217
  308. package/dist/CorrelationVolcano-VXW35SXU.js +0 -617
  309. package/dist/DE-NLGMZ44O.js +0 -93
  310. package/dist/DEinput-OJ7P4UMP.js +0 -297
  311. package/dist/DEinput-OJ7P4UMP.js.map +0 -7
  312. package/dist/DifferentialAnalysis-G75VUHDI.js +0 -241
  313. package/dist/Disco-DX4S44SI.js +0 -3235
  314. package/dist/Disco.UI-5FYIACCU.js +0 -242
  315. package/dist/DmrPlot-HWYITHK2.js +0 -640
  316. package/dist/GB-DBTMRVYH.js +0 -1125
  317. package/dist/GB-DBTMRVYH.js.map +0 -7
  318. package/dist/GeneExpInput-DWB7OYT2.js +0 -335
  319. package/dist/GeneExpInput-DWB7OYT2.js.map +0 -7
  320. package/dist/HicApp-XPZVZXB7.js +0 -2248
  321. package/dist/NumBinaryEditor-M6MJYIHK.js +0 -268
  322. package/dist/NumBinaryEditor.unit.spec-W6MMYDAW.js +0 -284
  323. package/dist/NumContEditor-YRVENTS5.js +0 -105
  324. package/dist/NumContEditor.unit.spec-A6OH4TI7.js +0 -167
  325. package/dist/NumCustomBinEditor-BLBOYSCQ.js +0 -36
  326. package/dist/NumCustomBinEditor.unit.spec-55V5CKLB.js +0 -282
  327. package/dist/NumDiscreteEditor-DTRM6VL2.js +0 -177
  328. package/dist/NumDiscreteEditor.unit.spec-YMB6QRER.js +0 -200
  329. package/dist/NumRegularBinEditor-XW4SVA7S.js +0 -36
  330. package/dist/NumRegularBinEditor.unit.spec-VAHC3VOD.js +0 -225
  331. package/dist/NumSplineEditor-H22HTRFR.js +0 -190
  332. package/dist/NumSplineEditor.unit.spec-4JUADXZR.js +0 -197
  333. package/dist/NumericDensity-ECSZCQRX.js +0 -36
  334. package/dist/NumericDensity.unit.spec-SXXCXM4X.js +0 -219
  335. package/dist/NumericHandler-CMBN3FZX.js +0 -37
  336. package/dist/NumericHandler.unit.spec-UYTJG2Z2.js +0 -217
  337. package/dist/RunChart2-MVFWLXZX.js +0 -756
  338. package/dist/SC-BRC3J2O4.js +0 -797
  339. package/dist/SC-BRC3J2O4.js.map +0 -7
  340. package/dist/Volcano-WMNFZSX2.js +0 -1234
  341. package/dist/Volcano-WMNFZSX2.js.map +0 -7
  342. package/dist/WSIViewer-2Z636FMA.js +0 -47971
  343. package/dist/WsiSamplesPlot-LN75PND3.js +0 -163
  344. package/dist/adSandbox-AJ7QUDOI.js +0 -36
  345. package/dist/alphaGenome-PVCRXAQK.js +0 -173
  346. package/dist/app-DWYCAFRP.js +0 -47
  347. package/dist/app-RENXV7VR.js +0 -35
  348. package/dist/bam-5G6IT6OX.js +0 -857
  349. package/dist/barchart-MLCCU6SU.js +0 -45
  350. package/dist/barchart.events-B6HQTLK2.js +0 -45
  351. package/dist/barchart.integration.spec-S43A7C7N.js +0 -1675
  352. package/dist/barchart2-QMKEN6MN.js +0 -309
  353. package/dist/block-IGBB4BJH.js +0 -6200
  354. package/dist/block.init-NLCYAKV4.js +0 -36
  355. package/dist/block.mds.expressionrank-TZWGRDY7.js +0 -357
  356. package/dist/block.mds.geneboxplot-OAFROYDL.js +0 -826
  357. package/dist/block.mds.junction-NSLXTW3D.js +0 -1543
  358. package/dist/block.mds.svcnv-ICPG4BW6.js +0 -6799
  359. package/dist/block.svg-DTFVIAAC.js +0 -162
  360. package/dist/block.tk.aicheck-ZIMIBWHA.js +0 -281
  361. package/dist/block.tk.ase-I7UNK5BK.js +0 -363
  362. package/dist/block.tk.bam-W7JG46RS.js +0 -1904
  363. package/dist/block.tk.bedgraphdot-XAQJPKGJ.js +0 -382
  364. package/dist/block.tk.bigwig.ui-YQOJPJSG.js +0 -209
  365. package/dist/block.tk.hicstraw-OWWGGCHU.js +0 -821
  366. package/dist/block.tk.junction-V63ZQQX6.js +0 -2362
  367. package/dist/block.tk.junction.textmatrixui-B7KXX7WN.js +0 -197
  368. package/dist/block.tk.ld-2J6CT74S.js +0 -97
  369. package/dist/block.tk.menu-6AQLG7PW.js +0 -1027
  370. package/dist/block.tk.pgv-4V6PKVCQ.js +0 -942
  371. package/dist/brainImaging-WRBGYLHK.js +0 -421
  372. package/dist/chat-X2BCTEDF.js +0 -148
  373. package/dist/chat-X2BCTEDF.js.map +0 -7
  374. package/dist/chunk-23VG37CB.js +0 -1939
  375. package/dist/chunk-23VG37CB.js.map +0 -7
  376. package/dist/chunk-2VOHINOC.js +0 -262
  377. package/dist/chunk-2VOHINOC.js.map +0 -7
  378. package/dist/chunk-3AK6GP4M.js +0 -215
  379. package/dist/chunk-3B7EWIVB.js +0 -153
  380. package/dist/chunk-3JAC5CHL.js +0 -407
  381. package/dist/chunk-3QBZ2Y77.js +0 -188
  382. package/dist/chunk-3QBZ2Y77.js.map +0 -7
  383. package/dist/chunk-3T2PCWII.js +0 -442
  384. package/dist/chunk-4BTAI6HQ.js +0 -100
  385. package/dist/chunk-4JVNATQR.js +0 -621
  386. package/dist/chunk-4ZCR6CPK.js +0 -4964
  387. package/dist/chunk-4ZCR6CPK.js.map +0 -7
  388. package/dist/chunk-5MW5VMWD.js +0 -2784
  389. package/dist/chunk-5ZBEDKBD.js +0 -158
  390. package/dist/chunk-65YTZS3R.js +0 -203
  391. package/dist/chunk-6ZCHECOT.js +0 -1816
  392. package/dist/chunk-6ZCHECOT.js.map +0 -7
  393. package/dist/chunk-73ZT6NAT.js +0 -34
  394. package/dist/chunk-7HJ6H7AZ.js +0 -2681
  395. package/dist/chunk-AFXYPMFZ.js +0 -117
  396. package/dist/chunk-BL4ALBZ7.js +0 -37
  397. package/dist/chunk-BRCDZJBQ.js +0 -824
  398. package/dist/chunk-EBGX226R.js +0 -205
  399. package/dist/chunk-EHXI36HJ.js +0 -2815
  400. package/dist/chunk-ENP4FLOX.js +0 -293
  401. package/dist/chunk-FDOSJKDA.js +0 -1209
  402. package/dist/chunk-FDOSJKDA.js.map +0 -7
  403. package/dist/chunk-HP2BASCY.js +0 -1159
  404. package/dist/chunk-HP2BASCY.js.map +0 -7
  405. package/dist/chunk-HROKXT4K.js +0 -14
  406. package/dist/chunk-HTMXVOTH.js +0 -482
  407. package/dist/chunk-IA7S4UL5.js +0 -302
  408. package/dist/chunk-JFIOYO3M.js +0 -272
  409. package/dist/chunk-JMJW3ERE.js +0 -470
  410. package/dist/chunk-K7XWZSQA.js +0 -148
  411. package/dist/chunk-KSN3EVKI.js +0 -102
  412. package/dist/chunk-L5SOHZ5V.js +0 -229
  413. package/dist/chunk-LMGE54CQ.js +0 -54
  414. package/dist/chunk-LOMVTHAM.js +0 -95
  415. package/dist/chunk-MSW7OS2O.js +0 -276
  416. package/dist/chunk-MVCGSYS2.js +0 -50
  417. package/dist/chunk-N2HBIQKU.js +0 -102
  418. package/dist/chunk-NL3DVEVX.js +0 -158
  419. package/dist/chunk-O4WJSZC3.js +0 -1087
  420. package/dist/chunk-OLUDD6EC.js +0 -2370
  421. package/dist/chunk-OVPVPPRG.js +0 -55
  422. package/dist/chunk-OYEISJSJ.js +0 -289
  423. package/dist/chunk-OYEISJSJ.js.map +0 -7
  424. package/dist/chunk-P2JDCMXW.js +0 -4207
  425. package/dist/chunk-PMDXCESS.js +0 -514
  426. package/dist/chunk-PXYYICV7.js +0 -1271
  427. package/dist/chunk-PZ3KIUWJ.js +0 -56
  428. package/dist/chunk-QEWMCAJW.js +0 -335
  429. package/dist/chunk-QLWDUZ5K.js +0 -129
  430. package/dist/chunk-QRSIID3T.js +0 -95
  431. package/dist/chunk-ST644IDH.js +0 -217
  432. package/dist/chunk-UOOMFM7K.js +0 -6364
  433. package/dist/chunk-VGHSLILD.js +0 -368
  434. package/dist/chunk-W35IOI74.js +0 -228
  435. package/dist/chunk-XKF4KMCB.js +0 -146
  436. package/dist/chunk-XKF4KMCB.js.map +0 -7
  437. package/dist/chunk-XVDWYTJ6.js +0 -676
  438. package/dist/chunk-YQVEBFGT.js +0 -455
  439. package/dist/chunk-YWUVCXFS.js +0 -20271
  440. package/dist/chunk-YWUVCXFS.js.map +0 -7
  441. package/dist/chunk-ZT3PB4XX.js +0 -1150
  442. package/dist/chunk-ZT3PB4XX.js.map +0 -7
  443. package/dist/chunk-ZVSXHCGP.js +0 -142
  444. package/dist/condition-CZX2GSN4.js +0 -330
  445. package/dist/controls-BQR3WY5W.js +0 -39
  446. package/dist/controls.config-TAVZDHFZ.js +0 -37
  447. package/dist/correlation-BIWVZNC6.js +0 -96
  448. package/dist/cuminc-EDXOOI5R.js +0 -1147
  449. package/dist/cuminc.integration.spec-UZA7BDTB.js +0 -676
  450. package/dist/customdata.inputui-PEB4CE7J.js +0 -287
  451. package/dist/dataDownload-KANEHJXJ.js +0 -328
  452. package/dist/dataDownload.integration.spec-23WLHSWJ.js +0 -191
  453. package/dist/databrowser.ui-B2TNECC4.js +0 -419
  454. package/dist/databrowser.ui-B2TNECC4.js.map +0 -7
  455. package/dist/dictionary-YOTUFVES.js +0 -109
  456. package/dist/dnaMethylation-TRFAZWRJ.js +0 -36
  457. package/dist/dnaMethylation.integration.spec-SPFZO76D.js +0 -201
  458. package/dist/dofetch-MH4MRMGY.js +0 -50
  459. package/dist/e2pca-AFVAFUJ2.js +0 -348
  460. package/dist/ep-4FXTLWB4.js +0 -1254
  461. package/dist/expclust.gdc.spec-SFOCKBLR.js +0 -305
  462. package/dist/facet-SY6PYSTN.js +0 -519
  463. package/dist/gb-JUV63QCN.js +0 -93
  464. package/dist/gb-JUV63QCN.js.map +0 -7
  465. package/dist/geneExpClustering-FOY77R7P.js +0 -247
  466. package/dist/geneExpression-AHKX57BT.js +0 -312
  467. package/dist/geneExpression-D2F2KVGY.js +0 -36
  468. package/dist/geneExpression.unit.spec-SR2BGZQL.js +0 -100
  469. package/dist/geneORA-VJMYI4BT.js +0 -276
  470. package/dist/geneVariant-LFM5SO2P.js +0 -37
  471. package/dist/geneVariant-OIKEV4JM.js +0 -39
  472. package/dist/geneVariant.integration.spec-T6BINPIN.js +0 -196
  473. package/dist/genefusion.ui-NLMW5XMI.js +0 -306
  474. package/dist/geneset-HKXFHM5K.js +0 -197
  475. package/dist/geneset-HKXFHM5K.js.map +0 -7
  476. package/dist/genomeBrowser.spec-DRYIFJLY.js +0 -279
  477. package/dist/grin2-GJKLNT4J.js +0 -1031
  478. package/dist/grin2-GJKLNT4J.js.map +0 -7
  479. package/dist/grin2-LGI535FF.js +0 -1554
  480. package/dist/gsea-Z7DSDFOA.js +0 -45
  481. package/dist/hierCluster-HC2B5XRR.js +0 -61
  482. package/dist/hierCluster-PLHVN5S3.js +0 -57
  483. package/dist/hierCluster.config-E3DIJWL5.js +0 -38
  484. package/dist/hierCluster.integration.spec-OQLPUQG4.js +0 -393
  485. package/dist/hierCluster.interactivity-LRNPDTEH.js +0 -52
  486. package/dist/imagePlot-GUXRGYQA.js +0 -139
  487. package/dist/imagePlot-GUXRGYQA.js.map +0 -7
  488. package/dist/importPlot-M5HGLHRO.js +0 -8
  489. package/dist/isoformExpression-PADLHHR5.js +0 -38
  490. package/dist/isoformExpression.unit.spec-5BPAL4OS.js +0 -206
  491. package/dist/launch.adhoc-JH6ZZFDB.js +0 -40
  492. package/dist/leftlabel.sample-NS2TBANH.js +0 -257
  493. package/dist/lollipop-W6NOHHCP.js +0 -166
  494. package/dist/lollipop-W6NOHHCP.js.map +0 -7
  495. package/dist/maf-NOHIKTUP.js +0 -450
  496. package/dist/maftimeline-WGWE52EF.js +0 -591
  497. package/dist/matrix-B6NPQFFF.js +0 -61
  498. package/dist/matrix-UAKRJL5A.js +0 -56
  499. package/dist/matrix.config-KJNJXPJJ.js +0 -39
  500. package/dist/matrix.integration.spec-VAXIR3E6.js +0 -3070
  501. package/dist/matrix.interactivity-H4MCMJXU.js +0 -40
  502. package/dist/matrix.layout-RFKQJM5D.js +0 -42
  503. package/dist/matrix.renderers-7JJIC6VC.js +0 -36
  504. package/dist/matrix.sort.unit.spec-MQQVWWNT.js +0 -470
  505. package/dist/matrix.sorterUi.unit.spec-LG4TI7VF.js +0 -340
  506. package/dist/mavb-EIZHS6F4.js +0 -730
  507. package/dist/mds.fimo-XVC6MI7W.js +0 -516
  508. package/dist/mds.samplescatterplot-PRR4TKYI.js +0 -1548
  509. package/dist/mds.survivalplot-3OG4Y2B6.js +0 -481
  510. package/dist/oncomatrix-SO6S6IIB.js +0 -293
  511. package/dist/oncomatrix.spec-VXTF44K5.js +0 -446
  512. package/dist/plot.2dvaf-JW5OJJXV.js +0 -375
  513. package/dist/plot.app-T3GVCFQ3.js +0 -39
  514. package/dist/plot.barplot-2TYP6DPI.js +0 -100
  515. package/dist/plot.boxplot-HOQHM7JF.js +0 -150
  516. package/dist/plot.brainImaging-5AI7BSD4.js +0 -51
  517. package/dist/plot.disco-HNNZHK5Z.js +0 -101
  518. package/dist/plot.dzi-4OQSO7SY.js +0 -33
  519. package/dist/plot.ssgq-VZTTGECT.js +0 -137
  520. package/dist/plot.vaf2cov-ASEELRDV.js +0 -257
  521. package/dist/plot.wsi-MDWYLU4R.js +0 -36
  522. package/dist/polar-QSY6JG4P.js +0 -184
  523. package/dist/polar2-FD6656VD.js +0 -226
  524. package/dist/profile.spec-V7EQBXT2.js +0 -78
  525. package/dist/profileBarchart-EIKHZAPD.js +0 -265
  526. package/dist/profileForms-NGFRXPFF.js +0 -438
  527. package/dist/profilePlot-2UFKJ2OC.js +0 -52
  528. package/dist/profileRadar-B2R7OV5F.js +0 -261
  529. package/dist/profileRadarFacility-ILC7POCI.js +0 -261
  530. package/dist/proteinView-AS6ZV2JT.js +0 -758
  531. package/dist/proteinView-AS6ZV2JT.js.map +0 -7
  532. package/dist/proteomeAbundance-6J5YF4V2.js +0 -63
  533. package/dist/proteomeAbundance-6J5YF4V2.js.map +0 -7
  534. package/dist/proteomeAbundance-OF27N347.js +0 -21
  535. package/dist/qualitative-CSUO2WG5.js +0 -41
  536. package/dist/radar2-L2HGCUYR.js +0 -314
  537. package/dist/radarFacility2-HXUUTRYO.js +0 -323
  538. package/dist/regression-Y4NYGZSA.js +0 -54
  539. package/dist/regression.inputs-RWFIJLNF.js +0 -46
  540. package/dist/regression.inputs.term-QIU5SHTN.js +0 -46
  541. package/dist/regression.inputs.values.table-FM6QTSEV.js +0 -43
  542. package/dist/regression.integration.spec-YRKKU7HL.js +0 -782
  543. package/dist/regression.results-YUDCHUZJ.js +0 -38
  544. package/dist/regression.spec-G4GIIV32.js +0 -706
  545. package/dist/report-2N4FBR4Q.js +0 -220
  546. package/dist/sampleScatter.spec-UIUYO4WR.js +0 -200
  547. package/dist/sampleView-TOK5Y5KU.js +0 -46
  548. package/dist/samplelst-YW5ZS3GJ.js +0 -109
  549. package/dist/samplematrix-447BHSO7.js +0 -2196
  550. package/dist/sc-O2PL3FL2.js +0 -84
  551. package/dist/scatter-4DXHOWVY.js +0 -800
  552. package/dist/scatter.integration.spec-ZPTM3AGQ.js +0 -1194
  553. package/dist/selectGenomeWithTklst-3RLZFW62.js +0 -132
  554. package/dist/singleCellCellType-3LQJXS7H.js +0 -36
  555. package/dist/singleCellCellType.unit.spec-UJM72SP4.js +0 -158
  556. package/dist/singleCellGeneExpression-JOWJWPIQ.js +0 -36
  557. package/dist/singleCellGeneExpression.unit.spec-VY5CGRZH.js +0 -151
  558. package/dist/singleCellPlot-IVLVKOO6.js +0 -51
  559. package/dist/singlecell-VJJZJZF7.js +0 -1570
  560. package/dist/singlecell-VQJ2252L.js +0 -84
  561. package/dist/snp-ALMKZKL2.js +0 -36
  562. package/dist/snp.unit.spec-GJQBAHGQ.js +0 -174
  563. package/dist/snplocus-WCNCMFWZ.js +0 -206
  564. package/dist/spliceevent.a53ss.diagram-4Q4JF4RX.js +0 -149
  565. package/dist/spliceevent.exonskip.diagram-IOYOKELT.js +0 -275
  566. package/dist/spliceevent.noeventdiagram-77ZCOHSF.js +0 -458
  567. package/dist/ssGSEA-QTXXIN4K.js +0 -36
  568. package/dist/ssGSEA.unit.spec-LQESATT3.js +0 -86
  569. package/dist/summarizeCnvGeneexp-YKUQGDQF.js +0 -161
  570. package/dist/summarizeGeneexpSurvival-ARGG5VDC.js +0 -106
  571. package/dist/summarizeMutationCnv-FMZYT3EC.js +0 -162
  572. package/dist/summarizeMutationDiagnosis-ZX7I46SC.js +0 -38
  573. package/dist/summarizeMutationSurvival-RCFMTT43.js +0 -97
  574. package/dist/summary-QLL5YVI2.js +0 -47
  575. package/dist/summary.integration.spec-DHY6XCEJ.js +0 -412
  576. package/dist/summaryInput-ANCUQGIB.js +0 -233
  577. package/dist/sunburst-RDNFBOCK.js +0 -282
  578. package/dist/survival-BG7QV52L.js +0 -44
  579. package/dist/survival-WSN36OQE.js +0 -56
  580. package/dist/survival.integration.spec-37KAJ5IK.js +0 -800
  581. package/dist/svgraph-A5WGHW4S.js +0 -1385
  582. package/dist/svmr-CYRHHWZF.js +0 -3840
  583. package/dist/table-VHO7E5PI.js +0 -198
  584. package/dist/termCollection-E4Q6GLXN.js +0 -177
  585. package/dist/termCollection-HSVSH7TJ.js +0 -36
  586. package/dist/termCollection.unit.spec-ZCE3TUMS.js +0 -206
  587. package/dist/tk-GPRHDN4K.js +0 -44
  588. package/dist/tp.ui-LTUA3FSL.js +0 -1457
  589. package/dist/tvs.dt-G43PAAKD.js +0 -37
  590. package/dist/tvs.dtcnv.categorical-UHDS2TGZ.js +0 -38
  591. package/dist/tvs.dtcnv.continuous-ZNGYQKTD.js +0 -70
  592. package/dist/tvs.dtfusion-JBEEUDUS.js +0 -38
  593. package/dist/tvs.dtsnvindel-XXN5Q7RN.js +0 -38
  594. package/dist/tvs.dtsv-MO6L7HHV.js +0 -38
  595. package/dist/tvs.samplelst-HKY6UUJM.js +0 -102
  596. package/dist/tvs.termCollection-TY6FPL25.js +0 -157
  597. package/dist/violin-YHE3WSGR.js +0 -44
  598. package/dist/violin.integration.spec-F2UD7BHC.js +0 -1423
  599. package/dist/violin.interactivity-LVDTDEPQ.js +0 -36
  600. package/dist/violin.renderer-IIEIUGRI.js +0 -38
  601. package/dist/vocabulary-WQRYXBRO.js +0 -39
  602. /package/dist/{2dmaf-X7LATQT7.js.map → 2dmaf-F5QNP7AQ.js.map} +0 -0
  603. /package/dist/{AppHeader-RDOFP322.js.map → AppHeader-STVCDLET.js.map} +0 -0
  604. /package/dist/{BoxPlot-AZF2EMGQ.js.map → BoxPlot-CU7MEBH7.js.map} +0 -0
  605. /package/dist/{CorrelationVolcano-VXW35SXU.js.map → CorrelationVolcano-OE4R2GS3.js.map} +0 -0
  606. /package/dist/{DE-NLGMZ44O.js.map → DE-SR7PJPKI.js.map} +0 -0
  607. /package/dist/{DifferentialAnalysis-G75VUHDI.js.map → DifferentialAnalysis-UWTYK7NU.js.map} +0 -0
  608. /package/dist/{Disco-DX4S44SI.js.map → Disco-IL6REGSA.js.map} +0 -0
  609. /package/dist/{Disco.UI-5FYIACCU.js.map → Disco.UI-JHHLS5BA.js.map} +0 -0
  610. /package/dist/{DmrPlot-HWYITHK2.js.map → DmrPlot-DDP53T3F.js.map} +0 -0
  611. /package/dist/{HicApp-XPZVZXB7.js.map → HicApp-RVFHTYED.js.map} +0 -0
  612. /package/dist/{NumBinaryEditor-M6MJYIHK.js.map → NumBinaryEditor-B3FXQAOH.js.map} +0 -0
  613. /package/dist/{NumBinaryEditor.unit.spec-W6MMYDAW.js.map → NumBinaryEditor.unit.spec-75YQJ2U6.js.map} +0 -0
  614. /package/dist/{NumContEditor-YRVENTS5.js.map → NumContEditor-5PYW3OLY.js.map} +0 -0
  615. /package/dist/{NumContEditor.unit.spec-A6OH4TI7.js.map → NumContEditor.unit.spec-F7ZRDGBN.js.map} +0 -0
  616. /package/dist/{NumCustomBinEditor-BLBOYSCQ.js.map → NumCustomBinEditor-TBT6GLYQ.js.map} +0 -0
  617. /package/dist/{NumCustomBinEditor.unit.spec-55V5CKLB.js.map → NumCustomBinEditor.unit.spec-6YHU45XV.js.map} +0 -0
  618. /package/dist/{NumDiscreteEditor-DTRM6VL2.js.map → NumDiscreteEditor-N6OJYSJA.js.map} +0 -0
  619. /package/dist/{NumDiscreteEditor.unit.spec-YMB6QRER.js.map → NumDiscreteEditor.unit.spec-HQS5RZ6R.js.map} +0 -0
  620. /package/dist/{NumRegularBinEditor-XW4SVA7S.js.map → NumRegularBinEditor-HSDDKVNG.js.map} +0 -0
  621. /package/dist/{NumRegularBinEditor.unit.spec-VAHC3VOD.js.map → NumRegularBinEditor.unit.spec-33KN2MVM.js.map} +0 -0
  622. /package/dist/{NumSplineEditor-H22HTRFR.js.map → NumSplineEditor-XERKOACS.js.map} +0 -0
  623. /package/dist/{NumSplineEditor.unit.spec-4JUADXZR.js.map → NumSplineEditor.unit.spec-MPVM6KSC.js.map} +0 -0
  624. /package/dist/{NumericDensity-ECSZCQRX.js.map → NumericDensity-35EKYW3V.js.map} +0 -0
  625. /package/dist/{NumericDensity.unit.spec-SXXCXM4X.js.map → NumericDensity.unit.spec-OR24PPRJ.js.map} +0 -0
  626. /package/dist/{NumericHandler-CMBN3FZX.js.map → NumericHandler-D6ZNGRE3.js.map} +0 -0
  627. /package/dist/{NumericHandler.unit.spec-UYTJG2Z2.js.map → NumericHandler.unit.spec-EKPGVSXI.js.map} +0 -0
  628. /package/dist/{RunChart2-MVFWLXZX.js.map → RunChart2-7DOXOFXV.js.map} +0 -0
  629. /package/dist/{WSIViewer-2Z636FMA.js.map → WSIViewer-E247ELKN.js.map} +0 -0
  630. /package/dist/{WsiSamplesPlot-LN75PND3.js.map → WsiSamplesPlot-3522VRB5.js.map} +0 -0
  631. /package/dist/{adSandbox-AJ7QUDOI.js.map → adSandbox-IDFY5P2P.js.map} +0 -0
  632. /package/dist/{alphaGenome-PVCRXAQK.js.map → alphaGenome-F3W7GJQ5.js.map} +0 -0
  633. /package/dist/{app-DWYCAFRP.js.map → app-2HDSFMRM.js.map} +0 -0
  634. /package/dist/{app-RENXV7VR.js.map → app-LIWPFL7C.js.map} +0 -0
  635. /package/dist/{bam-5G6IT6OX.js.map → bam-TBHHSATL.js.map} +0 -0
  636. /package/dist/{barchart-MLCCU6SU.js.map → barchart-HHFCBOZE.js.map} +0 -0
  637. /package/dist/{barchart.events-B6HQTLK2.js.map → barchart.events-UQUSSRXB.js.map} +0 -0
  638. /package/dist/{barchart.integration.spec-S43A7C7N.js.map → barchart.integration.spec-OF3MWFQ5.js.map} +0 -0
  639. /package/dist/{barchart2-QMKEN6MN.js.map → barchart2-XRMPCBBU.js.map} +0 -0
  640. /package/dist/{block-IGBB4BJH.js.map → block-5UEORHFB.js.map} +0 -0
  641. /package/dist/{block.init-NLCYAKV4.js.map → block.init-QSSFUVIT.js.map} +0 -0
  642. /package/dist/{block.mds.expressionrank-TZWGRDY7.js.map → block.mds.expressionrank-VBIIJHQF.js.map} +0 -0
  643. /package/dist/{block.mds.geneboxplot-OAFROYDL.js.map → block.mds.geneboxplot-KSBHXBNX.js.map} +0 -0
  644. /package/dist/{block.mds.junction-NSLXTW3D.js.map → block.mds.junction-FWZWMZJ2.js.map} +0 -0
  645. /package/dist/{block.mds.svcnv-ICPG4BW6.js.map → block.mds.svcnv-UXORVLH2.js.map} +0 -0
  646. /package/dist/{block.svg-DTFVIAAC.js.map → block.svg-6KIGW4QH.js.map} +0 -0
  647. /package/dist/{block.tk.aicheck-ZIMIBWHA.js.map → block.tk.aicheck-DK566Q4C.js.map} +0 -0
  648. /package/dist/{block.tk.ase-I7UNK5BK.js.map → block.tk.ase-2GB2VJJ6.js.map} +0 -0
  649. /package/dist/{block.tk.bam-W7JG46RS.js.map → block.tk.bam-RQNOLY52.js.map} +0 -0
  650. /package/dist/{block.tk.bedgraphdot-XAQJPKGJ.js.map → block.tk.bedgraphdot-N4YMZFO4.js.map} +0 -0
  651. /package/dist/{block.tk.bigwig.ui-YQOJPJSG.js.map → block.tk.bigwig.ui-4S7L7D7D.js.map} +0 -0
  652. /package/dist/{block.tk.hicstraw-OWWGGCHU.js.map → block.tk.hicstraw-AHFNQKCS.js.map} +0 -0
  653. /package/dist/{block.tk.junction-V63ZQQX6.js.map → block.tk.junction-7E6SNQMQ.js.map} +0 -0
  654. /package/dist/{block.tk.junction.textmatrixui-B7KXX7WN.js.map → block.tk.junction.textmatrixui-3C5JVYX5.js.map} +0 -0
  655. /package/dist/{block.tk.ld-2J6CT74S.js.map → block.tk.ld-TOUCLT3W.js.map} +0 -0
  656. /package/dist/{block.tk.menu-6AQLG7PW.js.map → block.tk.menu-JCV5ORD6.js.map} +0 -0
  657. /package/dist/{block.tk.pgv-4V6PKVCQ.js.map → block.tk.pgv-CUU22U6M.js.map} +0 -0
  658. /package/dist/{brainImaging-WRBGYLHK.js.map → brainImaging-MTQTXNNL.js.map} +0 -0
  659. /package/dist/{chunk-ENP4FLOX.js.map → chunk-2UYBBUXK.js.map} +0 -0
  660. /package/dist/{chunk-P2JDCMXW.js.map → chunk-2VPEFXEJ.js.map} +0 -0
  661. /package/dist/{chunk-OVPVPPRG.js.map → chunk-3QHIL3V3.js.map} +0 -0
  662. /package/dist/{chunk-QLWDUZ5K.js.map → chunk-44VXWKYJ.js.map} +0 -0
  663. /package/dist/{chunk-QRSIID3T.js.map → chunk-52D6EGUS.js.map} +0 -0
  664. /package/dist/{chunk-N2HBIQKU.js.map → chunk-5FHM3L4I.js.map} +0 -0
  665. /package/dist/{chunk-ZVSXHCGP.js.map → chunk-62TF2MCH.js.map} +0 -0
  666. /package/dist/{chunk-UOOMFM7K.js.map → chunk-67QM2NUK.js.map} +0 -0
  667. /package/dist/{chunk-XVDWYTJ6.js.map → chunk-6AAPHEWK.js.map} +0 -0
  668. /package/dist/{chunk-3B7EWIVB.js.map → chunk-6KPGMUHS.js.map} +0 -0
  669. /package/dist/{chunk-YQVEBFGT.js.map → chunk-6WBIZXNI.js.map} +0 -0
  670. /package/dist/{chunk-IA7S4UL5.js.map → chunk-7AAJVXEG.js.map} +0 -0
  671. /package/dist/{chunk-PXYYICV7.js.map → chunk-AFJRAR4N.js.map} +0 -0
  672. /package/dist/{chunk-K7XWZSQA.js.map → chunk-CVRYZMDE.js.map} +0 -0
  673. /package/dist/{chunk-MSW7OS2O.js.map → chunk-DGUTCYH2.js.map} +0 -0
  674. /package/dist/{chunk-5ZBEDKBD.js.map → chunk-DHNXATHC.js.map} +0 -0
  675. /package/dist/{chunk-L5SOHZ5V.js.map → chunk-E3BI23UK.js.map} +0 -0
  676. /package/dist/{chunk-4JVNATQR.js.map → chunk-E4JDHA3C.js.map} +0 -0
  677. /package/dist/{chunk-W35IOI74.js.map → chunk-FOJWYEGV.js.map} +0 -0
  678. /package/dist/{chunk-NL3DVEVX.js.map → chunk-FTN7Y34O.js.map} +0 -0
  679. /package/dist/{chunk-EHXI36HJ.js.map → chunk-GRG5MMPN.js.map} +0 -0
  680. /package/dist/{chunk-HTMXVOTH.js.map → chunk-GSU4PZN3.js.map} +0 -0
  681. /package/dist/{chunk-ST644IDH.js.map → chunk-IIRU2JLK.js.map} +0 -0
  682. /package/dist/{chunk-JFIOYO3M.js.map → chunk-JCB74ZSK.js.map} +0 -0
  683. /package/dist/{chunk-BRCDZJBQ.js.map → chunk-JUDWPYMA.js.map} +0 -0
  684. /package/dist/{chunk-O4WJSZC3.js.map → chunk-KT6VZBC7.js.map} +0 -0
  685. /package/dist/{chunk-OLUDD6EC.js.map → chunk-L2HBHFTK.js.map} +0 -0
  686. /package/dist/{chunk-VGHSLILD.js.map → chunk-LKADRF3Q.js.map} +0 -0
  687. /package/dist/{chunk-3JAC5CHL.js.map → chunk-MAXFRUGM.js.map} +0 -0
  688. /package/dist/{chunk-BL4ALBZ7.js.map → chunk-MQN7RYCK.js.map} +0 -0
  689. /package/dist/{chunk-JMJW3ERE.js.map → chunk-OEUI4CYZ.js.map} +0 -0
  690. /package/dist/{chunk-73ZT6NAT.js.map → chunk-OM36XUQL.js.map} +0 -0
  691. /package/dist/{chunk-LMGE54CQ.js.map → chunk-P5LNIH5X.js.map} +0 -0
  692. /package/dist/{chunk-KSN3EVKI.js.map → chunk-PG62PRMF.js.map} +0 -0
  693. /package/dist/{chunk-EBGX226R.js.map → chunk-Q3J3F2NU.js.map} +0 -0
  694. /package/dist/{chunk-AFXYPMFZ.js.map → chunk-RZBV6474.js.map} +0 -0
  695. /package/dist/{chunk-3T2PCWII.js.map → chunk-T5V4OC27.js.map} +0 -0
  696. /package/dist/{chunk-QEWMCAJW.js.map → chunk-UCKSUNSJ.js.map} +0 -0
  697. /package/dist/{chunk-PMDXCESS.js.map → chunk-W4TLYHZO.js.map} +0 -0
  698. /package/dist/{chunk-PZ3KIUWJ.js.map → chunk-WPZUXKIB.js.map} +0 -0
  699. /package/dist/{chunk-3AK6GP4M.js.map → chunk-XM47XD6G.js.map} +0 -0
  700. /package/dist/{chunk-MVCGSYS2.js.map → chunk-YZHGLSKQ.js.map} +0 -0
  701. /package/dist/{chunk-65YTZS3R.js.map → chunk-ZGOOZK3I.js.map} +0 -0
  702. /package/dist/{chunk-LOMVTHAM.js.map → chunk-ZH2VP6Q6.js.map} +0 -0
  703. /package/dist/{chunk-HROKXT4K.js.map → chunk-ZLOQXO5K.js.map} +0 -0
  704. /package/dist/{chunk-4BTAI6HQ.js.map → chunk-ZMNDBPJU.js.map} +0 -0
  705. /package/dist/{chunk-5MW5VMWD.js.map → chunk-ZRTW6X3F.js.map} +0 -0
  706. /package/dist/{chunk-7HJ6H7AZ.js.map → chunk-ZTT52MBP.js.map} +0 -0
  707. /package/dist/{condition-CZX2GSN4.js.map → condition-VUACUQYF.js.map} +0 -0
  708. /package/dist/{controls-BQR3WY5W.js.map → controls-N4MPSNO4.js.map} +0 -0
  709. /package/dist/{controls.config-TAVZDHFZ.js.map → controls.config-PRXVODCM.js.map} +0 -0
  710. /package/dist/{correlation-BIWVZNC6.js.map → correlation-QJZUYDFH.js.map} +0 -0
  711. /package/dist/{cuminc-EDXOOI5R.js.map → cuminc-JJHXW55V.js.map} +0 -0
  712. /package/dist/{cuminc.integration.spec-UZA7BDTB.js.map → cuminc.integration.spec-IXS2UO2O.js.map} +0 -0
  713. /package/dist/{customdata.inputui-PEB4CE7J.js.map → customdata.inputui-DUHO6M6I.js.map} +0 -0
  714. /package/dist/{dataDownload-KANEHJXJ.js.map → dataDownload-OFB7TYDB.js.map} +0 -0
  715. /package/dist/{dataDownload.integration.spec-23WLHSWJ.js.map → dataDownload.integration.spec-4HWDQO4C.js.map} +0 -0
  716. /package/dist/{dictionary-YOTUFVES.js.map → dictionary-BSKN37CP.js.map} +0 -0
  717. /package/dist/{dnaMethylation-TRFAZWRJ.js.map → dnaMethylation-5QNEEGC6.js.map} +0 -0
  718. /package/dist/{dnaMethylation.integration.spec-SPFZO76D.js.map → dnaMethylation.integration.spec-YIX3JSA7.js.map} +0 -0
  719. /package/dist/{dofetch-MH4MRMGY.js.map → dofetch-KFMGQY7G.js.map} +0 -0
  720. /package/dist/{e2pca-AFVAFUJ2.js.map → e2pca-VX42HDYZ.js.map} +0 -0
  721. /package/dist/{ep-4FXTLWB4.js.map → ep-B6ZNETLI.js.map} +0 -0
  722. /package/dist/{expclust.gdc.spec-SFOCKBLR.js.map → expclust.gdc.spec-SGECIILQ.js.map} +0 -0
  723. /package/dist/{facet-SY6PYSTN.js.map → facet-2W5SBPGP.js.map} +0 -0
  724. /package/dist/{geneExpClustering-FOY77R7P.js.map → geneExpClustering-6A7364T5.js.map} +0 -0
  725. /package/dist/{geneExpression-D2F2KVGY.js.map → geneExpression-NAM2UEYN.js.map} +0 -0
  726. /package/dist/{geneExpression-AHKX57BT.js.map → geneExpression-WF56ODMZ.js.map} +0 -0
  727. /package/dist/{geneExpression.unit.spec-SR2BGZQL.js.map → geneExpression.unit.spec-DNE2T3WI.js.map} +0 -0
  728. /package/dist/{geneORA-VJMYI4BT.js.map → geneORA-33FK2YOS.js.map} +0 -0
  729. /package/dist/{geneVariant-LFM5SO2P.js.map → geneVariant-C7PCNBOQ.js.map} +0 -0
  730. /package/dist/{geneVariant-OIKEV4JM.js.map → geneVariant-REELFRRA.js.map} +0 -0
  731. /package/dist/{geneVariant.integration.spec-T6BINPIN.js.map → geneVariant.integration.spec-GNXUGDKL.js.map} +0 -0
  732. /package/dist/{genefusion.ui-NLMW5XMI.js.map → genefusion.ui-WO5EPJDS.js.map} +0 -0
  733. /package/dist/{genomeBrowser.spec-DRYIFJLY.js.map → genomeBrowser.spec-VPAKTUJF.js.map} +0 -0
  734. /package/dist/{grin2-LGI535FF.js.map → grin2-GYHUYNEF.js.map} +0 -0
  735. /package/dist/{gsea-Z7DSDFOA.js.map → gsea-PE5WZ5ZI.js.map} +0 -0
  736. /package/dist/{hierCluster-HC2B5XRR.js.map → hierCluster-FH6YJHRT.js.map} +0 -0
  737. /package/dist/{hierCluster-PLHVN5S3.js.map → hierCluster-IFM5I5QN.js.map} +0 -0
  738. /package/dist/{hierCluster.config-E3DIJWL5.js.map → hierCluster.config-M57ZIWMB.js.map} +0 -0
  739. /package/dist/{hierCluster.integration.spec-OQLPUQG4.js.map → hierCluster.integration.spec-Z64RL7MC.js.map} +0 -0
  740. /package/dist/{hierCluster.interactivity-LRNPDTEH.js.map → hierCluster.interactivity-CDBAJXOY.js.map} +0 -0
  741. /package/dist/{importPlot-M5HGLHRO.js.map → importPlot-OWKXSK77.js.map} +0 -0
  742. /package/dist/{isoformExpression-PADLHHR5.js.map → isoformExpression-66XLJG73.js.map} +0 -0
  743. /package/dist/{isoformExpression.unit.spec-5BPAL4OS.js.map → isoformExpression.unit.spec-QJX2IRHL.js.map} +0 -0
  744. /package/dist/{launch.adhoc-JH6ZZFDB.js.map → launch.adhoc-JCWID253.js.map} +0 -0
  745. /package/dist/{leftlabel.sample-NS2TBANH.js.map → leftlabel.sample-5NZ6VQDN.js.map} +0 -0
  746. /package/dist/{maf-NOHIKTUP.js.map → maf-HIS2FQXK.js.map} +0 -0
  747. /package/dist/{maftimeline-WGWE52EF.js.map → maftimeline-UPJJQE23.js.map} +0 -0
  748. /package/dist/{matrix-B6NPQFFF.js.map → matrix-62CN2KXR.js.map} +0 -0
  749. /package/dist/{matrix-UAKRJL5A.js.map → matrix-SPEDEB3J.js.map} +0 -0
  750. /package/dist/{matrix.config-KJNJXPJJ.js.map → matrix.config-XB6WFXUY.js.map} +0 -0
  751. /package/dist/{matrix.integration.spec-VAXIR3E6.js.map → matrix.integration.spec-NN7OR5XM.js.map} +0 -0
  752. /package/dist/{matrix.interactivity-H4MCMJXU.js.map → matrix.interactivity-OWMHUJCX.js.map} +0 -0
  753. /package/dist/{matrix.layout-RFKQJM5D.js.map → matrix.layout-27QB6MWK.js.map} +0 -0
  754. /package/dist/{matrix.renderers-7JJIC6VC.js.map → matrix.renderers-EPXES5E4.js.map} +0 -0
  755. /package/dist/{matrix.sort.unit.spec-MQQVWWNT.js.map → matrix.sort.unit.spec-NBT5FSZ6.js.map} +0 -0
  756. /package/dist/{matrix.sorterUi.unit.spec-LG4TI7VF.js.map → matrix.sorterUi.unit.spec-QKGUE4RR.js.map} +0 -0
  757. /package/dist/{mavb-EIZHS6F4.js.map → mavb-M7Y74OWQ.js.map} +0 -0
  758. /package/dist/{mds.fimo-XVC6MI7W.js.map → mds.fimo-WCDFA7HG.js.map} +0 -0
  759. /package/dist/{mds.samplescatterplot-PRR4TKYI.js.map → mds.samplescatterplot-ZDHQ3MKJ.js.map} +0 -0
  760. /package/dist/{mds.survivalplot-3OG4Y2B6.js.map → mds.survivalplot-R74DL2RA.js.map} +0 -0
  761. /package/dist/{oncomatrix-SO6S6IIB.js.map → oncomatrix-MOITJBII.js.map} +0 -0
  762. /package/dist/{oncomatrix.spec-VXTF44K5.js.map → oncomatrix.spec-NALJBPYS.js.map} +0 -0
  763. /package/dist/{plot.2dvaf-JW5OJJXV.js.map → plot.2dvaf-IE2EZEFA.js.map} +0 -0
  764. /package/dist/{plot.app-T3GVCFQ3.js.map → plot.app-HTW6TZEH.js.map} +0 -0
  765. /package/dist/{plot.barplot-2TYP6DPI.js.map → plot.barplot-NCQEPEOY.js.map} +0 -0
  766. /package/dist/{plot.boxplot-HOQHM7JF.js.map → plot.boxplot-WNKVBVJJ.js.map} +0 -0
  767. /package/dist/{plot.brainImaging-5AI7BSD4.js.map → plot.brainImaging-2Z3TOO6J.js.map} +0 -0
  768. /package/dist/{plot.disco-HNNZHK5Z.js.map → plot.disco-4JAEIAYK.js.map} +0 -0
  769. /package/dist/{plot.dzi-4OQSO7SY.js.map → plot.dzi-ZGLOVJJN.js.map} +0 -0
  770. /package/dist/{plot.ssgq-VZTTGECT.js.map → plot.ssgq-IHUILM43.js.map} +0 -0
  771. /package/dist/{plot.vaf2cov-ASEELRDV.js.map → plot.vaf2cov-ZYCQMD27.js.map} +0 -0
  772. /package/dist/{plot.wsi-MDWYLU4R.js.map → plot.wsi-3GISVBDH.js.map} +0 -0
  773. /package/dist/{polar-QSY6JG4P.js.map → polar-4AUAZHBV.js.map} +0 -0
  774. /package/dist/{polar2-FD6656VD.js.map → polar2-SRD4WWXU.js.map} +0 -0
  775. /package/dist/{profile.spec-V7EQBXT2.js.map → profile.spec-TOITKBBZ.js.map} +0 -0
  776. /package/dist/{profileBarchart-EIKHZAPD.js.map → profileBarchart-Z4SYIYBE.js.map} +0 -0
  777. /package/dist/{profileForms-NGFRXPFF.js.map → profileForms-RA7XQ2QT.js.map} +0 -0
  778. /package/dist/{profilePlot-2UFKJ2OC.js.map → profilePlot-4BM3XZVK.js.map} +0 -0
  779. /package/dist/{profileRadar-B2R7OV5F.js.map → profileRadar-EYBESEPI.js.map} +0 -0
  780. /package/dist/{profileRadarFacility-ILC7POCI.js.map → profileRadarFacility-FZYTFM26.js.map} +0 -0
  781. /package/dist/{proteomeAbundance-OF27N347.js.map → proteomeAbundance-65R6M4YQ.js.map} +0 -0
  782. /package/dist/{qualitative-CSUO2WG5.js.map → qualitative-E7WL6DN4.js.map} +0 -0
  783. /package/dist/{radar2-L2HGCUYR.js.map → radar2-I6FN5SUX.js.map} +0 -0
  784. /package/dist/{radarFacility2-HXUUTRYO.js.map → radarFacility2-GVK7PT3V.js.map} +0 -0
  785. /package/dist/{regression-Y4NYGZSA.js.map → regression-TIR5D354.js.map} +0 -0
  786. /package/dist/{regression.inputs-RWFIJLNF.js.map → regression.inputs-2AMJCJ3L.js.map} +0 -0
  787. /package/dist/{regression.inputs.term-QIU5SHTN.js.map → regression.inputs.term-D6D2QEUB.js.map} +0 -0
  788. /package/dist/{regression.inputs.values.table-FM6QTSEV.js.map → regression.inputs.values.table-M3IPLGDJ.js.map} +0 -0
  789. /package/dist/{regression.integration.spec-YRKKU7HL.js.map → regression.integration.spec-ROUSXLMH.js.map} +0 -0
  790. /package/dist/{regression.results-YUDCHUZJ.js.map → regression.results-YD5S74YS.js.map} +0 -0
  791. /package/dist/{regression.spec-G4GIIV32.js.map → regression.spec-4OXBBTNO.js.map} +0 -0
  792. /package/dist/{report-2N4FBR4Q.js.map → report-ETNALKTY.js.map} +0 -0
  793. /package/dist/{sampleScatter.spec-UIUYO4WR.js.map → sampleScatter.spec-LECMFMI2.js.map} +0 -0
  794. /package/dist/{sampleView-TOK5Y5KU.js.map → sampleView-B5TM7JOW.js.map} +0 -0
  795. /package/dist/{samplelst-YW5ZS3GJ.js.map → samplelst-GFQCG4SS.js.map} +0 -0
  796. /package/dist/{samplematrix-447BHSO7.js.map → samplematrix-OMTNWCJK.js.map} +0 -0
  797. /package/dist/{sc-O2PL3FL2.js.map → sc-MIEEZBWG.js.map} +0 -0
  798. /package/dist/{scatter-4DXHOWVY.js.map → scatter-ETOZ722F.js.map} +0 -0
  799. /package/dist/{scatter.integration.spec-ZPTM3AGQ.js.map → scatter.integration.spec-TS4PNRLX.js.map} +0 -0
  800. /package/dist/{selectGenomeWithTklst-3RLZFW62.js.map → selectGenomeWithTklst-Y5QIM2JB.js.map} +0 -0
  801. /package/dist/{singleCellCellType-3LQJXS7H.js.map → singleCellCellType-HOJHZF5W.js.map} +0 -0
  802. /package/dist/{singleCellCellType.unit.spec-UJM72SP4.js.map → singleCellCellType.unit.spec-MH5V3RPX.js.map} +0 -0
  803. /package/dist/{singleCellGeneExpression-JOWJWPIQ.js.map → singleCellGeneExpression-YVQ5TIKN.js.map} +0 -0
  804. /package/dist/{singleCellGeneExpression.unit.spec-VY5CGRZH.js.map → singleCellGeneExpression.unit.spec-BMFFT5HO.js.map} +0 -0
  805. /package/dist/{singleCellPlot-IVLVKOO6.js.map → singleCellPlot-3YFUYA2Y.js.map} +0 -0
  806. /package/dist/{singlecell-VJJZJZF7.js.map → singlecell-FK5JETW5.js.map} +0 -0
  807. /package/dist/{singlecell-VQJ2252L.js.map → singlecell-RL7V7DIC.js.map} +0 -0
  808. /package/dist/{snp-ALMKZKL2.js.map → snp-FT7HB3XN.js.map} +0 -0
  809. /package/dist/{snp.unit.spec-GJQBAHGQ.js.map → snp.unit.spec-CLYVYPPG.js.map} +0 -0
  810. /package/dist/{snplocus-WCNCMFWZ.js.map → snplocus-M5SEQGAC.js.map} +0 -0
  811. /package/dist/{spliceevent.a53ss.diagram-4Q4JF4RX.js.map → spliceevent.a53ss.diagram-EJ5CTRCZ.js.map} +0 -0
  812. /package/dist/{spliceevent.exonskip.diagram-IOYOKELT.js.map → spliceevent.exonskip.diagram-ETXMOHZ3.js.map} +0 -0
  813. /package/dist/{spliceevent.noeventdiagram-77ZCOHSF.js.map → spliceevent.noeventdiagram-S2O4ZM2Z.js.map} +0 -0
  814. /package/dist/{ssGSEA-QTXXIN4K.js.map → ssGSEA-6PMDQDTJ.js.map} +0 -0
  815. /package/dist/{ssGSEA.unit.spec-LQESATT3.js.map → ssGSEA.unit.spec-JD5T4R2N.js.map} +0 -0
  816. /package/dist/{summarizeCnvGeneexp-YKUQGDQF.js.map → summarizeCnvGeneexp-GCHNKTIU.js.map} +0 -0
  817. /package/dist/{summarizeGeneexpSurvival-ARGG5VDC.js.map → summarizeGeneexpSurvival-R2RYQZ3M.js.map} +0 -0
  818. /package/dist/{summarizeMutationCnv-FMZYT3EC.js.map → summarizeMutationCnv-LB2BIYRL.js.map} +0 -0
  819. /package/dist/{summarizeMutationDiagnosis-ZX7I46SC.js.map → summarizeMutationDiagnosis-3JUY75LM.js.map} +0 -0
  820. /package/dist/{summarizeMutationSurvival-RCFMTT43.js.map → summarizeMutationSurvival-VYLRWTCF.js.map} +0 -0
  821. /package/dist/{summary-QLL5YVI2.js.map → summary-2QQ72IEQ.js.map} +0 -0
  822. /package/dist/{summary.integration.spec-DHY6XCEJ.js.map → summary.integration.spec-XXU362UQ.js.map} +0 -0
  823. /package/dist/{summaryInput-ANCUQGIB.js.map → summaryInput-OZHZG3PV.js.map} +0 -0
  824. /package/dist/{sunburst-RDNFBOCK.js.map → sunburst-CMCJCANX.js.map} +0 -0
  825. /package/dist/{survival-BG7QV52L.js.map → survival-EBD4DHO7.js.map} +0 -0
  826. /package/dist/{survival-WSN36OQE.js.map → survival-ISLRRPKU.js.map} +0 -0
  827. /package/dist/{survival.integration.spec-37KAJ5IK.js.map → survival.integration.spec-FS7V4OXK.js.map} +0 -0
  828. /package/dist/{svgraph-A5WGHW4S.js.map → svgraph-KGLNUM7W.js.map} +0 -0
  829. /package/dist/{svmr-CYRHHWZF.js.map → svmr-NXZ5VLKH.js.map} +0 -0
  830. /package/dist/{table-VHO7E5PI.js.map → table-ISOQOI6C.js.map} +0 -0
  831. /package/dist/{termCollection-HSVSH7TJ.js.map → termCollection-7ZSU3I45.js.map} +0 -0
  832. /package/dist/{termCollection-E4Q6GLXN.js.map → termCollection-V2A5BDQB.js.map} +0 -0
  833. /package/dist/{termCollection.unit.spec-ZCE3TUMS.js.map → termCollection.unit.spec-6VLCJGOU.js.map} +0 -0
  834. /package/dist/{tk-GPRHDN4K.js.map → tk-6AB6XYIE.js.map} +0 -0
  835. /package/dist/{tp.ui-LTUA3FSL.js.map → tp.ui-2O4UW5N7.js.map} +0 -0
  836. /package/dist/{tvs.dt-G43PAAKD.js.map → tvs.dt-CY6TOQVB.js.map} +0 -0
  837. /package/dist/{tvs.dtcnv.categorical-UHDS2TGZ.js.map → tvs.dtcnv.categorical-AYQ432TW.js.map} +0 -0
  838. /package/dist/{tvs.dtcnv.continuous-ZNGYQKTD.js.map → tvs.dtcnv.continuous-XVDL6SG3.js.map} +0 -0
  839. /package/dist/{tvs.dtfusion-JBEEUDUS.js.map → tvs.dtfusion-V3AV7A6Q.js.map} +0 -0
  840. /package/dist/{tvs.dtsnvindel-XXN5Q7RN.js.map → tvs.dtsnvindel-XM3NXIT7.js.map} +0 -0
  841. /package/dist/{tvs.dtsv-MO6L7HHV.js.map → tvs.dtsv-Z2GYRINW.js.map} +0 -0
  842. /package/dist/{tvs.samplelst-HKY6UUJM.js.map → tvs.samplelst-C4FB63G7.js.map} +0 -0
  843. /package/dist/{tvs.termCollection-TY6FPL25.js.map → tvs.termCollection-VHTSC2ST.js.map} +0 -0
  844. /package/dist/{violin-YHE3WSGR.js.map → violin-KGGTUQFF.js.map} +0 -0
  845. /package/dist/{violin.integration.spec-F2UD7BHC.js.map → violin.integration.spec-5EW6PLJX.js.map} +0 -0
  846. /package/dist/{violin.interactivity-LVDTDEPQ.js.map → violin.interactivity-RI4RURGO.js.map} +0 -0
  847. /package/dist/{violin.renderer-IIEIUGRI.js.map → violin.renderer-EWU2IFZE.js.map} +0 -0
  848. /package/dist/{vocabulary-WQRYXBRO.js.map → vocabulary-VLIGC7OP.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/volcano/viewModel/VolcanoViewModel.ts", "../plots/volcano/interactions/VolcanoInteractions.ts", "../plots/volcano/view/DataPointMouseEvents.ts", "../plots/volcano/view/VolcanoPlotView.ts", "../plots/volcano/VolcanoControlInputs.ts", "../plots/volcano/Volcano.ts"],
4
+ "sourcesContent": ["import type {\n\tVolcanoPlotDimensions,\n\tVolcanoPlotConfig,\n\tVolcanoPValueTableData,\n\tVolcanoViewData,\n\tDataPointEntry\n} from '../VolcanoTypes'\nimport type { ValidatedVolcanoSettings } from '../settings/Settings'\nimport type { DEFullResponse } from '#types'\nimport { scaleLinear } from 'd3-scale'\nimport { roundValueAuto } from '#shared/roundValue.js'\nimport { getSampleNum } from '../settings/defaults'\nimport { getGroupColors } from '../colors'\nimport { DNA_METHYLATION, GENE_EXPRESSION, SINGLECELL_CELLTYPE } from '#shared/terms.js'\n\nexport class VolcanoViewModel {\n\tconfig: any\n\tdataType: string\n\tresponse: DEFullResponse\n\tpValueTable: VolcanoPValueTableData\n\tsettings: any\n\ttermType: string\n\tviewData: VolcanoViewData\n\tnumSignificant = 0\n\tnumNonSignificant = 0\n\tminLogFoldChange = 0\n\tmaxLogFoldChange = 0\n\t//Used for the y axis domain\n\tminLogPValue = 0\n\tmaxLogPValue = 0\n\t//Unpadded extents \u2014 used for the visible axis labels/ticks (only span real data)\n\tminLogFoldChangeAxis = 0\n\tmaxLogFoldChangeAxis = 0\n\tminLogPValueAxis = 0\n\tmaxLogPValueAxis = 0\n\t//Dot radius in pixels (from server) \u2014 overlay rings size to match the PNG\n\tdotRadiusPx = 2\n\t//Used in place of 0 p values that cannot be log transformed\n\tminNonZeroPValue = 10e-10\n\t//The x coord flush with the left side of the plot\n\tplotX: number\n\treadonly offset = 10\n\treadonly bottomPad = 60\n\treadonly horizPad = 70\n\treadonly topPad = 40\n\t/** Interactive rows returned by the server: threshold-passing dots, sorted by\n\t * significance. The full scatter lives in `response.volcanoPng`. */\n\tdataRows: DataPointEntry[]\n\n\tconstructor(config: VolcanoPlotConfig, response: DEFullResponse, settings: ValidatedVolcanoSettings) {\n\t\tthis.config = config\n\t\tthis.response = response\n\t\tthis.plotX = this.horizPad + this.offset * 2\n\n\t\tthis.dataRows = response.data.dots as DataPointEntry[]\n\n\t\t// Shared helper (colors.ts) so the SVG overlay and the server PNG paint\n\t\t// each side in the exact same hex.\n\t\tconst { caseColor, controlColor } = getGroupColors(this.config)\n\t\tconst barplot = { colorNegative: controlColor, colorPositive: caseColor }\n\n\t\tthis.pValueTable = {\n\t\t\tcolumns: [\n\t\t\t\t{ label: 'log\u2082(fold-change)', barplot, sortable: true },\n\t\t\t\t{ label: 'Original p-value', sortable: true },\n\t\t\t\t{ label: 'Adjusted p-value', sortable: true }\n\t\t\t],\n\t\t\t/** Arr set in setPointData() if settings.showPValueTable is true to\n\t\t\t * prevent unnecessary data processing when the table is not shown */\n\t\t\trows: [],\n\t\t\theight: settings.height + this.topPad\n\t\t}\n\t\tthis.settings = settings\n\t\tthis.termType = config.termType\n\t\tthis.dataType = this.setDataType()\n\n\t\tthis.setMinMaxValues()\n\n\t\tconst plotDim = this.setPlotDimensions()\n\t\tthis.setPTableColumns()\n\t\tconst pointData = this.setPointData(plotDim, controlColor, caseColor)\n\n\t\tif (this.settings.showPValueTable) {\n\t\t\t//Get all rows data for the pValueTable in setPointsData, then sort by fold change\n\t\t\tconst foldChangeIdx = this.pValueTable.columns.findIndex(c => c.label.includes('log\u2082(fold-change)'))\n\t\t\tthis.pValueTable.rows.sort((a: any, b: any) => b[foldChangeIdx].value - a[foldChangeIdx].value)\n\t\t}\n\n\t\tthis.viewData = {\n\t\t\timages: response.images || [],\n\t\t\ttermInfo: this.setTermInfo(plotDim),\n\t\t\tplotDim,\n\t\t\tpointData,\n\t\t\tpValueTableData: this.pValueTable,\n\t\t\tstatsData: this.setStatsData(),\n\t\t\tuserActions: this.setUserActions(),\n\t\t\tvolcanoPng: response.data.volcanoPng,\n\t\t\tplotExtent: response.data.plotExtent\n\t\t}\n\t}\n\n\tsetDataType() {\n\t\tif (this.termType == GENE_EXPRESSION) return 'genes'\n\t\telse if (this.termType == DNA_METHYLATION) return 'promoters'\n\t\telse if (this.termType == SINGLECELL_CELLTYPE) return 'genes' //'cells'??\n\t\telse throw new Error(`Unknown termType: ${this.termType}`)\n\t}\n\n\tsetMinMaxValues() {\n\t\t// The server-drawn PNG owns the axes; we adopt its extents verbatim so\n\t\t// overlay circles land on their counterparts in the PNG. Also adopt the\n\t\t// server's minNonZeroPValue so p=0 rows are capped at the same y position\n\t\t// the PNG used.\n\t\tconst ext = this.response.data.plotExtent\n\t\t// Padded extents \u2014 used for positioning overlay dots & PNG (so dots near\n\t\t// the real-data edge stay fully visible).\n\t\tthis.minLogFoldChange = ext.xMin\n\t\tthis.maxLogFoldChange = ext.xMax\n\t\tthis.minLogPValue = ext.yMin\n\t\tthis.maxLogPValue = ext.yMax\n\t\t// Unpadded extents \u2014 used only for the visible axis ticks/labels.\n\t\tthis.minLogFoldChangeAxis = ext.xMinUnpadded\n\t\tthis.maxLogFoldChangeAxis = ext.xMaxUnpadded\n\t\tthis.minLogPValueAxis = ext.yMinUnpadded\n\t\tthis.maxLogPValueAxis = ext.yMaxUnpadded\n\t\tthis.dotRadiusPx = ext.dotRadiusPx\n\t\tif (ext.minNonZeroPValue > 0) this.minNonZeroPValue = ext.minNonZeroPValue\n\t}\n\n\tsetPlotDimensions() {\n\t\t// Trust the server's authoritative PNG dimensions for the plot rect.\n\t\t// (Recomputing as `settings.width + 2*dotRadiusPx` is wrong when rust's\n\t\t// `pad_px = ceil(2*dot_radius)` rounds up for non-integer dot_radius \u2014\n\t\t// the SVG plot rect would scale the PNG and break pixel_x/pixel_y\n\t\t// alignment with the rasterized dots.)\n\t\tconst ext = this.response.data.plotExtent\n\t\tconst plotW = ext.pixelWidth\n\t\tconst plotH = ext.pixelHeight\n\n\t\t// Positioning scales \u2014 padded data range covers the full plot rect.\n\t\t// Used for overlay dot placement, the PNG image, and the fold-change line.\n\t\tconst xPlotScale = scaleLinear().domain([this.minLogFoldChange, this.maxLogFoldChange]).range([0, plotW])\n\t\tconst yPlotScale = scaleLinear().domain([this.minLogPValue, this.maxLogPValue]).range([plotH, 0])\n\n\t\t// Visible axis scales \u2014 unpadded domain mapped onto the matching pixel\n\t\t// subrange of the padded plot, so axis ticks land exactly at their data\n\t\t// values in the PNG (mirror of manhattan's yAxisScale).\n\t\tconst xScale = scaleLinear()\n\t\t\t.domain([this.minLogFoldChangeAxis, this.maxLogFoldChangeAxis])\n\t\t\t.range([xPlotScale(this.minLogFoldChangeAxis), xPlotScale(this.maxLogFoldChangeAxis)])\n\t\tconst yScale = scaleLinear()\n\t\t\t.domain([this.minLogPValueAxis, this.maxLogPValueAxis])\n\t\t\t.range([yPlotScale(this.minLogPValueAxis), yPlotScale(this.maxLogPValueAxis)])\n\n\t\treturn {\n\t\t\tsvg: {\n\t\t\t\t//20 is for the term info above the plot\n\t\t\t\theight: plotH + this.topPad + this.bottomPad * 2 + this.offset * 3,\n\t\t\t\twidth: plotW + this.horizPad * 2\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\tx: this.plotX,\n\t\t\t\ty: 5\n\t\t\t},\n\t\t\txAxisLabel: {\n\t\t\t\tx: this.horizPad + plotW / 2 + this.offset,\n\t\t\t\ty: this.topPad + plotH + this.bottomPad + this.offset\n\t\t\t},\n\t\t\txScale: {\n\t\t\t\tscale: xScale,\n\t\t\t\tx: this.plotX,\n\t\t\t\ty: plotH + this.topPad + this.offset * 2\n\t\t\t},\n\t\t\tyAxisLabel: {\n\t\t\t\ttext: `-log10(${this.settings.pValueType} P value)`,\n\t\t\t\tx: this.horizPad / 3,\n\t\t\t\ty: this.topPad + plotH / 2\n\t\t\t},\n\t\t\tyScale: {\n\t\t\t\tscale: yScale,\n\t\t\t\tx: this.horizPad,\n\t\t\t\ty: this.topPad\n\t\t\t},\n\t\t\tplot: {\n\t\t\t\theight: plotH,\n\t\t\t\twidth: plotW,\n\t\t\t\tx: this.plotX,\n\t\t\t\ty: this.topPad\n\t\t\t},\n\t\t\tlogFoldChangeLine: {\n\t\t\t\tx: xPlotScale(0) + this.plotX,\n\t\t\t\ty1: this.topPad,\n\t\t\t\ty2: plotH + this.offset * 4\n\t\t\t},\n\t\t\txPlotScale,\n\t\t\tyPlotScale\n\t\t}\n\t}\n\n\tsetTermInfo(\n\t\tplotDim: VolcanoPlotDimensions\n\t\t// caseColor: string,\n\t\t// controlColor: string\n\t) {\n\t\tif (this.termType != GENE_EXPRESSION && this.termType != DNA_METHYLATION) return\n\t\tconst getLabel = (name: string) => {\n\t\t\tif (name.length >= 25) return name.substring(0, 20) + '...'\n\t\t\treturn name\n\t\t}\n\n\t\treturn {\n\t\t\t//Set slightly above the plot\n\t\t\ty: plotDim.top.y + 10,\n\t\t\tfirst: {\n\t\t\t\t// color: controlColor || this.settings.defaultSignColor,\n\t\t\t\tlabel: getLabel(`${this.config.samplelst.groups[0].name} (${this.response.sample_size1})`),\n\t\t\t\tx: 0\n\t\t\t\t// rectX: this.settings.width/2 - 10,\n\t\t\t},\n\t\t\tsecond: {\n\t\t\t\t// color: caseColor || this.settings.defaultSignColor,\n\t\t\t\tlabel: getLabel(`${this.config.samplelst.groups[1].name} (${this.response.sample_size2})`),\n\t\t\t\tx: this.settings.width\n\t\t\t\t// rectX: this.settings.width/2 + 10,\n\t\t\t}\n\t\t}\n\t}\n\n\tsetPointData(_plotDim: VolcanoPlotDimensions, controlColor: string, caseColor: string) {\n\t\t// Use the server-supplied radius so SVG overlay rings sit exactly on top\n\t\t// of the PNG rings. The view's renderDataPoints draws them at stroke-width\n\t\t// 1 to match the rust PNG's stroke geometry.\n\t\tconst radius = this.dotRadiusPx\n\t\tconst dataCopy: any = structuredClone(this.dataRows)\n\t\tfor (const d of dataCopy) {\n\t\t\tconst highlightKey = this.termType === DNA_METHYLATION ? d.promoter_id : d.gene_name\n\t\t\td.highlighted = this.config?.highlightedData?.includes(highlightKey)\n\t\t\t// Every row in response.data passed the server's thresholds by definition.\n\t\t\td.significant = true\n\t\t\tthis.getGenesColor(d, d.significant, controlColor, caseColor)\n\t\t\tif (d.significant) {\n\t\t\t\tthis.numSignificant++\n\t\t\t\tconst row = [\n\t\t\t\t\t{ value: roundValueAuto(d.fold_change) },\n\t\t\t\t\t{ value: roundValueAuto(d.original_p_value) },\n\t\t\t\t\t{ value: roundValueAuto(d.adjusted_p_value) }\n\t\t\t\t]\n\t\t\t\tif (this.termType == DNA_METHYLATION) {\n\t\t\t\t\trow.splice(0, 0, { value: d.promoter_id || '' }, { value: d.gene_name || '' })\n\t\t\t\t} else {\n\t\t\t\t\trow.splice(0, 0, { value: d.gene_name || '' })\n\t\t\t\t}\n\t\t\t\t//Do not create p-value table data unless user opts to show the table\n\t\t\t\tif (this.settings.showPValueTable) this.pValueTable.rows.push(row)\n\t\t\t} else {\n\t\t\t\tthis.numNonSignificant++\n\t\t\t}\n\t\t\t// Use the exact pixel coords plotters used to rasterize this dot in\n\t\t\t// the PNG (echoed back from rust per-point). Translating by plotX /\n\t\t\t// topPad shifts from inner-plot pixel space to SVG-absolute coords.\n\t\t\t// This is the manhattan trick \u2014 guarantees the SVG overlay ring lands\n\t\t\t// on the rasterized PNG dot regardless of float-vs-int conventions.\n\t\t\td.x = d.pixel_x + this.plotX\n\t\t\td.y = d.pixel_y + this.topPad\n\t\t\td.radius = radius\n\t\t}\n\t\t// Use the server's pre-truncation count so stats are correct even when\n\t\t// dots was capped by maxInteractiveDots.\n\t\tthis.numSignificant = this.response.data.totalSignificantRows\n\t\tthis.numNonSignificant = Math.max(0, this.response.data.totalRows - this.numSignificant)\n\t\t//Sort so the highlighted points appear on top\n\t\tdataCopy.sort((a: any, b: any) => a.highlighted - b.highlighted)\n\t\treturn dataCopy\n\t}\n\n\tgetGenesColor(d: DataPointEntry, significant: boolean, controlColor: string, caseColor: string) {\n\t\tif (!d.gene_name && this.termType != DNA_METHYLATION)\n\t\t\tthrow new Error(`Missing gene_name in data: ${JSON.stringify(d)}`)\n\t\tif (significant) {\n\t\t\tif (controlColor && caseColor) d.color = d.fold_change > 0 ? caseColor : controlColor\n\t\t\telse d.color = this.settings.defaultSignColor\n\t\t} else d.color = this.settings.defaultNonSignColor\n\t}\n\n\tsetStatsData() {\n\t\tconst tableRows = [\n\t\t\t{\n\t\t\t\tlabel: `Percentage of significant ${this.dataType}`,\n\t\t\t\tvalue: roundValueAuto((this.numSignificant * 100) / (this.numSignificant + this.numNonSignificant))\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: `Number of significant ${this.dataType}`,\n\t\t\t\tvalue: this.numSignificant\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: `Number of total ${this.dataType}`,\n\t\t\t\tvalue: this.numSignificant + this.numNonSignificant\n\t\t\t}\n\t\t]\n\t\tif (this.termType == GENE_EXPRESSION || this.termType == DNA_METHYLATION) {\n\t\t\ttableRows.push(\n\t\t\t\t{\n\t\t\t\t\tlabel: this.config.samplelst.groups[0].name + ' sample size (control group)',\n\t\t\t\t\tvalue: this.response.sample_size1\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.config.samplelst.groups[1].name + ' sample size (case group)',\n\t\t\t\t\tvalue: this.response.sample_size2\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\n\t\tif (this.response.bcv !== undefined && this.response.bcv !== null) {\n\t\t\ttableRows.push({\n\t\t\t\tlabel: 'Biological coefficient of variation',\n\t\t\t\tvalue: roundValueAuto(this.response.bcv)\n\t\t\t})\n\t\t}\n\t\treturn tableRows\n\t}\n\n\tsetPTableColumns() {\n\t\tif (this.termType == DNA_METHYLATION) {\n\t\t\tthis.pValueTable.columns.splice(0, 0, { label: 'Promoter', sortable: true }, { label: 'Gene(s)', sortable: true })\n\t\t} else {\n\t\t\tthis.pValueTable.columns.splice(0, 0, { label: 'Gene Name', sortable: true })\n\t\t}\n\t}\n\n\tsetUserActions() {\n\t\tconst userActions = {\n\t\t\tnoShow: new Set<string>()\n\t\t}\n\t\tif (this.termType == GENE_EXPRESSION) {\n\t\t\tif (this.settings.method == 'edgeR' && getSampleNum(this.config) > 100) {\n\t\t\t\tuserActions.noShow.add('Confounding factors')\n\t\t\t}\n\t\t\tif (this.settings.method == 'wilcoxon') userActions.noShow.add('Confounding factors')\n\t\t}\n\t\treturn userActions\n\t}\n}\n", "import type { MassAppApi } from '#mass/types/mass'\nimport { downloadTable, GeneSetEditUI, MultiTermWrapperEditUI } from '#dom'\nimport { to_svg } from '#src/client'\nimport type { VolcanoDom, VolcanoPlotConfig } from '../VolcanoTypes'\nimport { DNA_METHYLATION, GENE_EXPRESSION } from '#shared/terms.js'\nimport { getGEunit } from '#tw/geneExpression'\n\nexport class VolcanoInteractions {\n\tapp: MassAppApi\n\tdom: VolcanoDom\n\tid: string\n\tpValueTableData: any\n\tdata: any\n\n\tconstructor(app: MassAppApi, id: string, dom: VolcanoDom) {\n\t\tthis.app = app\n\t\tthis.dom = dom\n\t\tthis.id = id\n\t\tthis.pValueTableData = []\n\t\tthis.data = []\n\t}\n\n\t/** Launches a multi-term select tree\n\t * On submit, dispatches a plot_edit action with the new confounders */\n\tasync confoundersMenu() {\n\t\tconst state = this.app.getState()\n\t\tconst config = state.plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tif (config.termType !== GENE_EXPRESSION && config.termType !== DNA_METHYLATION) return\n\n\t\t/** Find terms used to create the groups and disable in the\n\t\t * termsetting UI. Prevents users from trying to control for\n\t\t * variables used to create the groups.*/\n\t\tconst allowedGroupNames = new Set([config.samplelst.groups[0].name, config.samplelst.groups[1].name])\n\t\tconst grpTerms: Set<string> = new Set(\n\t\t\t(this.app?.vocabApi?.state.groups || [])\n\t\t\t\t.filter(g => allowedGroupNames.has(g.name))\n\t\t\t\t.flatMap(g =>\n\t\t\t\t\tg.filter.lst.flatMap(f => {\n\t\t\t\t\t\tif (f.tvs?.term) return f.tvs.term\n\t\t\t\t\t\telse return f.lst.map(l => l.tvs.term)\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t\tconst disable_terms: any[] = grpTerms.size ? Array.from(grpTerms) : []\n\t\tconst maxNum = config.settings.volcano.method == 'edgeR' ? 1 : 2\n\n\t\tconst ui = new MultiTermWrapperEditUI({\n\t\t\tapp: this.app,\n\t\t\tcallback: async (tws: any) => {\n\t\t\t\tthis.dom.actionsTip.hide()\n\t\t\t\tawait this.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: this.id,\n\t\t\t\t\tconfig: { confounderTws: tws }\n\t\t\t\t})\n\t\t\t},\n\t\t\tholder: this.dom.actionsTip.d as any,\n\t\t\theaderText: 'Select confounders',\n\t\t\tmaxNum,\n\t\t\tstate,\n\t\t\ttwList: config.confounderTws,\n\t\t\tdisable_terms\n\t\t})\n\t\tawait ui.renderUI()\n\t}\n\n\tdownload(termType: string) {\n\t\tthis.dom.actionsTip.clear().showunder(this.dom.controls.select('div').node())\n\t\tconst opts = [\n\t\t\t{\n\t\t\t\ttext: 'Download plot',\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst svg = this.dom.holder.select('svg').node() as Node\n\t\t\t\t\tto_svg(svg, `Differential ${termType} analysis volcano`, { apply_dom_styles: true })\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: 'Download p value table',\n\t\t\t\tcallback: () => {\n\t\t\t\t\tdownloadTable(this.pValueTableData.rows, this.pValueTableData.columns)\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t\tfor (const opt of opts) {\n\t\t\tthis.dom.actionsTip.d.append('div').attr('class', 'sja_menuoption').text(opt.text).on('click', opt.callback)\n\t\t}\n\t}\n\n\tasync highlightDataPoint(value: string) {\n\t\tconst config = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tconst highlightedData = config.highlightedData.includes(value)\n\t\t\t? config.highlightedData.filter(d => d !== value)\n\t\t\t: [...config.highlightedData, value]\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { highlightedData }\n\t\t})\n\t}\n\n\t/** When clicking on a data point, launches the box plot in a separate sandbox\n\t * For geneExpression, value == gene symbol */\n\tlaunchBoxPlot(value: string) {\n\t\tconst config = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tconst values = {}\n\t\tfor (const group of config.samplelst.groups) {\n\t\t\tvalues[group.name] = {\n\t\t\t\tkey: group.name,\n\t\t\t\tlabel: group.name,\n\t\t\t\tlist: group.values\n\t\t\t}\n\t\t}\n\t\t/** Gene variant and expression terms do not have an id\n\t\t * need to be handled separately.\n\t\t * TODO: In the future with more use cases, simplify this logic. */\n\t\tconst setTerm = () => {\n\t\t\tif (config.termType == GENE_EXPRESSION) {\n\t\t\t\treturn {\n\t\t\t\t\tq: { mode: 'continuous' },\n\t\t\t\t\tterm: {\n\t\t\t\t\t\tgene: value,\n\t\t\t\t\t\tname: value,\n\t\t\t\t\t\ttype: config.termType\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else return config.term\n\t\t}\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: {\n\t\t\t\tchartType: 'summary',\n\t\t\t\tchildType: 'boxplot',\n\t\t\t\tterm: setTerm(),\n\t\t\t\tterm2: {\n\t\t\t\t\tq: { groups: config.tw.q.groups, type: 'custom-samplelst' },\n\t\t\t\t\tterm: config.tw.term\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t/** Launch a violin plot for a gene expression data point. */\n\tlaunchViolinGeneExp(value: string) {\n\t\tconst config = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: {\n\t\t\t\tchartType: 'summary',\n\t\t\t\tchildType: 'violin',\n\t\t\t\tterm: {\n\t\t\t\t\tq: { mode: 'continuous' },\n\t\t\t\t\tterm: {\n\t\t\t\t\t\tgene: value,\n\t\t\t\t\t\tname: value,\n\t\t\t\t\t\ttype: config.termType\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tterm2: {\n\t\t\t\t\tq: { groups: config.tw.q.groups, type: 'custom-samplelst' },\n\t\t\t\t\tterm: config.tw.term\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\tlaunchGeneSetEdit() {\n\t\tconst plotConfig = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tconst holder = this.dom.actionsTip.d.append('div').style('padding', '5px') as any\n\t\tconst limitedGenesList =\n\t\t\tplotConfig.termType === DNA_METHYLATION ? this.data.map(d => d.promoter_id) : this.data.map(d => d.gene_name)\n\t\tnew GeneSetEditUI({\n\t\t\tholder,\n\t\t\tgenome: this.app.opts.genome,\n\t\t\tvocabApi: this.app.vocabApi,\n\t\t\tlimitedGenesList,\n\t\t\tgeneList: plotConfig.highlightedData.map(d => {\n\t\t\t\treturn { gene: d } //Formatted to Gene type in GeneSetEditUI\n\t\t\t}),\n\t\t\tcustomInputs: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Cancel highlight',\n\t\t\t\t\tgetDisplayStyle: () => (plotConfig.highlightedData.length > 0 ? '' : 'none'),\n\t\t\t\t\tshowInput: async () => {\n\t\t\t\t\t\tawait this.app.dispatch({\n\t\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\t\tid: this.id,\n\t\t\t\t\t\t\tconfig: { highlightedData: [] }\n\t\t\t\t\t\t})\n\t\t\t\t\t\tthis.dom.actionsTip.hide()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\tcallback: async result => {\n\t\t\t\tconst highlightedData = result.geneList.map(d => d.gene)\n\t\t\t\tawait this.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: this.id,\n\t\t\t\t\tconfig: { highlightedData }\n\t\t\t\t})\n\t\t\t\tthis.dom.actionsTip.hide()\n\t\t\t}\n\t\t})\n\t}\n\n\t/** When clicking on a DM data point, dispatches a DMR plot that runs DMRCate\n\t * analysis and renders a genome browser Block with DMR regions on their own\n\t * track. */\n\tasync launchDmr(d: { chr: string; start: number; stop: number; promoterId?: string }) {\n\t\tconst config = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\n\t\tconst controlColor = config?.tw?.term?.values?.[config?.samplelst?.groups[0].name]?.color || '#ff0000'\n\t\tconst caseColor = config?.tw?.term?.values?.[config?.samplelst?.groups[1].name]?.color || '#0000ff'\n\n\t\tconst label = d.promoterId || `${d.chr}:${d.start}-${d.stop}`\n\t\tconst dmrConfig: any = {\n\t\t\tchartType: 'dmr',\n\t\t\theaderText: `DMR: ${label}`,\n\t\t\tcoordinateOverride: { chr: d.chr, start: d.start, stop: d.stop },\n\t\t\tgroup1: config.samplelst.groups[0].values || [],\n\t\t\tgroup2: config.samplelst.groups[1].values || [],\n\t\t\tgroup1Name: config.samplelst.groups[0].name,\n\t\t\tgroup2Name: config.samplelst.groups[1].name,\n\t\t\tsettings: {\n\t\t\t\tcolors: { group1: controlColor, group2: caseColor }\n\t\t\t}\n\t\t}\n\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: dmrConfig\n\t\t})\n\t}\n\n\t/** Launch a violin/box plot for a DNA methylation promoter.\n\t * Creates a methylation term using the promoter's chr/start/stop coordinates.\n\t * The tw handler fills in id and unit from termdbConfig. */\n\tlaunchDNAMethViolin(d: { chr: string; start: number; stop: number; gene_name?: string; promoter_id?: string }) {\n\t\tconst config = this.app.getState().plots.find((p: VolcanoPlotConfig) => p.id === this.id)\n\t\tconst genomicFeatureType = d.promoter_id ? 'promoter' : 'gene'\n\t\tconst featureName = genomicFeatureType === 'gene' ? d.gene_name?.split(',')[0]?.trim() || '' : ''\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: {\n\t\t\t\tchartType: 'summary',\n\t\t\t\tchildType: 'violin',\n\t\t\t\tterm: {\n\t\t\t\t\tq: { mode: 'continuous' },\n\t\t\t\t\tterm: {\n\t\t\t\t\t\tgenomicFeatureType,\n\t\t\t\t\t\tfeatureName,\n\t\t\t\t\t\ttype: DNA_METHYLATION,\n\t\t\t\t\t\tchr: d.chr,\n\t\t\t\t\t\tstart: d.start,\n\t\t\t\t\t\tstop: d.stop\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tterm2: {\n\t\t\t\t\tq: { groups: config.tw.q.groups, type: 'custom-samplelst' },\n\t\t\t\t\tterm: config.tw.term\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\tasync launchDEGClustering() {\n\t\t//Sort the DEG rows by q-value in ascending order\n\t\tconst geneIndex = this.pValueTableData.columns.findIndex(col => col.label === 'Gene Name')\n\t\tconst adjustedPValIndex = this.pValueTableData.columns.findIndex(col => col.label === 'Adjusted p-value')\n\t\tconst rowsSorted = [...this.pValueTableData.rows].sort((a, b) => {\n\t\t\tconst aQVal = Number(a[adjustedPValIndex].value)\n\t\t\tconst bQVal = Number(b[adjustedPValIndex].value)\n\t\t\treturn aQVal - bQVal\n\t\t})\n\n\t\t// Launch hierCluster for up to 100 DEGs with the smallest q-values\n\t\tconst geneList = rowsSorted.slice(0, 100).map(r => ({ gene: r[geneIndex].value }))\n\n\t\tconst tws = geneList.map(d => {\n\t\t\tconst gene = d.gene\n\t\t\tconst unit = getGEunit(this.app.vocabApi)\n\t\t\tconst name = `${gene} ${unit}`\n\t\t\tconst term = { gene, name, type: GENE_EXPRESSION }\n\t\t\treturn { term, q: {} }\n\t\t})\n\n\t\tconst group = { lst: tws, type: 'hierCluster' }\n\t\tconst customVariable = this.app.getState().plots.find((p: any) => p.id === this.id).tw\n\t\tconst annotationGroup = { lst: [customVariable] }\n\t\tconst config = {\n\t\t\tchartType: 'hierCluster',\n\t\t\ttermgroups: [group, annotationGroup],\n\t\t\tdataType: GENE_EXPRESSION,\n\t\t\tfilter: {\n\t\t\t\tin: true,\n\t\t\t\tjoin: '',\n\t\t\t\ttype: 'tvslst',\n\t\t\t\tlst: [{ type: 'tvs', tvs: { term: customVariable.term } }]\n\t\t\t}\n\t\t}\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: structuredClone(config)\n\t\t})\n\t}\n}\n", "import { roundValueAuto } from '#shared/roundValue.js'\nimport type { VolcanoInteractions } from '../interactions/VolcanoInteractions'\nimport type { DataPointEntry } from '../VolcanoTypes'\nimport { DNA_METHYLATION, GENE_EXPRESSION } from '#shared/terms.js'\n\nexport type ActionMenuOpt = {\n\tlabel: string\n\tonClick: () => Promise<void> | void\n}\n\n/** Returns the per-data-point action menu items (Violin / DMR / Box-plot). Used\n * by both the single-gene click flow and the multi-gene click-menu rows so the\n * launchers stay in lock-step. */\nexport function getActionMenuOpts(\n\td: DataPointEntry,\n\ttermType: string,\n\tinteractions: VolcanoInteractions\n): ActionMenuOpt[] {\n\tconst all = [\n\t\t{\n\t\t\tlabel: 'Violin plot',\n\t\t\tisVisible: () => termType === DNA_METHYLATION || termType === GENE_EXPRESSION,\n\t\t\tonClick: async () => {\n\t\t\t\tif (termType === DNA_METHYLATION) interactions.launchDNAMethViolin(d as any)\n\t\t\t\tif (termType === GENE_EXPRESSION) interactions.launchViolinGeneExp(d.gene_name)\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: 'DMR analysis',\n\t\t\tisVisible: () => termType === DNA_METHYLATION,\n\t\t\tonClick: async () => {\n\t\t\t\tconst dm = d as DataPointEntry & {\n\t\t\t\t\tchr: string\n\t\t\t\t\tstart: number\n\t\t\t\t\tstop: number\n\t\t\t\t\tpromoter_id?: string\n\t\t\t\t\tgene_name?: string\n\t\t\t\t}\n\t\t\t\tawait interactions.launchDmr({\n\t\t\t\t\tchr: dm.chr,\n\t\t\t\t\tstart: dm.start,\n\t\t\t\t\tstop: dm.stop,\n\t\t\t\t\tpromoterId: dm.promoter_id\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: 'Box plot',\n\t\t\tisVisible: () => termType === GENE_EXPRESSION,\n\t\t\tonClick: async () => {\n\t\t\t\tinteractions.launchBoxPlot(d.gene_name)\n\t\t\t}\n\t\t}\n\t]\n\treturn all.filter(o => o.isVisible()).map(({ label, onClick }) => ({ label, onClick }))\n}\n\n/** Populates a `table2col` instance with the standard volcano hover rows\n * (gene/promoter, fold-change, original + adjusted p-values). */\nexport function addTooltipRows(d: DataPointEntry, table: any, termType: string) {\n\tif (termType === DNA_METHYLATION) {\n\t\tif ('promoter_id' in d) addTooltipRow(table, 'Promoter', (d as any).promoter_id)\n\t\tif (d.gene_name) addTooltipRow(table, 'Gene(s)', d.gene_name)\n\t} else {\n\t\taddTooltipRow(table, 'Gene name', d.gene_name)\n\t}\n\taddTooltipRow(table, 'log<sub>2</sub>(fold-change)', roundValueAuto(d.fold_change))\n\taddTooltipRow(table, 'Original p-value', roundValueAuto(d.original_p_value))\n\taddTooltipRow(table, 'Adjusted p-value', roundValueAuto(d.adjusted_p_value))\n}\n\nfunction addTooltipRow(table: any, text: string, value: number | string) {\n\tconst [td1, td2] = table.addRow()\n\ttd1.html(text)\n\ttd2.text(value)\n}\n", "import { axisBottom, axisLeft } from 'd3-axis'\nimport { axisstyle, Menu, table2col, renderTable } from '#dom'\nimport { selectAll } from 'd3-selection'\nimport { rgb } from 'd3-color'\nimport { quadtree } from 'd3-quadtree'\nimport { roundValueAuto } from '#shared/roundValue.js'\nimport type { DataPointEntry, VolcanoDom, VolcanoPlotDimensions, VolcanoViewData } from '../VolcanoTypes'\nimport type { VolcanoPlotDom } from './VolcanoPlotDom'\nimport type { VolcanoInteractions } from '../interactions/VolcanoInteractions'\nimport { addTooltipRows, getActionMenuOpts } from './DataPointMouseEvents'\nimport { findPointsInRadius } from '../../shared/quadtreeHitTest'\nimport { showResultsTable } from '../../shared/resultsTable'\nimport { DNA_METHYLATION, GENE_EXPRESSION, SINGLECELL_CELLTYPE } from '#shared/terms.js'\nimport type { ValidatedVolcanoSettings } from '../settings/Settings'\n\nexport class VolcanoPlotView {\n\tdom: VolcanoDom\n\tinteractions: VolcanoInteractions\n\tsettings: any\n\ttermType: string\n\tvolcanoDom: VolcanoPlotDom\n\tviewData!: VolcanoViewData\n\n\tconstructor(dom: VolcanoDom, interactions: VolcanoInteractions, termType: string) {\n\t\tthis.dom = dom\n\t\tthis.interactions = interactions\n\t\tthis.termType = termType\n\t\tconst actions = this.dom.holder\n\t\t\t.append('div')\n\t\t\t.attr('id', 'sjpp-volcano-actions')\n\t\t\t.style('display', 'block')\n\t\t\t.style('z-index', 1)\n\t\t\t.style('position', 'relative')\n\t\tconst svg = this.dom.holder\n\t\t\t.append('svg')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.attr('id', 'sjpp-volcano-svg')\n\t\t\t.style('vertical-align', 'top')\n\t\tthis.volcanoDom = {\n\t\t\tactions,\n\t\t\tsvg,\n\t\t\tpValueTable: undefined,\n\t\t\ttop: undefined,\n\t\t\txAxis: undefined,\n\t\t\txAxisLabel: undefined,\n\t\t\tyAxis: undefined,\n\t\t\tyAxisLabel: undefined,\n\t\t\tplot: undefined\n\t\t} as Partial<VolcanoPlotDom> as VolcanoPlotDom\n\t}\n\n\trender(settings: ValidatedVolcanoSettings, viewData: VolcanoViewData) {\n\t\tthis.settings = settings\n\t\tthis.viewData = viewData\n\t\tconst plotDim = this.viewData.plotDim\n\n\t\tthis.initDom()\n\n\t\tthis.renderUserActions()\n\t\tthis.renderPlot(plotDim)\n\t\trenderDataPoints(this)\n\t\tthis.renderFoldChangeLine(plotDim)\n\t\tthis.setupOverlayInteractions(plotDim)\n\t\tif (this.settings.showPValueTable) this.renderPValueTable()\n\t}\n\n\tinitDom() {\n\t\tthis.volcanoDom.actions.selectAll('*').remove()\n\t\tthis.volcanoDom.svg.selectAll('*').remove()\n\n\t\tconst svg = this.volcanoDom.svg\n\t\tthis.volcanoDom.top = svg.append('g').attr('id', 'sjpp-volcano-top')\n\t\tthis.volcanoDom.xAxis = svg.append('g').attr('id', 'sjpp-volcano-xAxis')\n\t\tthis.volcanoDom.yAxis = svg.append('g').attr('id', 'sjpp-volcano-yAxis')\n\t\tthis.volcanoDom.xAxisLabel = svg.append('text').attr('id', 'sjpp-volcano-xAxisLabel').attr('text-anchor', 'middle')\n\t\tthis.volcanoDom.yAxisLabel = svg.append('text').attr('id', 'sjpp-volcano-yAxisLabel').attr('text-anchor', 'middle')\n\t\tthis.volcanoDom.plot = svg.append('g').attr('id', 'sjpp-volcano-plot')\n\n\t\tif (!this.settings.showPValueTable) return\n\t\tthis.volcanoDom.pValueTable = this.dom.holder\n\t\t\t.append('div')\n\t\t\t.attr('id', 'sjpp-volcano-pValueTable')\n\t\t\t.attr('data-testid', 'sjpp-volcano-pValueTable')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('vertical-align', 'top')\n\t}\n\n\trenderUserActions() {\n\t\t//Images may have a large margin. Hide the overflow.\n\t\tthis.dom.actionsTip.d.style('overflow', 'hidden')\n\t\tthis.volcanoDom.actions.style('margin-left', '20px').style('padding', '5px')\n\t\tthis.addActionButton('Confounding factors', [GENE_EXPRESSION, DNA_METHYLATION], () =>\n\t\t\tthis.interactions.confoundersMenu()\n\t\t)\n\t\tthis.addActionButton('Highlight genes', [GENE_EXPRESSION, SINGLECELL_CELLTYPE, DNA_METHYLATION], () =>\n\t\t\tthis.interactions.launchGeneSetEdit()\n\t\t)\n\t\tthis.addActionButton('Statistics', [GENE_EXPRESSION, SINGLECELL_CELLTYPE, DNA_METHYLATION], () => {\n\t\t\tthis.renderStatsMenu()\n\t\t})\n\t\tconst sigLabel =\n\t\t\tthis.termType == DNA_METHYLATION ? 'Number of significant promoters' : 'Number of significant genes'\n\t\tconst numSigGenes = this.viewData.statsData.find(d => d.label == sigLabel)?.value\n\t\tif (numSigGenes) {\n\t\t\tconst sigText = this.termType == DNA_METHYLATION ? `${numSigGenes} DM promoters:` : `${numSigGenes} DE genes:`\n\t\t\tthis.volcanoDom.actions.append('span').text(sigText).style('margin-left', '10px').style('font-weight', 'bold')\n\n\t\t\tthis.addActionButton('Show p-value table', [GENE_EXPRESSION, SINGLECELL_CELLTYPE, DNA_METHYLATION], async () => {\n\t\t\t\t/** TODO: This is very slow to render. Need to optimize rendering\n\t\t\t\t * and server response to increase performance.*/\n\t\t\t\tconst showTable = !this.settings.showPValueTable\n\t\t\t\tawait this.interactions.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: this.interactions.id,\n\t\t\t\t\tconfig: { settings: { volcano: { showPValueTable: showTable } } }\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tif (numSigGenes && numSigGenes >= 3) {\n\t\t\t// Launch hierCluster for DEGs between the two groups\n\t\t\tthis.addActionButton(\n\t\t\t\t`Hierarchical clustering of ${numSigGenes > 100 ? 'top 100' : numSigGenes} DE genes`,\n\t\t\t\t[GENE_EXPRESSION],\n\t\t\t\tasync () => {\n\t\t\t\t\tawait this.interactions.launchDEGClustering()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t}\n\n\t/** Use the termTypes arr to render the buttons in a consistent order */\n\taddActionButton(text: string, termTypes: string[], callback: any) {\n\t\tif (this.viewData.userActions.noShow.has(text)) return\n\t\tif (!termTypes.includes(this.termType)) return\n\t\tconst button = this.volcanoDom.actions\n\t\t\t.append('button')\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.style('margin', '3px')\n\t\t\t.style('padding', '3px')\n\t\t\t.text(text)\n\t\t\t.on('click', async () => {\n\t\t\t\tthis.dom.actionsTip.clear().showunder(button.node())\n\t\t\t\tawait callback()\n\t\t\t})\n\t}\n\n\trenderPlot(plotDim: VolcanoPlotDimensions) {\n\t\tthis.volcanoDom.svg.attr('width', plotDim.svg.width).attr('height', plotDim.svg.height)\n\n\t\tthis.renderTermInfo(plotDim)\n\n\t\tthis.volcanoDom.yAxisLabel.attr(\n\t\t\t'transform',\n\t\t\t`translate(${plotDim.yAxisLabel.x}, ${plotDim.yAxisLabel.y}) rotate(-90)`\n\t\t)\n\t\tthis.setSvgSubscriptLabel(this.volcanoDom.yAxisLabel, '-log', '10', `(${this.settings.pValueType} p-value)`)\n\n\t\tthis.volcanoDom.xAxisLabel.attr('transform', `translate(${plotDim.xAxisLabel.x}, ${plotDim.xAxisLabel.y})`)\n\t\tthis.setSvgSubscriptLabel(this.volcanoDom.xAxisLabel, 'log', '2', '(fold-change)')\n\n\t\tthis.renderScale(plotDim.xScale)\n\t\tthis.renderScale(plotDim.yScale, true)\n\n\t\t// Server-rendered PNG of the full scatter (every dot, non-interactive).\n\t\t// Drawn first so overlay circles + the border rect sit on top. The volcano\n\t\t// binary emits a borderless image whose data extent matches the client's\n\t\t// scales, so placing it over the plot rect aligns dot-for-dot.\n\t\tif (this.viewData.volcanoPng) {\n\t\t\tthis.volcanoDom.plot\n\t\t\t\t.append('image')\n\t\t\t\t.attr('href', `data:image/png;base64,${this.viewData.volcanoPng}`)\n\t\t\t\t.attr('x', plotDim.plot.x)\n\t\t\t\t.attr('y', plotDim.plot.y)\n\t\t\t\t.attr('width', plotDim.plot.width)\n\t\t\t\t.attr('height', plotDim.plot.height)\n\t\t\t\t.attr('preserveAspectRatio', 'none')\n\t\t}\n\t}\n\n\trenderTermInfo(plotDim) {\n\t\tif (this.viewData.termInfo == undefined) return\n\t\tthis.volcanoDom.top.attr('transform', `translate(${plotDim.top.x}, ${plotDim.top.y})`)\n\n\t\tconst y = this.viewData.termInfo.y\n\t\tconst addLabel = term => {\n\t\t\treturn (\n\t\t\t\tthis.volcanoDom.top\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('font-size', '0.9em')\n\t\t\t\t\t.attr('transform', `translate(${term.x}, ${y + 10})`)\n\t\t\t\t\t// .attr('text-anchor', 'start')\n\t\t\t\t\t.text(term.label)\n\t\t\t)\n\t\t}\n\n\t\t// const addRect = (term) => {\n\t\t// \tthis.volcanoDom.top.append('rect')\n\t\t// \t\t.attr('width', 10)\n\t\t// \t\t.attr('height', 10)\n\t\t// \t\t.attr('transform', `translate(${term.rectX}, ${y})`)\n\t\t// \t\t.attr('fill', term.color)\n\t\t// }\n\n\t\tconst firstTerm = this.viewData.termInfo.first\n\t\taddLabel(firstTerm)\n\t\t// addRect(firstTerm)\n\n\t\tconst secondTerm = this.viewData.termInfo.second\n\t\t// addRect(secondTerm)\n\t\tconst secondLabel = addLabel(secondTerm)\n\t\tsecondLabel.attr('text-anchor', 'end')\n\t}\n\n\trenderScale(scale: any, isLeft = false) {\n\t\tconst scaleG = this.volcanoDom[isLeft ? 'yAxis' : 'xAxis']\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(${scale.x}, ${scale.y})`)\n\t\t\t.call(isLeft ? axisLeft(scale.scale) : axisBottom(scale.scale))\n\n\t\taxisstyle({\n\t\t\taxis: scaleG,\n\t\t\tcolor: 'black',\n\t\t\tshowline: true\n\t\t})\n\t}\n\n\trenderFoldChangeLine(plotDim: VolcanoPlotDimensions) {\n\t\t//logFoldChangeLine\n\t\tthis.volcanoDom.plot\n\t\t\t.append('line')\n\t\t\t.attr('stroke', '#ccc')\n\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t.attr('x1', plotDim.logFoldChangeLine.x)\n\t\t\t.attr('x2', plotDim.logFoldChangeLine.x)\n\t\t\t.attr('y1', plotDim.logFoldChangeLine.y1)\n\t\t\t.attr('y2', plotDim.logFoldChangeLine.y2)\n\t}\n\n\t/** Quadtree-driven hover & click overlay. Mirrors the manhattan plot:\n\t * - a transparent SVG rect (cover) sits over the plot rect and absorbs\n\t * mouse events so coincident dots are all reachable;\n\t * - hover finds every point within (dotRadiusPx + 3) px and shows a\n\t * single-gene table2col tooltip OR a multi-gene sortable table;\n\t * - click launches the per-gene action menu directly for one hit, or\n\t * opens a click-menu with a row-clickable table for many hits. */\n\tsetupOverlayInteractions(plotDim: VolcanoPlotDimensions) {\n\t\t// Skip for term types with no data point actions (e.g. SCCT) \u2014 preserves\n\t\t// existing behavior where SCCT volcanoes have no per-dot interactions.\n\t\tif (this.termType === SINGLECELL_CELLTYPE) return\n\n\t\tconst points = this.viewData.pointData as DataPointEntry[]\n\t\tif (!points || points.length === 0) return\n\n\t\t// PNG-aligned radius for hover fills + hit-radius. The SVG overlay rings\n\t\t// (points[0].radius) are deliberately drawn smaller to keep their outer\n\t\t// stroke from overhanging the PNG dot.\n\t\tconst dotRadiusPx = this.viewData.plotExtent.dotRadiusPx\n\t\tconst hitRadius = dotRadiusPx + 3\n\t\tconst maxTooltipGenes = this.settings.maxTooltipGenes\n\n\t\t// Hover-ring layer \u2014 visual only, never intercepts mouse events so the\n\t\t// cover keeps absorbing them.\n\t\tconst hoverLayer = this.volcanoDom.plot.append('g').attr('id', 'sjpp-volcano-hover').style('pointer-events', 'none')\n\n\t\t// Cover rect \u2014 last child of plot group so it sits on top of dots,\n\t\t// hover rings, and the fold-change line.\n\t\tconst cover = this.volcanoDom.plot\n\t\t\t.append('rect')\n\t\t\t.attr('id', 'sjpp-volcano-cover')\n\t\t\t.attr('x', plotDim.plot.x)\n\t\t\t.attr('y', plotDim.plot.y)\n\t\t\t.attr('width', plotDim.plot.width)\n\t\t\t.attr('height', plotDim.plot.height)\n\t\t\t.attr('fill', 'transparent')\n\t\t\t.style('pointer-events', 'all')\n\t\t\t.style('cursor', 'default')\n\n\t\t// Quadtree in cover-local space \u2014 d.x/d.y are SVG-absolute, so subtract\n\t\t// the plot rect's origin once when building the tree.\n\t\tconst qt = quadtree<DataPointEntry>()\n\t\t\t.x(d => d.x - plotDim.plot.x)\n\t\t\t.y(d => d.y - plotDim.plot.y)\n\t\t\t.addAll(points)\n\n\t\tconst hoverTip = this.dom.tip\n\t\tconst clickMenu = new Menu({\n\t\t\tpadding: '',\n\t\t\tonHide: () => {\n\t\t\t\tclickMenuIsShown = false\n\t\t\t\t// Drop the persisted highlight once the user dismisses the menu.\n\t\t\t\tdrawHoverRings([])\n\t\t\t}\n\t\t})\n\t\tlet clickMenuIsShown = false\n\n\t\tconst highlightColor = this.settings.defaultHighlightColor\n\t\t// Inset by stroke-width/2 (= 0.5 px for stroke=1) so the orange fill\n\t\t// stops at the ring's inner edge \u2014 the colored stroke stays fully\n\t\t// visible around the highlight instead of being painted over.\n\t\tconst highlightRadius = Math.max(0.5, dotRadiusPx - 0.5)\n\t\tconst drawHoverRings = (dots: DataPointEntry[]) => {\n\t\t\thoverLayer.selectAll('circle').remove()\n\t\t\tfor (const d of dots) {\n\t\t\t\thoverLayer\n\t\t\t\t\t.append('circle')\n\t\t\t\t\t.attr('cx', d.x)\n\t\t\t\t\t.attr('cy', d.y)\n\t\t\t\t\t.attr('r', highlightRadius)\n\t\t\t\t\t.attr('fill', highlightColor)\n\t\t\t\t\t.attr('fill-opacity', 0.9)\n\t\t\t}\n\t\t}\n\n\t\tconst findCandidates = (event: MouseEvent) => {\n\t\t\tconst rect = (cover.node() as SVGRectElement).getBoundingClientRect()\n\t\t\tconst mx = event.clientX - rect.left\n\t\t\tconst my = event.clientY - rect.top\n\t\t\tconst candidates = findPointsInRadius<DataPointEntry>(\n\t\t\t\tqt,\n\t\t\t\tmx,\n\t\t\t\tmy,\n\t\t\t\thitRadius,\n\t\t\t\td => d.x - plotDim.plot.x,\n\t\t\t\td => d.y - plotDim.plot.y\n\t\t\t)\n\t\t\tcandidates.sort((a, b) => a.distance - b.distance)\n\t\t\treturn candidates.map(c => c.point)\n\t\t}\n\n\t\tcover.on('mousemove', (event: MouseEvent) => {\n\t\t\tif (clickMenuIsShown) return\n\t\t\tconst all = findCandidates(event)\n\t\t\tconst shown = all.slice(0, maxTooltipGenes)\n\t\t\tconst additionalCount = all.length - maxTooltipGenes\n\n\t\t\tif (shown.length === 0) {\n\t\t\t\tdrawHoverRings([])\n\t\t\t\thoverTip.hide()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tdrawHoverRings(shown)\n\t\t\thoverTip.clear().show(event.clientX, event.clientY)\n\n\t\t\tif (shown.length === 1) {\n\t\t\t\tconst table = table2col({ holder: hoverTip.d.append('table') })\n\t\t\t\taddTooltipRows(shown[0], table, this.termType)\n\t\t\t} else {\n\t\t\t\tconst holder = hoverTip.d.append('div').style('margin', '10px')\n\t\t\t\trenderVolcanoGeneTable(holder, shown, this.termType, this.settings.pValueType)\n\t\t\t\tif (additionalCount > 0) {\n\t\t\t\t\tholder\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t.style('color', '#666')\n\t\t\t\t\t\t.style('font-style', 'italic')\n\t\t\t\t\t\t.text(`and ${additionalCount} more gene${additionalCount > 1 ? 's' : ''}...`)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tcover.on('mouseleave', () => {\n\t\t\t// Don't clear rings while the click menu is showing \u2014 the highlight\n\t\t\t// must stay on the picked dots until the user dismisses the menu.\n\t\t\tif (!clickMenuIsShown) drawHoverRings([])\n\t\t\thoverTip.hide()\n\t\t})\n\n\t\tcover.on('click', (event: MouseEvent) => {\n\t\t\tconst candidates = findCandidates(event)\n\t\t\tif (candidates.length === 0) return\n\t\t\thoverTip.hide()\n\t\t\t// Persist highlight on the picked dots \u2014 clickMenu.onHide clears it.\n\t\t\tdrawHoverRings(candidates)\n\t\t\tclickMenuIsShown = true\n\n\t\t\tif (candidates.length === 1) {\n\t\t\t\t// Use clickMenu (not hoverTip) so the cover's mouseleave handler\n\t\t\t\t// doesn't dismiss this menu when the cursor moves up to a button.\n\t\t\t\topenActionMenu(candidates[0], event, clickMenu, this.termType, this.interactions)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tclickMenu.clear().show(event.clientX, event.clientY)\n\t\t\tconst holder = clickMenu.d.append('div').style('margin', '10px')\n\t\t\trenderVolcanoGeneTable(holder, candidates, this.termType, this.settings.pValueType, {\n\t\t\t\t// Radio buttons (not checkboxes) \u2014 volcano actions only target one gene.\n\t\t\t\tsingleMode: true,\n\t\t\t\tnoButtonCallback: (i: number) => {\n\t\t\t\t\tconst d = candidates[i]\n\t\t\t\t\topenActionMenu(d, event, clickMenu, this.termType, this.interactions)\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trenderStatsMenu() {\n\t\t//Render any images. viewModel returns the response array of images or []\n\t\tfor (const img of this.viewData.images || []) {\n\t\t\tthis.dom.actionsTip.d\n\t\t\t\t.append('img')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t.style('margin-top', '-30px')\n\t\t\t\t.attr('width', 450)\n\t\t\t\t.attr('height', 450)\n\t\t\t\t.attr('src', img.src)\n\t\t}\n\t\tconst tableHolder = this.dom.actionsTip.d\n\t\t\t.append('div')\n\t\t\t//Show the stats table underneath the images if > 1 image or to the right if only 1 image\n\t\t\t.style('display', this.viewData.images.length == 1 ? 'inline-block' : 'block')\n\t\t\t//Top margin is roughly inline with image however the margins are set by server\n\t\t\t//Likewise the image margins are undetectable.\n\t\t\t//This is a roughly satistifes the different image margin scenarios.\n\t\t\t.style('margin', `${this.viewData.images.length == 1 ? `40px 10px` : `0px 0px`} 0px 5px`)\n\t\t\t.style('vertical-align', 'top')\n\t\tconst table = table2col({ holder: tableHolder })\n\t\tfor (const d of this.viewData.statsData) {\n\t\t\tconst [td1, td2] = table.addRow()\n\t\t\ttd1.text(d.label)\n\t\t\ttd2.style('text-align', 'end').text(d.value)\n\t\t}\n\t}\n\n\trenderPValueTable() {\n\t\tif (!this.settings.showPValueTable) return\n\t\t// Cap rendered rows to prevent browser OOM with large datasets (e.g. 30k+ significant promoters).\n\t\t// The full data is still available in pValueTableData.rows for export/search.\n\t\tconst maxTableRows = 5000\n\t\tconst allRows = this.viewData.pValueTableData.rows\n\t\tconst rows = allRows.length > maxTableRows ? allRows.slice(0, maxTableRows) : allRows\n\t\tif (allRows.length > maxTableRows) {\n\t\t\tthis.volcanoDom.pValueTable\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '5px 10px')\n\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t.style('color', '#666')\n\t\t\t\t.text(\n\t\t\t\t\t`Showing top ${maxTableRows.toLocaleString()} of ${allRows.length.toLocaleString()} significant results (sorted by fold-change)`\n\t\t\t\t)\n\t\t}\n\t\trenderTable({\n\t\t\tcolumns: this.viewData.pValueTableData.columns,\n\t\t\trows,\n\t\t\tdiv: this.volcanoDom.pValueTable,\n\t\t\tshowLines: true,\n\t\t\tmaxHeight: `${this.viewData.pValueTableData.height}px`,\n\t\t\tresize: true,\n\t\t\theader: { allowSort: true },\n\t\t\tnoRadioBtn: true,\n\t\t\tnoButtonCallback: (i: number) => {\n\t\t\t\t//On click, persistently highlight the data point\n\t\t\t\t// if (this.termType != GENE_EXPRESSION) return\n\t\t\t\tconst gene = this.viewData.pValueTableData.rows[i][0].value as string\n\t\t\t\tif (!gene) return\n\t\t\t\tthis.interactions.highlightDataPoint(gene)\n\t\t\t},\n\t\t\thoverEffects: (tr, row) => {\n\t\t\t\t//May restrict termTypes later\n\t\t\t\t// if (this.termType != GENE_EXPRESSION) return\n\t\t\t\t//Highlight the data point when hovering over the table row\n\t\t\t\t//Previously highlighted data points are not affected\n\t\t\t\tconst circles = this.volcanoDom.plot.selectAll('circle').nodes()\n\t\t\t\tconst dataKey = this.termType === DNA_METHYLATION ? 'promoter_id' : 'gene_name'\n\t\t\t\tconst circle = circles.find((d: any) => d.__data__[dataKey] == row[0].value) as any\n\t\t\t\tif (!circle || circle.__data__.highlighted) return\n\n\t\t\t\t/** Circles may render behind several other circles, making it hard\n\t\t\t\t * to see the highlight. Clone the circle to appear on top of the\n\t\t\t\t * elements, then destroy. */\n\t\t\t\tlet clone\n\t\t\t\ttr.on('mouseover', () => {\n\t\t\t\t\tif (circle.__data__.highlighted || clone) return\n\t\t\t\t\tclone = this.volcanoDom.plot.node()?.appendChild(circle.cloneNode(true))\n\t\t\t\t\tclone.setAttribute('fill-opacity', 0.9)\n\t\t\t\t})\n\t\t\t\ttr.on('mouseleave', () => {\n\t\t\t\t\tif (!clone) return\n\t\t\t\t\tclone.remove()\n\t\t\t\t\tclone = null\n\t\t\t\t})\n\t\t\t\t//All other circles appear dimmed on hover\n\t\t\t\tthis.volcanoDom.pValueTable.on('mouseover', () => {\n\t\t\t\t\tselectAll(circles).attr('stroke-opacity', 0.075)\n\t\t\t\t})\n\t\t\t\tthis.volcanoDom.pValueTable.on('mouseleave', () => {\n\t\t\t\t\tselectAll(circles).attr('stroke-opacity', (d: any) => (d.significant ? 0.35 : 0.2))\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\tsetSvgSubscriptLabel(textElem: any, prefix: string, subscript: string, suffix: string) {\n\t\ttextElem.text(null)\n\t\ttextElem.append('tspan').text(prefix)\n\t\ttextElem.append('tspan').attr('baseline-shift', 'sub').attr('font-size', '0.7em').text(subscript)\n\t\ttextElem.append('tspan').text(suffix)\n\t}\n}\n\nfunction renderDataPoints(self: any) {\n\t// Visual-only circles. The cover rect added in setupOverlayInteractions\n\t// drives all hover/click \u2014 we strip pointer-events here so events fall\n\t// through to the cover. The p-value table hover-clone effect at\n\t// renderPValueTable() still finds these via selectAll('circle').\n\tself.volcanoDom.plot\n\t\t.selectAll('circle')\n\t\t.data(self.viewData.pointData)\n\t\t.enter()\n\t\t.append('circle')\n\t\t.attr('stroke', (d: DataPointEntry) => rgb(d.color).formatHex())\n\t\t.attr('stroke-opacity', (d: DataPointEntry) => (d.significant ? 0.35 : 0.2))\n\t\t// Match the rust PNG's stroke-width (1) so the overlay ring sits\n\t\t// exactly on top of the rasterized dot.\n\t\t.attr('stroke-width', 1)\n\t\t.attr('fill', self.settings.defaultHighlightColor)\n\t\t.attr('fill-opacity', (d: DataPointEntry) => (d.highlighted ? 0.9 : 0))\n\t\t.attr('cx', (d: DataPointEntry) => d.x)\n\t\t.attr('cy', (d: DataPointEntry) => d.y)\n\t\t.attr('r', (d: DataPointEntry) => d.radius)\n\t\t.style('pointer-events', 'none')\n}\n\n/** Renders the multi-gene table used by both the hover tooltip (when >1 dot\n * is in range) and the click menu. Reuses showResultsTable for sortable\n * columns; volcano omits the `app` arg so manhattan-only Lollipop/Matrix\n * buttons stay hidden. The p-value column matches `settings.pValueType` so\n * the table aligns with the y-axis basis (original vs adjusted). */\nfunction renderVolcanoGeneTable(\n\tholder: any,\n\tdots: DataPointEntry[],\n\ttermType: string,\n\tpValueType: 'original' | 'adjusted',\n\textra: Record<string, any> = {}\n) {\n\tconst isDM = termType === DNA_METHYLATION\n\tconst pLabel = `${pValueType.charAt(0).toUpperCase()}${pValueType.slice(1)} p-value`\n\tconst pField = `${pValueType}_p_value` as 'original_p_value' | 'adjusted_p_value'\n\tconst columns = isDM\n\t\t? [\n\t\t\t\t{ label: 'Promoter' },\n\t\t\t\t{ label: 'Gene(s)' },\n\t\t\t\t{ label: 'log\u2082(FC)', sortable: true },\n\t\t\t\t{ label: pLabel, sortable: true }\n\t\t ]\n\t\t: [{ label: 'Gene' }, { label: 'log\u2082(FC)', sortable: true }, { label: pLabel, sortable: true }]\n\tconst rows = dots.map(d => {\n\t\tconst fc = { value: roundValueAuto(d.fold_change) }\n\t\tconst pval = { value: roundValueAuto(d[pField]) }\n\t\tif (isDM) {\n\t\t\treturn [{ value: (d as any).promoter_id || '' }, { value: d.gene_name || '' }, fc, pval]\n\t\t}\n\t\treturn [{ value: d.gene_name || '' }, fc, pval]\n\t})\n\tshowResultsTable({\n\t\ttableDiv: holder,\n\t\tdataItems: dots,\n\t\tgetGene: (d: any) => d.gene_name,\n\t\tcolumns,\n\t\trows,\n\t\t...extra\n\t} as any)\n}\n\n/** Opens the per-gene action menu at the click point. Action buttons sit at\n * the top of the menu; the same single-gene info shown on hover (gene name,\n * fold-change, p-values) is rendered below so the user can confirm what\n * they're acting on. Used for both the single-hit click flow and the\n * row-drill-down from the multi-hit click menu. */\nfunction openActionMenu(\n\td: DataPointEntry,\n\tevent: MouseEvent,\n\thostMenu: any,\n\ttermType: string,\n\tinteractions: VolcanoInteractions\n) {\n\tconst opts = getActionMenuOpts(d, termType, interactions)\n\thostMenu.clear().show(event.clientX, event.clientY)\n\tconst container = hostMenu.d.append('div').style('margin', '10px')\n\n\tif (opts.length > 0) {\n\t\tconst buttonRow = container.append('div').style('margin-bottom', '10px')\n\t\tfor (const opt of opts) {\n\t\t\tbuttonRow\n\t\t\t\t.append('button')\n\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t.text(opt.label)\n\t\t\t\t.on('click', async () => {\n\t\t\t\t\thostMenu.hide()\n\t\t\t\t\tawait opt.onClick()\n\t\t\t\t})\n\t\t}\n\t}\n\n\tconst table = table2col({ holder: container.append('table') })\n\taddTooltipRows(d, table, termType)\n}\n", "import type { ControlInputEntry } from '#mass/types/mass'\nimport type { VolcanoPlotConfig } from './VolcanoTypes'\nimport { getSampleNum } from './settings/defaults'\nimport { DNA_METHYLATION, GENE_EXPRESSION, SINGLECELL_CELLTYPE } from '#shared/terms.js'\n\n/** Handles settings the controls in the menu based on the app\n * termType.\n *\n * Add additional term type specific controls similar to\n * addGeneExpressionControlInputs(), called in\n * getVolcanoControlInputs(). Add the type to settings/Settings.ts\n *\n * If control should show for multiple but not all term types,\n * then use the getDisplayStyle arg in the control object.\n * //getDisplayStyle: () => {}\n *\n * Preferably, keep all the display (e.g. colors, sizes, etc.) controls\n * at the bottom of the list or at least together\n */\n\nexport class VolcanoControlInputs {\n\tconfig: any\n\tsampleNum?: number\n\t/** term type used to determine which controls to show */\n\ttermType: string\n\t/** control inputs for controls init */\n\tinputs: ControlInputEntry[]\n\tconstructor(config: VolcanoPlotConfig, termType: string) {\n\t\tthis.config = config\n\t\tif (this.config.termType == GENE_EXPRESSION) this.sampleNum = getSampleNum(config)\n\t\tthis.termType = termType\n\t\t//Populated with the default controls for the volcano plot\n\t\tthis.inputs = [\n\t\t\t{\n\t\t\t\tlabel: 'P value significance (-log\u2081\u2080)',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'pValue',\n\t\t\t\ttitle: 'The p-value threshold to determine statistical significance',\n\t\t\t\tmin: 0,\n\t\t\t\t// 5e-324 is the smallest positive number greater than 0 representable\n\t\t\t\t// in IEEE 64-bit floating point (i.e. javascripts native Number.MIN_VALUE)\n\t\t\t\t// -Math.log10(5e-324) = 323.3\n\t\t\t\tmax: 323.3,\n\t\t\t\tstep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'P value',\n\t\t\t\ttype: 'radio',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'pValueType',\n\t\t\t\ttitle: 'Toggle between original and adjusted pvalues for volcano plot',\n\t\t\t\toptions: [\n\t\t\t\t\t{ label: 'Adjusted', value: 'adjusted' },\n\t\t\t\t\t{ label: 'Original', value: 'original' }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Fold change (log\u2082)',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'foldChangeCutoff',\n\t\t\t\ttitle: 'The fold change threshold to determine biological significance',\n\t\t\t\tmin: -10,\n\t\t\t\tmax: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Max interactive dots',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'maxInteractiveDots',\n\t\t\t\ttitle:\n\t\t\t\t\t'Cap on the number of top-significant points the server returns as interactive overlay circles. The PNG still shows every dot.',\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 20000,\n\t\t\t\tstep: 100\n\t\t\t},\n\t\t\t//Preferably, keep all the display (e.g. colors, sizes, etc.) controls\n\t\t\t//at the bottom of the list or at least together\n\t\t\t{\n\t\t\t\tlabel: 'Plot height',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'height',\n\t\t\t\ttitle: 'Height of the plot in pixels',\n\t\t\t\tmin: 300,\n\t\t\t\tmax: 1000\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Plot width',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'width',\n\t\t\t\ttitle: 'Width of the plot in pixels',\n\t\t\t\tmin: 300,\n\t\t\t\tmax: 1000\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Significant value color',\n\t\t\t\ttype: 'color',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\ttitle: 'Default color for significant data points.',\n\t\t\t\tsettingsKey: 'defaultSignColor',\n\t\t\t\tgetDisplayStyle: () => {\n\t\t\t\t\tif (this.config.termType == SINGLECELL_CELLTYPE) return 'none'\n\t\t\t\t\tconst controlColor = this.config.tw?.term?.values?.[this.config.samplelst.groups[0].name]?.color\n\t\t\t\t\tconst caseColor = this.config.tw?.term?.values?.[this.config.samplelst.groups[1].name].color\n\t\t\t\t\tif (controlColor && caseColor) return 'none'\n\t\t\t\t\telse return ''\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Non-significant value color',\n\t\t\t\ttype: 'color',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\ttitle: 'Default color for non-significant data points.',\n\t\t\t\tsettingsKey: 'defaultNonSignColor'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Highlight color',\n\t\t\t\ttype: 'color',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\ttitle: 'Default color for highlighted data points.',\n\t\t\t\tsettingsKey: 'defaultHighlightColor'\n\t\t\t}\n\t\t]\n\n\t\tthis.setVolcanoControlInputs()\n\t}\n\n\t/** Add more term type specific controls here. */\n\tsetVolcanoControlInputs() {\n\t\tthis.addGeneExpControlInputs()\n\t\tthis.addDNAMethControlInputs()\n\t\tthis.addSingleCellCTControlInputs()\n\t}\n\n\taddGeneExpControlInputs() {\n\t\tif (this.termType !== GENE_EXPRESSION) return\n\t\tconst geInputs = [\n\t\t\t{\n\t\t\t\tlabel: 'Minimum read count',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'minCount',\n\t\t\t\ttitle: 'The smallest number of reads required for a gene to be considered in the analysis',\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 10000\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Minimum total read count',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'minTotalCount',\n\t\t\t\ttitle: 'The smallest total number of reads required for a gene to be considered in the analysis',\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 10000\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'CPM cutoff',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'cpmCutoff',\n\t\t\t\ttitle: 'The minimum normalized expression threshold to retain only genes with sufficient expression',\n\t\t\t\tmin: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Method',\n\t\t\t\ttype: 'radio',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'method',\n\t\t\t\ttitle: 'Toggle between analysis methods',\n\t\t\t\toptions: this.getMethodOptions()\n\t\t\t}\n\t\t\t// {\n\t\t\t// \tlabel: 'Rank Genes by',\n\t\t\t// \ttype: 'radio',\n\t\t\t// \tchartType: 'volcano',\n\t\t\t// \tsettingsKey: 'rankBy',\n\t\t\t// \ttitle: 'Rank genes by either the absolute value of the fold change or the variance',\n\t\t\t// \toptions: [\n\t\t\t// \t\t{ label: 'abs(Fold Change)', value: 'abs(foldChange)' },\n\t\t\t// \t\t{ label: 'Variance', value: 'variance' }\n\t\t\t// \t],\n\t\t\t// \t//TODO: will enable this feature when there is backhand support\n\t\t\t// \tgetDisplayStyle: () => 'none'\n\t\t\t// }\n\t\t]\n\n\t\tthis.inputs.splice(0, 0, ...geInputs)\n\t}\n\n\taddDNAMethControlInputs() {\n\t\tif (this.termType !== DNA_METHYLATION) return\n\t\tconst dmInputs = [\n\t\t\t{\n\t\t\t\tlabel: 'Min samples per group',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'volcano',\n\t\t\t\tsettingsKey: 'minSamplesPerGroup',\n\t\t\t\ttitle: 'Minimum non-NA samples required per group for a promoter to be tested',\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 100\n\t\t\t}\n\t\t]\n\t\tthis.inputs.splice(0, 0, ...dmInputs)\n\t}\n\n\taddSingleCellCTControlInputs() {\n\t\tif (this.termType !== SINGLECELL_CELLTYPE) return\n\n\t\tconst scctInputs = []\n\n\t\tthis.inputs.splice(0, 0, ...scctInputs)\n\t}\n\n\tgetMethodOptions() {\n\t\tif (this.termType !== GENE_EXPRESSION) return\n\t\tconst settings = this.config.settings.volcano\n\t\tconst features = JSON.parse(sessionStorage.getItem('optionalFeatures') as string)\n\t\tif (features?.runDE_methods?.length) {\n\t\t\tconst opts: { label: string; value: string }[] = []\n\t\t\tfor (const m of features.runDE_methods) {\n\t\t\t\topts.push({ label: m, value: m.toLowerCase() })\n\t\t\t}\n\t\t\treturn opts\n\t\t}\n\t\tif (this.sampleNum! < settings!.sampleNumCutoff) {\n\t\t\treturn [\n\t\t\t\t{ label: 'edgeR', value: 'edgeR' },\n\t\t\t\t{ label: 'Wilcoxon', value: 'wilcoxon' },\n\t\t\t\t{ label: 'Limma', value: 'limma' }\n\t\t\t]\n\t\t} else return [{ label: 'Wilcoxon', value: 'wilcoxon' }]\n\t}\n}\n", "import type { MassState, BasePlotConfig } from '#mass/types/mass'\nimport { getCompInit, copyMerge, type RxComponent, type AppApi } from '#rx'\nimport { PlotBase } from '../PlotBase'\nimport { fillTermWrapper } from '#termsetting'\nimport { Menu, sayerror } from '#dom'\nimport { controlsInit } from '../controls'\nimport { getDefaultVolcanoSettings, validateVolcanoSettings } from './settings/defaults'\nimport type { VolcanoOpts, VolcanoDom } from './VolcanoTypes'\nimport { VolcanoModel } from './model/VolcanoModel'\nimport { VolcanoViewModel } from './viewModel/VolcanoViewModel'\nimport { VolcanoInteractions } from './interactions/VolcanoInteractions'\nimport { VolcanoPlotView } from './view/VolcanoPlotView'\nimport { VolcanoControlInputs } from './VolcanoControlInputs'\nimport { getCombinedTermFilter } from '#filter'\nimport { GENE_EXPRESSION, SINGLECELL_CELLTYPE } from '#shared/terms.js'\n\nclass Volcano extends PlotBase implements RxComponent {\n\tstatic type = 'volcano'\n\ttype: string\n\tcomponents: { controls: any }\n\tdom: VolcanoDom\n\tinteractions?: VolcanoInteractions\n\tmodel!: VolcanoModel\n\tview!: VolcanoPlotView\n\ttermType: string\n\n\tconstructor(opts: VolcanoOpts, api) {\n\t\tsuper(opts, api)\n\t\tif (this.opts.parentId) this.parentId = this.opts.parentId\n\t\tthis.type = Volcano.type\n\t\tthis.components = {\n\t\t\tcontrols: {}\n\t\t}\n\n\t\tthis.termType = opts.termType\n\t\tconst holder = opts.holder\n\t\t\t.classed('sjpp-volcano-main', true)\n\t\t\t.attr('data-testid', `sjpp-volcano-main-${opts.termType}`)\n\t\t//Either allow a node to be passed or create a new div\n\t\tconst controls = typeof opts.controls == 'object' ? opts.controls : holder || (holder as any).append('div')\n\t\tconst error = opts.holder\n\t\t\t.append('div')\n\t\t\t.attr('id', 'sjpp-volcano-error')\n\t\t\t.attr('data-testid', `sjpp-volcano-error-${opts.termType}`)\n\t\t\t.style('opacity', 0.75) as any\n\t\tthis.dom = {\n\t\t\tholder,\n\t\t\tcontrols,\n\t\t\terror,\n\t\t\twait: holder\n\t\t\t\t.append('div')\n\t\t\t\t.attr('id', 'sjpp-volcano-wait')\n\t\t\t\t.attr('data-testid', `sjpp-volcano-wait-${opts.termType}`)\n\t\t\t\t.style('opacity', 0.75)\n\t\t\t\t.style('padding', '20px')\n\t\t\t\t.text('Loading...') as any,\n\t\t\ttip: new Menu({ padding: '' }),\n\t\t\tactionsTip: new Menu({ padding: '' })\n\t\t}\n\t}\n\n\tgetState(appState: MassState) {\n\t\tconst config: any = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow new Error(\n\t\t\t\t`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t\t)\n\t\t}\n\t\tconst parentConfig: any = this.parentId && appState.plots.find(p => p.id === this.parentId)\n\t\tconst termfilter = getCombinedTermFilter(appState, config.filter || parentConfig?.filter)\n\n\t\treturn {\n\t\t\tconfig: Object.assign({}, config, {\n\t\t\t\tsettings: {\n\t\t\t\t\tvolcano: config.settings.volcano\n\t\t\t\t}\n\t\t\t}),\n\t\t\ttermfilter\n\t\t}\n\t}\n\n\tasync setControls() {\n\t\tconst plotConfig = this.app.getState().plots.find((p: any) => p.id === this.id)\n\t\tconst controls = new VolcanoControlInputs(plotConfig, this.termType)\n\n\t\tthis.components.controls = await controlsInit({\n\t\t\tapp: this.app,\n\t\t\tid: this.id,\n\t\t\tholder: this.dom.controls.style('display', 'inline-block'),\n\t\t\tinputs: controls.inputs\n\t\t})\n\n\t\tthis.components.controls.on('downloadClick.volcano', () => this.interactions!.download(this.termType))\n\t\tif (plotConfig.chartType == 'differentialAnalysis')\n\t\t\tthis.components.controls.on('helpClick.differentialAnalysis', () =>\n\t\t\t\t//Opens the page for the differential analysis wiki\n\t\t\t\t//Can't put in parent as DA does not have a controls component\n\t\t\t\twindow.open('https://github.com/stjude/proteinpaint/wiki/Differential-analysis')\n\t\t\t)\n\t}\n\n\tasync init() {\n\t\tthis.interactions = new VolcanoInteractions(this.app, this.id, this.dom)\n\t\tthis.model = new VolcanoModel(this.app, this.termType)\n\t\tthis.view = new VolcanoPlotView(this.dom, this.interactions, this.termType)\n\t\tawait this.setControls()\n\t}\n\n\tasync main() {\n\t\tif (!this.interactions) throw new Error('Volcano Interactions not initialized')\n\t\tif (!this.model) throw new Error('Volcano Model not initialized')\n\t\tif (!this.view) throw new Error('Volcano View not initialized')\n\n\t\tconst config = structuredClone(this.state.config)\n\t\t//TODO: Fix this to use parentId instead\n\t\tif (config.chartType != this.type && config.childType != this.type) return\n\n\t\tconst settings = config.settings.volcano\n\t\ttry {\n\t\t\t//Only show Loading for data requests that take longer than 500ms\n\t\t\tconst showWait = setTimeout(() => {\n\t\t\t\tthis.dom.wait.style('display', 'block')\n\t\t\t}, 500)\n\n\t\t\t/** Fetch data */\n\t\t\tconst response = await this.model.getData(config, settings)\n\t\t\tthis.dom.error.text('')\n\t\t\tif (!response || response.error || !response.data || !response.data.volcanoPng || !response.data.totalRows) {\n\t\t\t\tsayerror(this.dom.error, response?.error || 'No data returned from server')\n\t\t\t\tclearTimeout(showWait)\n\t\t\t\tthis.dom.wait.style('display', 'none')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t/** Format response into an object for rendering */\n\t\t\tconst viewModel = new VolcanoViewModel(config, response, settings)\n\t\t\t//Pass table data for downloading\n\t\t\tthis.interactions.pValueTableData = viewModel.viewData.pValueTableData\n\t\t\tthis.interactions.data = response.data.dots\n\n\t\t\t/** Render formatted data */\n\t\t\tthis.view.render(settings, viewModel.viewData)\n\n\t\t\tif (!response.data.dots.length) {\n\t\t\t\tthis.dom.error.text('No points passed the significance thresholds').style('color', '#555')\n\t\t\t}\n\n\t\t\tclearTimeout(showWait)\n\t\t\tthis.dom.wait.style('display', 'none')\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(e.message || e)\n\t\t\telse if (e.stack) console.log(e.stack)\n\t\t\tthrow e\n\t\t}\n\t}\n}\n\nexport const volcanoInit = getCompInit(Volcano)\nexport const componentInit = volcanoInit\n\nexport async function getPlotConfig(opts: any, app: AppApi) {\n\tif (!opts.termType) throw new Error('.termType is required')\n\n\tconst config = {\n\t\tsettings: {\n\t\t\tvolcano: getDefaultVolcanoSettings(opts.overrides, opts)\n\t\t},\n\t\thighlightedData: opts.highlightedData || [],\n\t\ttermType: opts.termType\n\t}\n\n\t//Define Gene Expression config\n\tif (opts.termType == GENE_EXPRESSION) {\n\t\tif (opts.confounderTws) {\n\t\t\ttry {\n\t\t\t\tfor (const tw of opts.confounderTws) {\n\t\t\t\t\tawait fillTermWrapper(tw, app.vocabApi)\n\t\t\t\t}\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.error(e.message || e)\n\t\t\t\tthrow new Error(`Volcano getPlotConfig() failed to fill confounder term wrappers: ${e}`)\n\t\t\t}\n\t\t}\n\t\tObject.assign(config, {\n\t\t\tconfounderTws: opts.confounderTws || [],\n\t\t\tsamplelst: opts.samplelst\n\t\t})\n\t}\n\n\t//Define Single Cell Cell Type config\n\tif (opts.termType == SINGLECELL_CELLTYPE) {\n\t\tObject.assign(config, {\n\t\t\t//TODO: Fix this logic\n\t\t\tsample: opts.experimentID || opts.sample || opts.samples?.[0]?.experiments[0]?.experimentID,\n\t\t\ttermId: app.vocabApi.termdbConfig.queries.singleCell.DEgenes.termId,\n\t\t\t//TODO: 'Cluster' is a fallback for development\n\t\t\t//Should require opts.categoryName in the future\n\t\t\tcategoryName: opts.categoryName || 'Cluster'\n\t\t})\n\t}\n\n\t//Validate user submitted unavailable/inappropriate settings\n\tvalidateVolcanoSettings(config, opts)\n\n\treturn copyMerge(config, opts)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,mBAAN,MAAuB;AAAA,EAkC7B,YAAY,QAA2B,UAA0B,UAAoC;AA1BrG,0BAAiB;AACjB,6BAAoB;AACpB,4BAAmB;AACnB,4BAAmB;AAEnB;AAAA,wBAAe;AACf,wBAAe;AAEf;AAAA,gCAAuB;AACvB,gCAAuB;AACvB,4BAAmB;AACnB,4BAAmB;AAEnB;AAAA,uBAAc;AAEd;AAAA,4BAAmB;AAGnB,SAAS,SAAS;AAClB,SAAS,YAAY;AACrB,SAAS,WAAW;AACpB,SAAS,SAAS;AAMjB,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,QAAQ,KAAK,WAAW,KAAK,SAAS;AAE3C,SAAK,WAAW,SAAS,KAAK;AAI9B,UAAM,EAAE,WAAW,aAAa,IAAI,eAAe,KAAK,MAAM;AAC9D,UAAM,UAAU,EAAE,eAAe,cAAc,eAAe,UAAU;AAExE,SAAK,cAAc;AAAA,MAClB,SAAS;AAAA,QACR,EAAE,OAAO,0BAAqB,SAAS,UAAU,KAAK;AAAA,QACtD,EAAE,OAAO,oBAAoB,UAAU,KAAK;AAAA,QAC5C,EAAE,OAAO,oBAAoB,UAAU,KAAK;AAAA,MAC7C;AAAA;AAAA;AAAA,MAGA,MAAM,CAAC;AAAA,MACP,QAAQ,SAAS,SAAS,KAAK;AAAA,IAChC;AACA,SAAK,WAAW;AAChB,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,KAAK,YAAY;AAEjC,SAAK,gBAAgB;AAErB,UAAM,UAAU,KAAK,kBAAkB;AACvC,SAAK,iBAAiB;AACtB,UAAM,YAAY,KAAK,aAAa,SAAS,cAAc,SAAS;AAEpE,QAAI,KAAK,SAAS,iBAAiB;AAElC,YAAM,gBAAgB,KAAK,YAAY,QAAQ,UAAU,OAAK,EAAE,MAAM,SAAS,wBAAmB,CAAC;AACnG,WAAK,YAAY,KAAK,KAAK,CAAC,GAAQ,MAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK;AAAA,IAC/F;AAEA,SAAK,WAAW;AAAA,MACf,QAAQ,SAAS,UAAU,CAAC;AAAA,MAC5B,UAAU,KAAK,YAAY,OAAO;AAAA,MAClC;AAAA,MACA;AAAA,MACA,iBAAiB,KAAK;AAAA,MACtB,WAAW,KAAK,aAAa;AAAA,MAC7B,aAAa,KAAK,eAAe;AAAA,MACjC,YAAY,SAAS,KAAK;AAAA,MAC1B,YAAY,SAAS,KAAK;AAAA,IAC3B;AAAA,EACD;AAAA,EAEA,cAAc;AACb,QAAI,KAAK,YAAY,gBAAiB,QAAO;AAAA,aACpC,KAAK,YAAY,gBAAiB,QAAO;AAAA,aACzC,KAAK,YAAY,oBAAqB,QAAO;AAAA,QACjD,OAAM,IAAI,MAAM,qBAAqB,KAAK,QAAQ,EAAE;AAAA,EAC1D;AAAA,EAEA,kBAAkB;AAKjB,UAAM,MAAM,KAAK,SAAS,KAAK;AAG/B,SAAK,mBAAmB,IAAI;AAC5B,SAAK,mBAAmB,IAAI;AAC5B,SAAK,eAAe,IAAI;AACxB,SAAK,eAAe,IAAI;AAExB,SAAK,uBAAuB,IAAI;AAChC,SAAK,uBAAuB,IAAI;AAChC,SAAK,mBAAmB,IAAI;AAC5B,SAAK,mBAAmB,IAAI;AAC5B,SAAK,cAAc,IAAI;AACvB,QAAI,IAAI,mBAAmB,EAAG,MAAK,mBAAmB,IAAI;AAAA,EAC3D;AAAA,EAEA,oBAAoB;AAMnB,UAAM,MAAM,KAAK,SAAS,KAAK;AAC/B,UAAM,QAAQ,IAAI;AAClB,UAAM,QAAQ,IAAI;AAIlB,UAAM,aAAa,OAAY,EAAE,OAAO,CAAC,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AACxG,UAAM,aAAa,OAAY,EAAE,OAAO,CAAC,KAAK,cAAc,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAKhG,UAAM,SAAS,OAAY,EACzB,OAAO,CAAC,KAAK,sBAAsB,KAAK,oBAAoB,CAAC,EAC7D,MAAM,CAAC,WAAW,KAAK,oBAAoB,GAAG,WAAW,KAAK,oBAAoB,CAAC,CAAC;AACtF,UAAM,SAAS,OAAY,EACzB,OAAO,CAAC,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EACrD,MAAM,CAAC,WAAW,KAAK,gBAAgB,GAAG,WAAW,KAAK,gBAAgB,CAAC,CAAC;AAE9E,WAAO;AAAA,MACN,KAAK;AAAA;AAAA,QAEJ,QAAQ,QAAQ,KAAK,SAAS,KAAK,YAAY,IAAI,KAAK,SAAS;AAAA,QACjE,OAAO,QAAQ,KAAK,WAAW;AAAA,MAChC;AAAA,MACA,KAAK;AAAA,QACJ,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,QACX,GAAG,KAAK,WAAW,QAAQ,IAAI,KAAK;AAAA,QACpC,GAAG,KAAK,SAAS,QAAQ,KAAK,YAAY,KAAK;AAAA,MAChD;AAAA,MACA,QAAQ;AAAA,QACP,OAAO;AAAA,QACP,GAAG,KAAK;AAAA,QACR,GAAG,QAAQ,KAAK,SAAS,KAAK,SAAS;AAAA,MACxC;AAAA,MACA,YAAY;AAAA,QACX,MAAM,UAAU,KAAK,SAAS,UAAU;AAAA,QACxC,GAAG,KAAK,WAAW;AAAA,QACnB,GAAG,KAAK,SAAS,QAAQ;AAAA,MAC1B;AAAA,MACA,QAAQ;AAAA,QACP,OAAO;AAAA,QACP,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACT;AAAA,MACA,mBAAmB;AAAA,QAClB,GAAG,WAAW,CAAC,IAAI,KAAK;AAAA,QACxB,IAAI,KAAK;AAAA,QACT,IAAI,QAAQ,KAAK,SAAS;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,YACC,SAGC;AACD,QAAI,KAAK,YAAY,mBAAmB,KAAK,YAAY,gBAAiB;AAC1E,UAAM,WAAW,CAAC,SAAiB;AAClC,UAAI,KAAK,UAAU,GAAI,QAAO,KAAK,UAAU,GAAG,EAAE,IAAI;AACtD,aAAO;AAAA,IACR;AAEA,WAAO;AAAA;AAAA,MAEN,GAAG,QAAQ,IAAI,IAAI;AAAA,MACnB,OAAO;AAAA;AAAA,QAEN,OAAO,SAAS,GAAG,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS,YAAY,GAAG;AAAA,QACzF,GAAG;AAAA;AAAA,MAEJ;AAAA,MACA,QAAQ;AAAA;AAAA,QAEP,OAAO,SAAS,GAAG,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS,YAAY,GAAG;AAAA,QACzF,GAAG,KAAK,SAAS;AAAA;AAAA,MAElB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,aAAa,UAAiC,cAAsB,WAAmB;AAItF,UAAM,SAAS,KAAK;AACpB,UAAM,WAAgB,gBAAgB,KAAK,QAAQ;AACnD,eAAW,KAAK,UAAU;AACzB,YAAM,eAAe,KAAK,aAAa,kBAAkB,EAAE,cAAc,EAAE;AAC3E,QAAE,cAAc,KAAK,QAAQ,iBAAiB,SAAS,YAAY;AAEnE,QAAE,cAAc;AAChB,WAAK,cAAc,GAAG,EAAE,aAAa,cAAc,SAAS;AAC5D,UAAI,EAAE,aAAa;AAClB,aAAK;AACL,cAAM,MAAM;AAAA,UACX,EAAE,OAAO,eAAe,EAAE,WAAW,EAAE;AAAA,UACvC,EAAE,OAAO,eAAe,EAAE,gBAAgB,EAAE;AAAA,UAC5C,EAAE,OAAO,eAAe,EAAE,gBAAgB,EAAE;AAAA,QAC7C;AACA,YAAI,KAAK,YAAY,iBAAiB;AACrC,cAAI,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,CAAC;AAAA,QAC9E,OAAO;AACN,cAAI,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,CAAC;AAAA,QAC9C;AAEA,YAAI,KAAK,SAAS,gBAAiB,MAAK,YAAY,KAAK,KAAK,GAAG;AAAA,MAClE,OAAO;AACN,aAAK;AAAA,MACN;AAMA,QAAE,IAAI,EAAE,UAAU,KAAK;AACvB,QAAE,IAAI,EAAE,UAAU,KAAK;AACvB,QAAE,SAAS;AAAA,IACZ;AAGA,SAAK,iBAAiB,KAAK,SAAS,KAAK;AACzC,SAAK,oBAAoB,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK,YAAY,KAAK,cAAc;AAEvF,aAAS,KAAK,CAAC,GAAQ,MAAW,EAAE,cAAc,EAAE,WAAW;AAC/D,WAAO;AAAA,EACR;AAAA,EAEA,cAAc,GAAmB,aAAsB,cAAsB,WAAmB;AAC/F,QAAI,CAAC,EAAE,aAAa,KAAK,YAAY;AACpC,YAAM,IAAI,MAAM,8BAA8B,KAAK,UAAU,CAAC,CAAC,EAAE;AAClE,QAAI,aAAa;AAChB,UAAI,gBAAgB,UAAW,GAAE,QAAQ,EAAE,cAAc,IAAI,YAAY;AAAA,UACpE,GAAE,QAAQ,KAAK,SAAS;AAAA,IAC9B,MAAO,GAAE,QAAQ,KAAK,SAAS;AAAA,EAChC;AAAA,EAEA,eAAe;AACd,UAAM,YAAY;AAAA,MACjB;AAAA,QACC,OAAO,6BAA6B,KAAK,QAAQ;AAAA,QACjD,OAAO,eAAgB,KAAK,iBAAiB,OAAQ,KAAK,iBAAiB,KAAK,kBAAkB;AAAA,MACnG;AAAA,MACA;AAAA,QACC,OAAO,yBAAyB,KAAK,QAAQ;AAAA,QAC7C,OAAO,KAAK;AAAA,MACb;AAAA,MACA;AAAA,QACC,OAAO,mBAAmB,KAAK,QAAQ;AAAA,QACvC,OAAO,KAAK,iBAAiB,KAAK;AAAA,MACnC;AAAA,IACD;AACA,QAAI,KAAK,YAAY,mBAAmB,KAAK,YAAY,iBAAiB;AACzE,gBAAU;AAAA,QACT;AAAA,UACC,OAAO,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,OAAO;AAAA,UAC9C,OAAO,KAAK,SAAS;AAAA,QACtB;AAAA,QACA;AAAA,UACC,OAAO,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,OAAO;AAAA,UAC9C,OAAO,KAAK,SAAS;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAEA,QAAI,KAAK,SAAS,QAAQ,UAAa,KAAK,SAAS,QAAQ,MAAM;AAClE,gBAAU,KAAK;AAAA,QACd,OAAO;AAAA,QACP,OAAO,eAAe,KAAK,SAAS,GAAG;AAAA,MACxC,CAAC;AAAA,IACF;AACA,WAAO;AAAA,EACR;AAAA,EAEA,mBAAmB;AAClB,QAAI,KAAK,YAAY,iBAAiB;AACrC,WAAK,YAAY,QAAQ,OAAO,GAAG,GAAG,EAAE,OAAO,YAAY,UAAU,KAAK,GAAG,EAAE,OAAO,WAAW,UAAU,KAAK,CAAC;AAAA,IAClH,OAAO;AACN,WAAK,YAAY,QAAQ,OAAO,GAAG,GAAG,EAAE,OAAO,aAAa,UAAU,KAAK,CAAC;AAAA,IAC7E;AAAA,EACD;AAAA,EAEA,iBAAiB;AAChB,UAAM,cAAc;AAAA,MACnB,QAAQ,oBAAI,IAAY;AAAA,IACzB;AACA,QAAI,KAAK,YAAY,iBAAiB;AACrC,UAAI,KAAK,SAAS,UAAU,WAAW,aAAa,KAAK,MAAM,IAAI,KAAK;AACvE,oBAAY,OAAO,IAAI,qBAAqB;AAAA,MAC7C;AACA,UAAI,KAAK,SAAS,UAAU,WAAY,aAAY,OAAO,IAAI,qBAAqB;AAAA,IACrF;AACA,WAAO;AAAA,EACR;AACD;;;AC9UO,IAAM,sBAAN,MAA0B;AAAA,EAOhC,YAAY,KAAiB,IAAY,KAAiB;AACzD,SAAK,MAAM;AACX,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,kBAAkB,CAAC;AACxB,SAAK,OAAO,CAAC;AAAA,EACd;AAAA;AAAA;AAAA,EAIA,MAAM,kBAAkB;AACvB,UAAM,QAAQ,KAAK,IAAI,SAAS;AAChC,UAAM,SAAS,MAAM,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AAC1E,QAAI,OAAO,aAAa,mBAAmB,OAAO,aAAa,gBAAiB;AAKhF,UAAM,oBAAoB,oBAAI,IAAI,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,MAAM,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,CAAC;AACpG,UAAM,WAAwB,IAAI;AAAA,OAChC,KAAK,KAAK,UAAU,MAAM,UAAU,CAAC,GACpC,OAAO,OAAK,kBAAkB,IAAI,EAAE,IAAI,CAAC,EACzC;AAAA,QAAQ,OACR,EAAE,OAAO,IAAI,QAAQ,OAAK;AACzB,cAAI,EAAE,KAAK,KAAM,QAAO,EAAE,IAAI;AAAA,cACzB,QAAO,EAAE,IAAI,IAAI,OAAK,EAAE,IAAI,IAAI;AAAA,QACtC,CAAC;AAAA,MACF;AAAA,IACF;AACA,UAAM,gBAAuB,SAAS,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC;AACrE,UAAM,SAAS,OAAO,SAAS,QAAQ,UAAU,UAAU,IAAI;AAE/D,UAAM,KAAK,IAAI,uBAAuB;AAAA,MACrC,KAAK,KAAK;AAAA,MACV,UAAU,OAAO,QAAa;AAC7B,aAAK,IAAI,WAAW,KAAK;AACzB,cAAM,KAAK,IAAI,SAAS;AAAA,UACvB,MAAM;AAAA,UACN,IAAI,KAAK;AAAA,UACT,QAAQ,EAAE,eAAe,IAAI;AAAA,QAC9B,CAAC;AAAA,MACF;AAAA,MACA,QAAQ,KAAK,IAAI,WAAW;AAAA,MAC5B,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,QAAQ,OAAO;AAAA,MACf;AAAA,IACD,CAAC;AACD,UAAM,GAAG,SAAS;AAAA,EACnB;AAAA,EAEA,SAAS,UAAkB;AAC1B,SAAK,IAAI,WAAW,MAAM,EAAE,UAAU,KAAK,IAAI,SAAS,OAAO,KAAK,EAAE,KAAK,CAAC;AAC5E,UAAM,OAAO;AAAA,MACZ;AAAA,QACC,MAAM;AAAA,QACN,UAAU,MAAM;AACf,gBAAM,MAAM,KAAK,IAAI,OAAO,OAAO,KAAK,EAAE,KAAK;AAC/C,iBAAO,KAAK,gBAAgB,QAAQ,qBAAqB,EAAE,kBAAkB,KAAK,CAAC;AAAA,QACpF;AAAA,MACD;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,MAAM;AACf,wBAAc,KAAK,gBAAgB,MAAM,KAAK,gBAAgB,OAAO;AAAA,QACtE;AAAA,MACD;AAAA,IACD;AACA,eAAW,OAAO,MAAM;AACvB,WAAK,IAAI,WAAW,EAAE,OAAO,KAAK,EAAE,KAAK,SAAS,gBAAgB,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,QAAQ;AAAA,IAC5G;AAAA,EACD;AAAA,EAEA,MAAM,mBAAmB,OAAe;AACvC,UAAM,SAAS,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AACxF,UAAM,kBAAkB,OAAO,gBAAgB,SAAS,KAAK,IAC1D,OAAO,gBAAgB,OAAO,OAAK,MAAM,KAAK,IAC9C,CAAC,GAAG,OAAO,iBAAiB,KAAK;AACpC,UAAM,KAAK,IAAI,SAAS;AAAA,MACvB,MAAM;AAAA,MACN,IAAI,KAAK;AAAA,MACT,QAAQ,EAAE,gBAAgB;AAAA,IAC3B,CAAC;AAAA,EACF;AAAA;AAAA;AAAA,EAIA,cAAc,OAAe;AAC5B,UAAM,SAAS,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AACxF,UAAM,SAAS,CAAC;AAChB,eAAW,SAAS,OAAO,UAAU,QAAQ;AAC5C,aAAO,MAAM,IAAI,IAAI;AAAA,QACpB,KAAK,MAAM;AAAA,QACX,OAAO,MAAM;AAAA,QACb,MAAM,MAAM;AAAA,MACb;AAAA,IACD;AAIA,UAAM,UAAU,MAAM;AACrB,UAAI,OAAO,YAAY,iBAAiB;AACvC,eAAO;AAAA,UACN,GAAG,EAAE,MAAM,aAAa;AAAA,UACxB,MAAM;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM,OAAO;AAAA,UACd;AAAA,QACD;AAAA,MACD,MAAO,QAAO,OAAO;AAAA,IACtB;AACA,SAAK,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,QACX,MAAM,QAAQ;AAAA,QACd,OAAO;AAAA,UACN,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,mBAAmB;AAAA,UAC1D,MAAM,OAAO,GAAG;AAAA,QACjB;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA,EAGA,oBAAoB,OAAe;AAClC,UAAM,SAAS,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AACxF,SAAK,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,QACX,MAAM;AAAA,UACL,GAAG,EAAE,MAAM,aAAa;AAAA,UACxB,MAAM;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM,OAAO;AAAA,UACd;AAAA,QACD;AAAA,QACA,OAAO;AAAA,UACN,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,mBAAmB;AAAA,UAC1D,MAAM,OAAO,GAAG;AAAA,QACjB;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,oBAAoB;AACnB,UAAM,aAAa,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AAC5F,UAAM,SAAS,KAAK,IAAI,WAAW,EAAE,OAAO,KAAK,EAAE,MAAM,WAAW,KAAK;AACzE,UAAM,mBACL,WAAW,aAAa,kBAAkB,KAAK,KAAK,IAAI,OAAK,EAAE,WAAW,IAAI,KAAK,KAAK,IAAI,OAAK,EAAE,SAAS;AAC7G,QAAI,cAAc;AAAA,MACjB;AAAA,MACA,QAAQ,KAAK,IAAI,KAAK;AAAA,MACtB,UAAU,KAAK,IAAI;AAAA,MACnB;AAAA,MACA,UAAU,WAAW,gBAAgB,IAAI,OAAK;AAC7C,eAAO,EAAE,MAAM,EAAE;AAAA,MAClB,CAAC;AAAA,MACD,cAAc;AAAA,QACb;AAAA,UACC,OAAO;AAAA,UACP,iBAAiB,MAAO,WAAW,gBAAgB,SAAS,IAAI,KAAK;AAAA,UACrE,WAAW,YAAY;AACtB,kBAAM,KAAK,IAAI,SAAS;AAAA,cACvB,MAAM;AAAA,cACN,IAAI,KAAK;AAAA,cACT,QAAQ,EAAE,iBAAiB,CAAC,EAAE;AAAA,YAC/B,CAAC;AACD,iBAAK,IAAI,WAAW,KAAK;AAAA,UAC1B;AAAA,QACD;AAAA,MACD;AAAA,MACA,UAAU,OAAM,WAAU;AACzB,cAAM,kBAAkB,OAAO,SAAS,IAAI,OAAK,EAAE,IAAI;AACvD,cAAM,KAAK,IAAI,SAAS;AAAA,UACvB,MAAM;AAAA,UACN,IAAI,KAAK;AAAA,UACT,QAAQ,EAAE,gBAAgB;AAAA,QAC3B,CAAC;AACD,aAAK,IAAI,WAAW,KAAK;AAAA,MAC1B;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,GAAsE;AACrF,UAAM,SAAS,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AAExF,UAAM,eAAe,QAAQ,IAAI,MAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS;AAC7F,UAAM,YAAY,QAAQ,IAAI,MAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS;AAE1F,UAAM,QAAQ,EAAE,cAAc,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,IAAI;AAC3D,UAAM,YAAiB;AAAA,MACtB,WAAW;AAAA,MACX,YAAY,QAAQ,KAAK;AAAA,MACzB,oBAAoB,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,OAAO,MAAM,EAAE,KAAK;AAAA,MAC/D,QAAQ,OAAO,UAAU,OAAO,CAAC,EAAE,UAAU,CAAC;AAAA,MAC9C,QAAQ,OAAO,UAAU,OAAO,CAAC,EAAE,UAAU,CAAC;AAAA,MAC9C,YAAY,OAAO,UAAU,OAAO,CAAC,EAAE;AAAA,MACvC,YAAY,OAAO,UAAU,OAAO,CAAC,EAAE;AAAA,MACvC,UAAU;AAAA,QACT,QAAQ,EAAE,QAAQ,cAAc,QAAQ,UAAU;AAAA,MACnD;AAAA,IACD;AAEA,SAAK,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,GAA2F;AAC9G,UAAM,SAAS,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAyB,EAAE,OAAO,KAAK,EAAE;AACxF,UAAM,qBAAqB,EAAE,cAAc,aAAa;AACxD,UAAM,cAAc,uBAAuB,SAAS,EAAE,WAAW,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK,KAAK;AAC/F,SAAK,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,QACX,MAAM;AAAA,UACL,GAAG,EAAE,MAAM,aAAa;AAAA,UACxB,MAAM;AAAA,YACL;AAAA,YACA;AAAA,YACA,MAAM;AAAA,YACN,KAAK,EAAE;AAAA,YACP,OAAO,EAAE;AAAA,YACT,MAAM,EAAE;AAAA,UACT;AAAA,QACD;AAAA,QACA,OAAO;AAAA,UACN,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,mBAAmB;AAAA,UAC1D,MAAM,OAAO,GAAG;AAAA,QACjB;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,sBAAsB;AAE3B,UAAM,YAAY,KAAK,gBAAgB,QAAQ,UAAU,SAAO,IAAI,UAAU,WAAW;AACzF,UAAM,oBAAoB,KAAK,gBAAgB,QAAQ,UAAU,SAAO,IAAI,UAAU,kBAAkB;AACxG,UAAM,aAAa,CAAC,GAAG,KAAK,gBAAgB,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM;AAChE,YAAM,QAAQ,OAAO,EAAE,iBAAiB,EAAE,KAAK;AAC/C,YAAM,QAAQ,OAAO,EAAE,iBAAiB,EAAE,KAAK;AAC/C,aAAO,QAAQ;AAAA,IAChB,CAAC;AAGD,UAAM,WAAW,WAAW,MAAM,GAAG,GAAG,EAAE,IAAI,QAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;AAEjF,UAAM,MAAM,SAAS,IAAI,OAAK;AAC7B,YAAM,OAAO,EAAE;AACf,YAAM,OAAO,UAAU,KAAK,IAAI,QAAQ;AACxC,YAAM,OAAO,GAAG,IAAI,IAAI,IAAI;AAC5B,YAAM,OAAO,EAAE,MAAM,MAAM,MAAM,gBAAgB;AACjD,aAAO,EAAE,MAAM,GAAG,CAAC,EAAE;AAAA,IACtB,CAAC;AAED,UAAM,QAAQ,EAAE,KAAK,KAAK,MAAM,cAAc;AAC9C,UAAM,iBAAiB,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAW,EAAE,OAAO,KAAK,EAAE,EAAE;AACpF,UAAM,kBAAkB,EAAE,KAAK,CAAC,cAAc,EAAE;AAChD,UAAM,SAAS;AAAA,MACd,WAAW;AAAA,MACX,YAAY,CAAC,OAAO,eAAe;AAAA,MACnC,UAAU;AAAA,MACV,QAAQ;AAAA,QACP,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK,CAAC,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,eAAe,KAAK,EAAE,CAAC;AAAA,MAC1D;AAAA,IACD;AACA,UAAM,KAAK,IAAI,SAAS;AAAA,MACvB,MAAM;AAAA,MACN,QAAQ,gBAAgB,MAAM;AAAA,IAC/B,CAAC;AAAA,EACF;AACD;;;ACnSO,SAAS,kBACf,GACA,UACA,cACkB;AAClB,QAAM,MAAM;AAAA,IACX;AAAA,MACC,OAAO;AAAA,MACP,WAAW,MAAM,aAAa,mBAAmB,aAAa;AAAA,MAC9D,SAAS,YAAY;AACpB,YAAI,aAAa,gBAAiB,cAAa,oBAAoB,CAAQ;AAC3E,YAAI,aAAa,gBAAiB,cAAa,oBAAoB,EAAE,SAAS;AAAA,MAC/E;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,WAAW,MAAM,aAAa;AAAA,MAC9B,SAAS,YAAY;AACpB,cAAM,KAAK;AAOX,cAAM,aAAa,UAAU;AAAA,UAC5B,KAAK,GAAG;AAAA,UACR,OAAO,GAAG;AAAA,UACV,MAAM,GAAG;AAAA,UACT,YAAY,GAAG;AAAA,QAChB,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,WAAW,MAAM,aAAa;AAAA,MAC9B,SAAS,YAAY;AACpB,qBAAa,cAAc,EAAE,SAAS;AAAA,MACvC;AAAA,IACD;AAAA,EACD;AACA,SAAO,IAAI,OAAO,OAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,QAAQ,OAAO,EAAE,OAAO,QAAQ,EAAE;AACvF;AAIO,SAAS,eAAe,GAAmB,OAAY,UAAkB;AAC/E,MAAI,aAAa,iBAAiB;AACjC,QAAI,iBAAiB,EAAG,eAAc,OAAO,YAAa,EAAU,WAAW;AAC/E,QAAI,EAAE,UAAW,eAAc,OAAO,WAAW,EAAE,SAAS;AAAA,EAC7D,OAAO;AACN,kBAAc,OAAO,aAAa,EAAE,SAAS;AAAA,EAC9C;AACA,gBAAc,OAAO,gCAAgC,eAAe,EAAE,WAAW,CAAC;AAClF,gBAAc,OAAO,oBAAoB,eAAe,EAAE,gBAAgB,CAAC;AAC3E,gBAAc,OAAO,oBAAoB,eAAe,EAAE,gBAAgB,CAAC;AAC5E;AAEA,SAAS,cAAc,OAAY,MAAc,OAAwB;AACxE,QAAM,CAAC,KAAK,GAAG,IAAI,MAAM,OAAO;AAChC,MAAI,KAAK,IAAI;AACb,MAAI,KAAK,KAAK;AACf;;;AC5DO,IAAM,kBAAN,MAAsB;AAAA,EAQ5B,YAAY,KAAiB,cAAmC,UAAkB;AACjF,SAAK,MAAM;AACX,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,UAAM,UAAU,KAAK,IAAI,OACvB,OAAO,KAAK,EACZ,KAAK,MAAM,sBAAsB,EACjC,MAAM,WAAW,OAAO,EACxB,MAAM,WAAW,CAAC,EAClB,MAAM,YAAY,UAAU;AAC9B,UAAM,MAAM,KAAK,IAAI,OACnB,OAAO,KAAK,EACZ,MAAM,WAAW,cAAc,EAC/B,KAAK,MAAM,kBAAkB,EAC7B,MAAM,kBAAkB,KAAK;AAC/B,SAAK,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,KAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,MAAM;AAAA,IACP;AAAA,EACD;AAAA,EAEA,OAAO,UAAoC,UAA2B;AACrE,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,UAAM,UAAU,KAAK,SAAS;AAE9B,SAAK,QAAQ;AAEb,SAAK,kBAAkB;AACvB,SAAK,WAAW,OAAO;AACvB,qBAAiB,IAAI;AACrB,SAAK,qBAAqB,OAAO;AACjC,SAAK,yBAAyB,OAAO;AACrC,QAAI,KAAK,SAAS,gBAAiB,MAAK,kBAAkB;AAAA,EAC3D;AAAA,EAEA,UAAU;AACT,SAAK,WAAW,QAAQ,UAAU,GAAG,EAAE,OAAO;AAC9C,SAAK,WAAW,IAAI,UAAU,GAAG,EAAE,OAAO;AAE1C,UAAM,MAAM,KAAK,WAAW;AAC5B,SAAK,WAAW,MAAM,IAAI,OAAO,GAAG,EAAE,KAAK,MAAM,kBAAkB;AACnE,SAAK,WAAW,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,MAAM,oBAAoB;AACvE,SAAK,WAAW,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,MAAM,oBAAoB;AACvE,SAAK,WAAW,aAAa,IAAI,OAAO,MAAM,EAAE,KAAK,MAAM,yBAAyB,EAAE,KAAK,eAAe,QAAQ;AAClH,SAAK,WAAW,aAAa,IAAI,OAAO,MAAM,EAAE,KAAK,MAAM,yBAAyB,EAAE,KAAK,eAAe,QAAQ;AAClH,SAAK,WAAW,OAAO,IAAI,OAAO,GAAG,EAAE,KAAK,MAAM,mBAAmB;AAErE,QAAI,CAAC,KAAK,SAAS,gBAAiB;AACpC,SAAK,WAAW,cAAc,KAAK,IAAI,OACrC,OAAO,KAAK,EACZ,KAAK,MAAM,0BAA0B,EACrC,KAAK,eAAe,0BAA0B,EAC9C,MAAM,WAAW,cAAc,EAC/B,MAAM,kBAAkB,KAAK;AAAA,EAChC;AAAA,EAEA,oBAAoB;AAEnB,SAAK,IAAI,WAAW,EAAE,MAAM,YAAY,QAAQ;AAChD,SAAK,WAAW,QAAQ,MAAM,eAAe,MAAM,EAAE,MAAM,WAAW,KAAK;AAC3E,SAAK;AAAA,MAAgB;AAAA,MAAuB,CAAC,iBAAiB,eAAe;AAAA,MAAG,MAC/E,KAAK,aAAa,gBAAgB;AAAA,IACnC;AACA,SAAK;AAAA,MAAgB;AAAA,MAAmB,CAAC,iBAAiB,qBAAqB,eAAe;AAAA,MAAG,MAChG,KAAK,aAAa,kBAAkB;AAAA,IACrC;AACA,SAAK,gBAAgB,cAAc,CAAC,iBAAiB,qBAAqB,eAAe,GAAG,MAAM;AACjG,WAAK,gBAAgB;AAAA,IACtB,CAAC;AACD,UAAM,WACL,KAAK,YAAY,kBAAkB,oCAAoC;AACxE,UAAM,cAAc,KAAK,SAAS,UAAU,KAAK,OAAK,EAAE,SAAS,QAAQ,GAAG;AAC5E,QAAI,aAAa;AAChB,YAAM,UAAU,KAAK,YAAY,kBAAkB,GAAG,WAAW,mBAAmB,GAAG,WAAW;AAClG,WAAK,WAAW,QAAQ,OAAO,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,MAAM,EAAE,MAAM,eAAe,MAAM;AAE7G,WAAK,gBAAgB,sBAAsB,CAAC,iBAAiB,qBAAqB,eAAe,GAAG,YAAY;AAG/G,cAAM,YAAY,CAAC,KAAK,SAAS;AACjC,cAAM,KAAK,aAAa,IAAI,SAAS;AAAA,UACpC,MAAM;AAAA,UACN,IAAI,KAAK,aAAa;AAAA,UACtB,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,UAAU,EAAE,EAAE;AAAA,QACjE,CAAC;AAAA,MACF,CAAC;AAAA,IACF;AACA,QAAI,eAAe,eAAe,GAAG;AAEpC,WAAK;AAAA,QACJ,8BAA8B,cAAc,MAAM,YAAY,WAAW;AAAA,QACzE,CAAC,eAAe;AAAA,QAChB,YAAY;AACX,gBAAM,KAAK,aAAa,oBAAoB;AAAA,QAC7C;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAAA,EAGA,gBAAgB,MAAc,WAAqB,UAAe;AACjE,QAAI,KAAK,SAAS,YAAY,OAAO,IAAI,IAAI,EAAG;AAChD,QAAI,CAAC,UAAU,SAAS,KAAK,QAAQ,EAAG;AACxC,UAAM,SAAS,KAAK,WAAW,QAC7B,OAAO,QAAQ,EACf,KAAK,SAAS,gBAAgB,EAC9B,MAAM,UAAU,KAAK,EACrB,MAAM,WAAW,KAAK,EACtB,KAAK,IAAI,EACT,GAAG,SAAS,YAAY;AACxB,WAAK,IAAI,WAAW,MAAM,EAAE,UAAU,OAAO,KAAK,CAAC;AACnD,YAAM,SAAS;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,SAAgC;AAC1C,SAAK,WAAW,IAAI,KAAK,SAAS,QAAQ,IAAI,KAAK,EAAE,KAAK,UAAU,QAAQ,IAAI,MAAM;AAEtF,SAAK,eAAe,OAAO;AAE3B,SAAK,WAAW,WAAW;AAAA,MAC1B;AAAA,MACA,aAAa,QAAQ,WAAW,CAAC,KAAK,QAAQ,WAAW,CAAC;AAAA,IAC3D;AACA,SAAK,qBAAqB,KAAK,WAAW,YAAY,QAAQ,MAAM,IAAI,KAAK,SAAS,UAAU,WAAW;AAE3G,SAAK,WAAW,WAAW,KAAK,aAAa,aAAa,QAAQ,WAAW,CAAC,KAAK,QAAQ,WAAW,CAAC,GAAG;AAC1G,SAAK,qBAAqB,KAAK,WAAW,YAAY,OAAO,KAAK,eAAe;AAEjF,SAAK,YAAY,QAAQ,MAAM;AAC/B,SAAK,YAAY,QAAQ,QAAQ,IAAI;AAMrC,QAAI,KAAK,SAAS,YAAY;AAC7B,WAAK,WAAW,KACd,OAAO,OAAO,EACd,KAAK,QAAQ,yBAAyB,KAAK,SAAS,UAAU,EAAE,EAChE,KAAK,KAAK,QAAQ,KAAK,CAAC,EACxB,KAAK,KAAK,QAAQ,KAAK,CAAC,EACxB,KAAK,SAAS,QAAQ,KAAK,KAAK,EAChC,KAAK,UAAU,QAAQ,KAAK,MAAM,EAClC,KAAK,uBAAuB,MAAM;AAAA,IACrC;AAAA,EACD;AAAA,EAEA,eAAe,SAAS;AACvB,QAAI,KAAK,SAAS,YAAY,OAAW;AACzC,SAAK,WAAW,IAAI,KAAK,aAAa,aAAa,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG;AAErF,UAAM,IAAI,KAAK,SAAS,SAAS;AACjC,UAAM,WAAW,UAAQ;AACxB,aACC,KAAK,WAAW,IACd,OAAO,MAAM,EACb,KAAK,aAAa,OAAO,EACzB,KAAK,aAAa,aAAa,KAAK,CAAC,KAAK,IAAI,EAAE,GAAG,EAEnD,KAAK,KAAK,KAAK;AAAA,IAEnB;AAUA,UAAM,YAAY,KAAK,SAAS,SAAS;AACzC,aAAS,SAAS;AAGlB,UAAM,aAAa,KAAK,SAAS,SAAS;AAE1C,UAAM,cAAc,SAAS,UAAU;AACvC,gBAAY,KAAK,eAAe,KAAK;AAAA,EACtC;AAAA,EAEA,YAAY,OAAY,SAAS,OAAO;AACvC,UAAM,SAAS,KAAK,WAAW,SAAS,UAAU,OAAO,EACvD,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,EACrD,KAAK,SAAS,SAAS,MAAM,KAAK,IAAI,WAAW,MAAM,KAAK,CAAC;AAE/D,cAAU;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IACX,CAAC;AAAA,EACF;AAAA,EAEA,qBAAqB,SAAgC;AAEpD,SAAK,WAAW,KACd,OAAO,MAAM,EACb,KAAK,UAAU,MAAM,EACrB,KAAK,mBAAmB,YAAY,EACpC,KAAK,MAAM,QAAQ,kBAAkB,CAAC,EACtC,KAAK,MAAM,QAAQ,kBAAkB,CAAC,EACtC,KAAK,MAAM,QAAQ,kBAAkB,EAAE,EACvC,KAAK,MAAM,QAAQ,kBAAkB,EAAE;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,yBAAyB,SAAgC;AAGxD,QAAI,KAAK,aAAa,oBAAqB;AAE3C,UAAM,SAAS,KAAK,SAAS;AAC7B,QAAI,CAAC,UAAU,OAAO,WAAW,EAAG;AAKpC,UAAM,cAAc,KAAK,SAAS,WAAW;AAC7C,UAAM,YAAY,cAAc;AAChC,UAAM,kBAAkB,KAAK,SAAS;AAItC,UAAM,aAAa,KAAK,WAAW,KAAK,OAAO,GAAG,EAAE,KAAK,MAAM,oBAAoB,EAAE,MAAM,kBAAkB,MAAM;AAInH,UAAM,QAAQ,KAAK,WAAW,KAC5B,OAAO,MAAM,EACb,KAAK,MAAM,oBAAoB,EAC/B,KAAK,KAAK,QAAQ,KAAK,CAAC,EACxB,KAAK,KAAK,QAAQ,KAAK,CAAC,EACxB,KAAK,SAAS,QAAQ,KAAK,KAAK,EAChC,KAAK,UAAU,QAAQ,KAAK,MAAM,EAClC,KAAK,QAAQ,aAAa,EAC1B,MAAM,kBAAkB,KAAK,EAC7B,MAAM,UAAU,SAAS;AAI3B,UAAM,KAAK,SAAyB,EAClC,EAAE,OAAK,EAAE,IAAI,QAAQ,KAAK,CAAC,EAC3B,EAAE,OAAK,EAAE,IAAI,QAAQ,KAAK,CAAC,EAC3B,OAAO,MAAM;AAEf,UAAM,WAAW,KAAK,IAAI;AAC1B,UAAM,YAAY,IAAI,KAAK;AAAA,MAC1B,SAAS;AAAA,MACT,QAAQ,MAAM;AACb,2BAAmB;AAEnB,uBAAe,CAAC,CAAC;AAAA,MAClB;AAAA,IACD,CAAC;AACD,QAAI,mBAAmB;AAEvB,UAAM,iBAAiB,KAAK,SAAS;AAIrC,UAAM,kBAAkB,KAAK,IAAI,KAAK,cAAc,GAAG;AACvD,UAAM,iBAAiB,CAAC,SAA2B;AAClD,iBAAW,UAAU,QAAQ,EAAE,OAAO;AACtC,iBAAW,KAAK,MAAM;AACrB,mBACE,OAAO,QAAQ,EACf,KAAK,MAAM,EAAE,CAAC,EACd,KAAK,MAAM,EAAE,CAAC,EACd,KAAK,KAAK,eAAe,EACzB,KAAK,QAAQ,cAAc,EAC3B,KAAK,gBAAgB,GAAG;AAAA,MAC3B;AAAA,IACD;AAEA,UAAM,iBAAiB,CAAC,UAAsB;AAC7C,YAAM,OAAQ,MAAM,KAAK,EAAqB,sBAAsB;AACpE,YAAM,KAAK,MAAM,UAAU,KAAK;AAChC,YAAM,KAAK,MAAM,UAAU,KAAK;AAChC,YAAM,aAAa;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAK,EAAE,IAAI,QAAQ,KAAK;AAAA,QACxB,OAAK,EAAE,IAAI,QAAQ,KAAK;AAAA,MACzB;AACA,iBAAW,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AACjD,aAAO,WAAW,IAAI,OAAK,EAAE,KAAK;AAAA,IACnC;AAEA,UAAM,GAAG,aAAa,CAAC,UAAsB;AAC5C,UAAI,iBAAkB;AACtB,YAAM,MAAM,eAAe,KAAK;AAChC,YAAM,QAAQ,IAAI,MAAM,GAAG,eAAe;AAC1C,YAAM,kBAAkB,IAAI,SAAS;AAErC,UAAI,MAAM,WAAW,GAAG;AACvB,uBAAe,CAAC,CAAC;AACjB,iBAAS,KAAK;AACd;AAAA,MACD;AAEA,qBAAe,KAAK;AACpB,eAAS,MAAM,EAAE,KAAK,MAAM,SAAS,MAAM,OAAO;AAElD,UAAI,MAAM,WAAW,GAAG;AACvB,cAAM,QAAQ,UAAU,EAAE,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE,CAAC;AAC9D,uBAAe,MAAM,CAAC,GAAG,OAAO,KAAK,QAAQ;AAAA,MAC9C,OAAO;AACN,cAAM,SAAS,SAAS,EAAE,OAAO,KAAK,EAAE,MAAM,UAAU,MAAM;AAC9D,+BAAuB,QAAQ,OAAO,KAAK,UAAU,KAAK,SAAS,UAAU;AAC7E,YAAI,kBAAkB,GAAG;AACxB,iBACE,OAAO,KAAK,EACZ,MAAM,aAAa,QAAQ,EAC3B,MAAM,SAAS,MAAM,EACrB,MAAM,cAAc,QAAQ,EAC5B,KAAK,OAAO,eAAe,aAAa,kBAAkB,IAAI,MAAM,EAAE,KAAK;AAAA,QAC9E;AAAA,MACD;AAAA,IACD,CAAC;AAED,UAAM,GAAG,cAAc,MAAM;AAG5B,UAAI,CAAC,iBAAkB,gBAAe,CAAC,CAAC;AACxC,eAAS,KAAK;AAAA,IACf,CAAC;AAED,UAAM,GAAG,SAAS,CAAC,UAAsB;AACxC,YAAM,aAAa,eAAe,KAAK;AACvC,UAAI,WAAW,WAAW,EAAG;AAC7B,eAAS,KAAK;AAEd,qBAAe,UAAU;AACzB,yBAAmB;AAEnB,UAAI,WAAW,WAAW,GAAG;AAG5B,uBAAe,WAAW,CAAC,GAAG,OAAO,WAAW,KAAK,UAAU,KAAK,YAAY;AAChF;AAAA,MACD;AAEA,gBAAU,MAAM,EAAE,KAAK,MAAM,SAAS,MAAM,OAAO;AACnD,YAAM,SAAS,UAAU,EAAE,OAAO,KAAK,EAAE,MAAM,UAAU,MAAM;AAC/D,6BAAuB,QAAQ,YAAY,KAAK,UAAU,KAAK,SAAS,YAAY;AAAA;AAAA,QAEnF,YAAY;AAAA,QACZ,kBAAkB,CAAC,MAAc;AAChC,gBAAM,IAAI,WAAW,CAAC;AACtB,yBAAe,GAAG,OAAO,WAAW,KAAK,UAAU,KAAK,YAAY;AAAA,QACrE;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EAEA,kBAAkB;AAEjB,eAAW,OAAO,KAAK,SAAS,UAAU,CAAC,GAAG;AAC7C,WAAK,IAAI,WAAW,EAClB,OAAO,KAAK,EACZ,MAAM,WAAW,cAAc,EAC/B,MAAM,eAAe,MAAM,EAC3B,MAAM,cAAc,OAAO,EAC3B,KAAK,SAAS,GAAG,EACjB,KAAK,UAAU,GAAG,EAClB,KAAK,OAAO,IAAI,GAAG;AAAA,IACtB;AACA,UAAM,cAAc,KAAK,IAAI,WAAW,EACtC,OAAO,KAAK,EAEZ,MAAM,WAAW,KAAK,SAAS,OAAO,UAAU,IAAI,iBAAiB,OAAO,EAI5E,MAAM,UAAU,GAAG,KAAK,SAAS,OAAO,UAAU,IAAI,cAAc,SAAS,UAAU,EACvF,MAAM,kBAAkB,KAAK;AAC/B,UAAM,QAAQ,UAAU,EAAE,QAAQ,YAAY,CAAC;AAC/C,eAAW,KAAK,KAAK,SAAS,WAAW;AACxC,YAAM,CAAC,KAAK,GAAG,IAAI,MAAM,OAAO;AAChC,UAAI,KAAK,EAAE,KAAK;AAChB,UAAI,MAAM,cAAc,KAAK,EAAE,KAAK,EAAE,KAAK;AAAA,IAC5C;AAAA,EACD;AAAA,EAEA,oBAAoB;AACnB,QAAI,CAAC,KAAK,SAAS,gBAAiB;AAGpC,UAAM,eAAe;AACrB,UAAM,UAAU,KAAK,SAAS,gBAAgB;AAC9C,UAAM,OAAO,QAAQ,SAAS,eAAe,QAAQ,MAAM,GAAG,YAAY,IAAI;AAC9E,QAAI,QAAQ,SAAS,cAAc;AAClC,WAAK,WAAW,YACd,OAAO,KAAK,EACZ,MAAM,WAAW,UAAU,EAC3B,MAAM,aAAa,MAAM,EACzB,MAAM,SAAS,MAAM,EACrB;AAAA,QACA,eAAe,aAAa,eAAe,CAAC,OAAO,QAAQ,OAAO,eAAe,CAAC;AAAA,MACnF;AAAA,IACF;AACA,gBAAY;AAAA,MACX,SAAS,KAAK,SAAS,gBAAgB;AAAA,MACvC;AAAA,MACA,KAAK,KAAK,WAAW;AAAA,MACrB,WAAW;AAAA,MACX,WAAW,GAAG,KAAK,SAAS,gBAAgB,MAAM;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ,EAAE,WAAW,KAAK;AAAA,MAC1B,YAAY;AAAA,MACZ,kBAAkB,CAAC,MAAc;AAGhC,cAAM,OAAO,KAAK,SAAS,gBAAgB,KAAK,CAAC,EAAE,CAAC,EAAE;AACtD,YAAI,CAAC,KAAM;AACX,aAAK,aAAa,mBAAmB,IAAI;AAAA,MAC1C;AAAA,MACA,cAAc,CAAC,IAAI,QAAQ;AAK1B,cAAM,UAAU,KAAK,WAAW,KAAK,UAAU,QAAQ,EAAE,MAAM;AAC/D,cAAM,UAAU,KAAK,aAAa,kBAAkB,gBAAgB;AACpE,cAAM,SAAS,QAAQ,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO,KAAK,IAAI,CAAC,EAAE,KAAK;AAC3E,YAAI,CAAC,UAAU,OAAO,SAAS,YAAa;AAK5C,YAAI;AACJ,WAAG,GAAG,aAAa,MAAM;AACxB,cAAI,OAAO,SAAS,eAAe,MAAO;AAC1C,kBAAQ,KAAK,WAAW,KAAK,KAAK,GAAG,YAAY,OAAO,UAAU,IAAI,CAAC;AACvE,gBAAM,aAAa,gBAAgB,GAAG;AAAA,QACvC,CAAC;AACD,WAAG,GAAG,cAAc,MAAM;AACzB,cAAI,CAAC,MAAO;AACZ,gBAAM,OAAO;AACb,kBAAQ;AAAA,QACT,CAAC;AAED,aAAK,WAAW,YAAY,GAAG,aAAa,MAAM;AACjD,4BAAU,OAAO,EAAE,KAAK,kBAAkB,KAAK;AAAA,QAChD,CAAC;AACD,aAAK,WAAW,YAAY,GAAG,cAAc,MAAM;AAClD,4BAAU,OAAO,EAAE,KAAK,kBAAkB,CAAC,MAAY,EAAE,cAAc,OAAO,GAAI;AAAA,QACnF,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,qBAAqB,UAAe,QAAgB,WAAmB,QAAgB;AACtF,aAAS,KAAK,IAAI;AAClB,aAAS,OAAO,OAAO,EAAE,KAAK,MAAM;AACpC,aAAS,OAAO,OAAO,EAAE,KAAK,kBAAkB,KAAK,EAAE,KAAK,aAAa,OAAO,EAAE,KAAK,SAAS;AAChG,aAAS,OAAO,OAAO,EAAE,KAAK,MAAM;AAAA,EACrC;AACD;AAEA,SAAS,iBAAiB,MAAW;AAKpC,OAAK,WAAW,KACd,UAAU,QAAQ,EAClB,KAAK,KAAK,SAAS,SAAS,EAC5B,MAAM,EACN,OAAO,QAAQ,EACf,KAAK,UAAU,CAAC,MAAsB,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,EAC9D,KAAK,kBAAkB,CAAC,MAAuB,EAAE,cAAc,OAAO,GAAI,EAG1E,KAAK,gBAAgB,CAAC,EACtB,KAAK,QAAQ,KAAK,SAAS,qBAAqB,EAChD,KAAK,gBAAgB,CAAC,MAAuB,EAAE,cAAc,MAAM,CAAE,EACrE,KAAK,MAAM,CAAC,MAAsB,EAAE,CAAC,EACrC,KAAK,MAAM,CAAC,MAAsB,EAAE,CAAC,EACrC,KAAK,KAAK,CAAC,MAAsB,EAAE,MAAM,EACzC,MAAM,kBAAkB,MAAM;AACjC;AAOA,SAAS,uBACR,QACA,MACA,UACA,YACA,QAA6B,CAAC,GAC7B;AACD,QAAM,OAAO,aAAa;AAC1B,QAAM,SAAS,GAAG,WAAW,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;AAC1E,QAAM,SAAS,GAAG,UAAU;AAC5B,QAAM,UAAU,OACb;AAAA,IACA,EAAE,OAAO,WAAW;AAAA,IACpB,EAAE,OAAO,UAAU;AAAA,IACnB,EAAE,OAAO,iBAAY,UAAU,KAAK;AAAA,IACpC,EAAE,OAAO,QAAQ,UAAU,KAAK;AAAA,EAChC,IACA,CAAC,EAAE,OAAO,OAAO,GAAG,EAAE,OAAO,iBAAY,UAAU,KAAK,GAAG,EAAE,OAAO,QAAQ,UAAU,KAAK,CAAC;AAC/F,QAAM,OAAO,KAAK,IAAI,OAAK;AAC1B,UAAM,KAAK,EAAE,OAAO,eAAe,EAAE,WAAW,EAAE;AAClD,UAAM,OAAO,EAAE,OAAO,eAAe,EAAE,MAAM,CAAC,EAAE;AAChD,QAAI,MAAM;AACT,aAAO,CAAC,EAAE,OAAQ,EAAU,eAAe,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,GAAG,IAAI,IAAI;AAAA,IACxF;AACA,WAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,GAAG,IAAI,IAAI;AAAA,EAC/C,CAAC;AACD,mBAAiB;AAAA,IAChB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,SAAS,CAAC,MAAW,EAAE;AAAA,IACvB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,CAAQ;AACT;AAOA,SAAS,eACR,GACA,OACA,UACA,UACA,cACC;AACD,QAAM,OAAO,kBAAkB,GAAG,UAAU,YAAY;AACxD,WAAS,MAAM,EAAE,KAAK,MAAM,SAAS,MAAM,OAAO;AAClD,QAAM,YAAY,SAAS,EAAE,OAAO,KAAK,EAAE,MAAM,UAAU,MAAM;AAEjE,MAAI,KAAK,SAAS,GAAG;AACpB,UAAM,YAAY,UAAU,OAAO,KAAK,EAAE,MAAM,iBAAiB,MAAM;AACvE,eAAW,OAAO,MAAM;AACvB,gBACE,OAAO,QAAQ,EACf,KAAK,SAAS,gBAAgB,EAC9B,MAAM,gBAAgB,KAAK,EAC3B,KAAK,IAAI,KAAK,EACd,GAAG,SAAS,YAAY;AACxB,iBAAS,KAAK;AACd,cAAM,IAAI,QAAQ;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACD;AAEA,QAAM,QAAQ,UAAU,EAAE,QAAQ,UAAU,OAAO,OAAO,EAAE,CAAC;AAC7D,iBAAe,GAAG,OAAO,QAAQ;AAClC;;;AClkBO,IAAM,uBAAN,MAA2B;AAAA,EAOjC,YAAY,QAA2B,UAAkB;AACxD,SAAK,SAAS;AACd,QAAI,KAAK,OAAO,YAAY,gBAAiB,MAAK,YAAY,aAAa,MAAM;AACjF,SAAK,WAAW;AAEhB,SAAK,SAAS;AAAA,MACb;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA;AAAA;AAAA;AAAA,QAIL,KAAK;AAAA,QACL,MAAM;AAAA,MACP;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,SAAS;AAAA,UACR,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,UACvC,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,QACxC;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OACC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACP;AAAA;AAAA;AAAA,MAGA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,aAAa;AAAA,QACb,iBAAiB,MAAM;AACtB,cAAI,KAAK,OAAO,YAAY,oBAAqB,QAAO;AACxD,gBAAM,eAAe,KAAK,OAAO,IAAI,MAAM,SAAS,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,GAAG;AAC3F,gBAAM,YAAY,KAAK,OAAO,IAAI,MAAM,SAAS,KAAK,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE;AACvF,cAAI,gBAAgB,UAAW,QAAO;AAAA,cACjC,QAAO;AAAA,QACb;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,aAAa;AAAA,MACd;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,aAAa;AAAA,MACd;AAAA,IACD;AAEA,SAAK,wBAAwB;AAAA,EAC9B;AAAA;AAAA,EAGA,0BAA0B;AACzB,SAAK,wBAAwB;AAC7B,SAAK,wBAAwB;AAC7B,SAAK,6BAA6B;AAAA,EACnC;AAAA,EAEA,0BAA0B;AACzB,QAAI,KAAK,aAAa,gBAAiB;AACvC,UAAM,WAAW;AAAA,MAChB;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,MACN;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,SAAS,KAAK,iBAAiB;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcD;AAEA,SAAK,OAAO,OAAO,GAAG,GAAG,GAAG,QAAQ;AAAA,EACrC;AAAA,EAEA,0BAA0B;AACzB,QAAI,KAAK,aAAa,gBAAiB;AACvC,UAAM,WAAW;AAAA,MAChB;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,IACD;AACA,SAAK,OAAO,OAAO,GAAG,GAAG,GAAG,QAAQ;AAAA,EACrC;AAAA,EAEA,+BAA+B;AAC9B,QAAI,KAAK,aAAa,oBAAqB;AAE3C,UAAM,aAAa,CAAC;AAEpB,SAAK,OAAO,OAAO,GAAG,GAAG,GAAG,UAAU;AAAA,EACvC;AAAA,EAEA,mBAAmB;AAClB,QAAI,KAAK,aAAa,gBAAiB;AACvC,UAAM,WAAW,KAAK,OAAO,SAAS;AACtC,UAAM,WAAW,KAAK,MAAM,eAAe,QAAQ,kBAAkB,CAAW;AAChF,QAAI,UAAU,eAAe,QAAQ;AACpC,YAAM,OAA2C,CAAC;AAClD,iBAAW,KAAK,SAAS,eAAe;AACvC,aAAK,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC;AAAA,MAC/C;AACA,aAAO;AAAA,IACR;AACA,QAAI,KAAK,YAAa,SAAU,iBAAiB;AAChD,aAAO;AAAA,QACN,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,QACjC,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,QACvC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,MAClC;AAAA,IACD,MAAO,QAAO,CAAC,EAAE,OAAO,YAAY,OAAO,WAAW,CAAC;AAAA,EACxD;AACD;;;AC3NA,IAAM,UAAN,MAAM,iBAAgB,SAAgC;AAAA,EACrD;AAAA,SAAO,OAAO;AAAA;AAAA,EASd,YAAY,MAAmB,KAAK;AACnC,UAAM,MAAM,GAAG;AACf,QAAI,KAAK,KAAK,SAAU,MAAK,WAAW,KAAK,KAAK;AAClD,SAAK,OAAO,SAAQ;AACpB,SAAK,aAAa;AAAA,MACjB,UAAU,CAAC;AAAA,IACZ;AAEA,SAAK,WAAW,KAAK;AACrB,UAAM,SAAS,KAAK,OAClB,QAAQ,qBAAqB,IAAI,EACjC,KAAK,eAAe,qBAAqB,KAAK,QAAQ,EAAE;AAE1D,UAAM,WAAW,OAAO,KAAK,YAAY,WAAW,KAAK,WAAW,UAAW,OAAe,OAAO,KAAK;AAC1G,UAAM,QAAQ,KAAK,OACjB,OAAO,KAAK,EACZ,KAAK,MAAM,oBAAoB,EAC/B,KAAK,eAAe,sBAAsB,KAAK,QAAQ,EAAE,EACzD,MAAM,WAAW,IAAI;AACvB,SAAK,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OACJ,OAAO,KAAK,EACZ,KAAK,MAAM,mBAAmB,EAC9B,KAAK,eAAe,qBAAqB,KAAK,QAAQ,EAAE,EACxD,MAAM,WAAW,IAAI,EACrB,MAAM,WAAW,MAAM,EACvB,KAAK,YAAY;AAAA,MACnB,KAAK,IAAI,KAAK,EAAE,SAAS,GAAG,CAAC;AAAA,MAC7B,YAAY,IAAI,KAAK,EAAE,SAAS,GAAG,CAAC;AAAA,IACrC;AAAA,EACD;AAAA,EAEA,SAAS,UAAqB;AAC7B,UAAM,SAAc,SAAS,MAAM,KAAK,CAAC,MAAsB,EAAE,OAAO,KAAK,EAAE;AAC/E,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI;AAAA,QACT,oBAAoB,KAAK,EAAE;AAAA,MAC5B;AAAA,IACD;AACA,UAAM,eAAoB,KAAK,YAAY,SAAS,MAAM,KAAK,OAAK,EAAE,OAAO,KAAK,QAAQ;AAC1F,UAAM,aAAa,sBAAsB,UAAU,OAAO,UAAU,cAAc,MAAM;AAExF,WAAO;AAAA,MACN,QAAQ,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,QACjC,UAAU;AAAA,UACT,SAAS,OAAO,SAAS;AAAA,QAC1B;AAAA,MACD,CAAC;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,cAAc;AACnB,UAAM,aAAa,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,MAAW,EAAE,OAAO,KAAK,EAAE;AAC9E,UAAM,WAAW,IAAI,qBAAqB,YAAY,KAAK,QAAQ;AAEnE,SAAK,WAAW,WAAW,MAAM,aAAa;AAAA,MAC7C,KAAK,KAAK;AAAA,MACV,IAAI,KAAK;AAAA,MACT,QAAQ,KAAK,IAAI,SAAS,MAAM,WAAW,cAAc;AAAA,MACzD,QAAQ,SAAS;AAAA,IAClB,CAAC;AAED,SAAK,WAAW,SAAS,GAAG,yBAAyB,MAAM,KAAK,aAAc,SAAS,KAAK,QAAQ,CAAC;AACrG,QAAI,WAAW,aAAa;AAC3B,WAAK,WAAW,SAAS;AAAA,QAAG;AAAA,QAAkC;AAAA;AAAA;AAAA,UAG7D,OAAO,KAAK,mEAAmE;AAAA;AAAA,MAChF;AAAA,EACF;AAAA,EAEA,MAAM,OAAO;AACZ,SAAK,eAAe,IAAI,oBAAoB,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG;AACvE,SAAK,QAAQ,IAAI,aAAa,KAAK,KAAK,KAAK,QAAQ;AACrD,SAAK,OAAO,IAAI,gBAAgB,KAAK,KAAK,KAAK,cAAc,KAAK,QAAQ;AAC1E,UAAM,KAAK,YAAY;AAAA,EACxB;AAAA,EAEA,MAAM,OAAO;AACZ,QAAI,CAAC,KAAK,aAAc,OAAM,IAAI,MAAM,sCAAsC;AAC9E,QAAI,CAAC,KAAK,MAAO,OAAM,IAAI,MAAM,+BAA+B;AAChE,QAAI,CAAC,KAAK,KAAM,OAAM,IAAI,MAAM,8BAA8B;AAE9D,UAAM,SAAS,gBAAgB,KAAK,MAAM,MAAM;AAEhD,QAAI,OAAO,aAAa,KAAK,QAAQ,OAAO,aAAa,KAAK,KAAM;AAEpE,UAAM,WAAW,OAAO,SAAS;AACjC,QAAI;AAEH,YAAM,WAAW,WAAW,MAAM;AACjC,aAAK,IAAI,KAAK,MAAM,WAAW,OAAO;AAAA,MACvC,GAAG,GAAG;AAGN,YAAM,WAAW,MAAM,KAAK,MAAM,QAAQ,QAAQ,QAAQ;AAC1D,WAAK,IAAI,MAAM,KAAK,EAAE;AACtB,UAAI,CAAC,YAAY,SAAS,SAAS,CAAC,SAAS,QAAQ,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS,KAAK,WAAW;AAC3G,iBAAS,KAAK,IAAI,OAAO,UAAU,SAAS,8BAA8B;AAC1E,qBAAa,QAAQ;AACrB,aAAK,IAAI,KAAK,MAAM,WAAW,MAAM;AACrC;AAAA,MACD;AAGA,YAAM,YAAY,IAAI,iBAAiB,QAAQ,UAAU,QAAQ;AAEjE,WAAK,aAAa,kBAAkB,UAAU,SAAS;AACvD,WAAK,aAAa,OAAO,SAAS,KAAK;AAGvC,WAAK,KAAK,OAAO,UAAU,UAAU,QAAQ;AAE7C,UAAI,CAAC,SAAS,KAAK,KAAK,QAAQ;AAC/B,aAAK,IAAI,MAAM,KAAK,8CAA8C,EAAE,MAAM,SAAS,MAAM;AAAA,MAC1F;AAEA,mBAAa,QAAQ;AACrB,WAAK,IAAI,KAAK,MAAM,WAAW,MAAM;AAAA,IACtC,SAAS,GAAQ;AAChB,UAAI,aAAa,MAAO,SAAQ,MAAM,EAAE,WAAW,CAAC;AAAA,eAC3C,EAAE,MAAO,SAAQ,IAAI,EAAE,KAAK;AACrC,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,IAAM,cAAc,YAAY,OAAO;AACvC,IAAM,gBAAgB;AAE7B,eAAsB,cAAc,MAAW,KAAa;AAC3D,MAAI,CAAC,KAAK,SAAU,OAAM,IAAI,MAAM,uBAAuB;AAE3D,QAAM,SAAS;AAAA,IACd,UAAU;AAAA,MACT,SAAS,0BAA0B,KAAK,WAAW,IAAI;AAAA,IACxD;AAAA,IACA,iBAAiB,KAAK,mBAAmB,CAAC;AAAA,IAC1C,UAAU,KAAK;AAAA,EAChB;AAGA,MAAI,KAAK,YAAY,iBAAiB;AACrC,QAAI,KAAK,eAAe;AACvB,UAAI;AACH,mBAAW,MAAM,KAAK,eAAe;AACpC,gBAAM,gBAAgB,IAAI,IAAI,QAAQ;AAAA,QACvC;AAAA,MACD,SAAS,GAAQ;AAChB,gBAAQ,MAAM,EAAE,WAAW,CAAC;AAC5B,cAAM,IAAI,MAAM,oEAAoE,CAAC,EAAE;AAAA,MACxF;AAAA,IACD;AACA,WAAO,OAAO,QAAQ;AAAA,MACrB,eAAe,KAAK,iBAAiB,CAAC;AAAA,MACtC,WAAW,KAAK;AAAA,IACjB,CAAC;AAAA,EACF;AAGA,MAAI,KAAK,YAAY,qBAAqB;AACzC,WAAO,OAAO,QAAQ;AAAA;AAAA,MAErB,QAAQ,KAAK,gBAAgB,KAAK,UAAU,KAAK,UAAU,CAAC,GAAG,YAAY,CAAC,GAAG;AAAA,MAC/E,QAAQ,IAAI,SAAS,aAAa,QAAQ,WAAW,QAAQ;AAAA;AAAA;AAAA,MAG7D,cAAc,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACF;AAGA,0BAAwB,QAAQ,IAAI;AAEpC,SAAO,UAAU,QAAQ,IAAI;AAC9B;",
6
+ "names": []
7
+ }