@sjcrh/proteinpaint-client 2.77.0 → 2.78.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.
- package/dist/{2dmaf-acb8cfdd.js → 2dmaf-7dddba15.js} +1 -1
- package/dist/{AppHeader-315dbd3a.js → AppHeader-67cea623.js} +1 -1
- package/dist/{ColorScale-4b4ea8a2.js → ColorScale-7a36cc17.js} +1 -1
- package/dist/{DEanalysis-28ddd620.js → DEanalysis-417e1f88.js} +1 -1
- package/dist/{Disco-3c427131.js → Disco-30abd4cb.js} +1 -1
- package/dist/{Disco.UI-b071cf7a.js → Disco.UI-ea58ee03.js} +1 -1
- package/dist/{DragControls-7961799c.js → DragControls-a5072cfd.js} +1 -1
- package/dist/{DziViewer-aa5b5706.js → DziViewer-af3c5a76.js} +1 -1
- package/dist/FilterRxComp-cb149666.js +1 -0
- package/dist/FilterStateless-bdd1416d.js +1 -0
- package/dist/{HicApp-674a148d.js → HicApp-fe8682af.js} +1 -1
- package/dist/{OrbitControls-58ca2292.js → OrbitControls-0d20d46b.js} +1 -1
- package/dist/{WSIViewer-afe97e2e.js → WSIViewer-64e55fb8.js} +1 -1
- package/dist/{adSandbox-791d704e.js → adSandbox-5753745b.js} +1 -1
- package/dist/app-488d9fd6.js +1 -0
- package/dist/{app-bd9f016b.js → app-5aa892cb.js} +1 -1
- package/dist/app-d9433820.js +1 -0
- package/dist/app.js +1 -1
- package/dist/bam-4e0df8b6.js +1 -0
- package/dist/{barchart-e3dcfc5f.js → barchart-687ae584.js} +1 -1
- package/dist/{barchart.events-cecb7bf5.js → barchart.events-9e2c1acf.js} +1 -1
- package/dist/{bars.renderer-58e38632.js → bars.renderer-95f7250f.js} +1 -1
- package/dist/{block-944afb9f.js → block-2f22e7fd.js} +1 -1
- package/dist/block.lazyload-143ae987.js +1 -0
- package/dist/{block.legend-3dbc41a8.js → block.legend-aa831169.js} +1 -1
- package/dist/{block.mds-b3967ce5.js → block.mds-64d95cf9.js} +1 -1
- package/dist/{block.mds.cnv-6de3115e.js → block.mds.cnv-2520897d.js} +1 -1
- package/dist/{block.mds.expressionrank-553613e8.js → block.mds.expressionrank-582ed7bc.js} +1 -1
- package/dist/{block.mds.expressionstat-2c396bb9.js → block.mds.expressionstat-483c9bc9.js} +1 -1
- package/dist/{block.mds.geneboxplot-552fe571.js → block.mds.geneboxplot-c1276cba.js} +1 -1
- package/dist/{block.mds.junction-1e25c13d.js → block.mds.junction-4a132819.js} +1 -1
- package/dist/{block.mds.svcnv-462d762d.js → block.mds.svcnv-a532eca7.js} +1 -1
- package/dist/{block.mds.svcnv.share-766e4b22.js → block.mds.svcnv.share-6575b7cf.js} +1 -1
- package/dist/{block.mds2-6e04432d.js → block.mds2-9ce41a23.js} +1 -1
- package/dist/{block.svg-40b47da8.js → block.svg-adb13c76.js} +1 -1
- package/dist/{block.tk.aicheck-cc42cbaf.js → block.tk.aicheck-ef6b634b.js} +1 -1
- package/dist/{block.tk.ase-da848c5f.js → block.tk.ase-1b119031.js} +1 -1
- package/dist/{block.tk.bam-8053c97e.js → block.tk.bam-2aa824aa.js} +1 -1
- package/dist/{block.tk.bedgraphdot-79cb0faf.js → block.tk.bedgraphdot-983fe4b3.js} +1 -1
- package/dist/{block.tk.bigwig.ui-a8decec7.js → block.tk.bigwig.ui-fb6401ee.js} +1 -1
- package/dist/{block.tk.hicstraw-3d1e9d41.js → block.tk.hicstraw-c6732591.js} +1 -1
- package/dist/{block.tk.junction-81eae755.js → block.tk.junction-429b654c.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-4c45b69a.js → block.tk.junction.textmatrixui-15bd752c.js} +1 -1
- package/dist/{block.tk.ld-997fca31.js → block.tk.ld-fba14536.js} +1 -1
- package/dist/{block.tk.menu-d3e7ccbb.js → block.tk.menu-1299ae5e.js} +1 -1
- package/dist/{block.tk.pgv-ae1d1f59.js → block.tk.pgv-c946527f.js} +1 -1
- package/dist/{boxplot-fed0a86b.js → boxplot-dbf30a19.js} +1 -1
- package/dist/{brainImaging-b455fd0c.js → brainImaging-b2865ba3.js} +1 -1
- package/dist/{brush-06989a5e.js → brush-1a123226.js} +1 -1
- package/dist/{categorical-82722704.js → categorical-f67752ed.js} +1 -1
- package/dist/{condition-f68cc8d1.js → condition-dcc70001.js} +1 -1
- package/dist/{controls-1d99916a.js → controls-f4648f7f.js} +1 -1
- package/dist/controls.btns-26bb6ef1.js +1 -0
- package/dist/{controls.config-00ce9f0b.js → controls.config-9870bdea.js} +1 -1
- package/dist/{cuminc-879690b0.js → cuminc-2273cdd3.js} +1 -1
- package/dist/{customdata.inputui-c563c695.js → customdata.inputui-fb1b24dc.js} +1 -1
- package/dist/{dataDownload-087ac205.js → dataDownload-b94871d0.js} +1 -1
- package/dist/{databrowser.ui-9f98f6b3.js → databrowser.ui-8ace51c3.js} +1 -1
- package/dist/{density-e0aff1d0.js → density-e023c28f.js} +1 -1
- package/dist/{dictionary-fe0ea1d6.js → dictionary-321e19f9.js} +1 -1
- package/dist/{drag-e11d6644.js → drag-1b98e43e.js} +1 -1
- package/dist/{e2pca-b3250d5c.js → e2pca-00e78fdc.js} +1 -1
- package/dist/{ep-9ca01df0.js → ep-b0d6177c.js} +1 -1
- package/dist/{facet-397afad5.js → facet-26292a3d.js} +1 -1
- package/dist/{filter-b3d3964e.js → filter-67d51c09.js} +1 -1
- package/dist/{fusion.parse-e5312047.js → fusion.parse-7e3a6071.js} +1 -1
- package/dist/{geneExpClustering-4383ff2c.js → geneExpClustering-a2cf1bb9.js} +1 -1
- package/dist/{geneExpression-52678025.js → geneExpression-d1d5a7ca.js} +1 -1
- package/dist/{geneExpression-cfb86b5d.js → geneExpression-dc10af2c.js} +1 -1
- package/dist/{geneExpression-2422f66b.js → geneExpression-e4a5a2cd.js} +1 -1
- package/dist/{geneORA-81220ec0.js → geneORA-248baba7.js} +1 -1
- package/dist/{geneVariant-18f9591a.js → geneVariant-447d6af9.js} +1 -1
- package/dist/{geneVariant-4d22b146.js → geneVariant-7366f3d1.js} +1 -1
- package/dist/{genefusion.ui-e38778dd.js → genefusion.ui-e219424a.js} +1 -1
- package/dist/{genesearch-0587c713.js → genesearch-d8780180.js} +1 -1
- package/dist/{geneset-604d0529.js → geneset-1f67d4c9.js} +1 -1
- package/dist/genomeBrowser-52c639b4.js +1 -0
- package/dist/{genomeBrowser.controls-204f007e.js → genomeBrowser.controls-3a7a1c94.js} +1 -1
- package/dist/{groupsetting-53dfd5e5.js → groupsetting-697a1503.js} +1 -1
- package/dist/{gsea-a1b04406.js → gsea-d3286c53.js} +1 -1
- package/dist/hierCluster-00268175.js +1 -0
- package/dist/{html.legend-6807e9ad.js → html.legend-0abd27ff.js} +1 -1
- package/dist/{imagePlot-f96cdc61.js → imagePlot-f6398b6e.js} +1 -1
- package/dist/{lasso-845446b8.js → lasso-48317f42.js} +1 -1
- package/dist/launch.adhoc-98dc0421.js +1 -0
- package/dist/{leftlabel.sample-3a6037c2.js → leftlabel.sample-591bc38d.js} +1 -1
- package/dist/legacyDataset-354f1a29.js +1 -0
- package/dist/{log-0ea548ec.js → log-1001ca83.js} +1 -1
- package/dist/{lollipop-75e11e9a.js → lollipop-40c4c5cb.js} +1 -1
- package/dist/{maf-e4af10d7.js → maf-10526648.js} +1 -1
- package/dist/{maftimeline-cc2e866c.js → maftimeline-a77349ad.js} +1 -1
- package/dist/matrix-1190d4b3.js +1 -0
- package/dist/matrix-bc0ccf83.js +1 -0
- package/dist/{mavb-b2dd74f6.js → mavb-0d28dd97.js} +1 -1
- package/dist/{mds.fimo-f19840cd.js → mds.fimo-929b9e65.js} +1 -1
- package/dist/{mds.samplescatterplot-254f1de6.js → mds.samplescatterplot-5a4ee6b6.js} +1 -1
- package/dist/{mds.survivalplot-f440db10.js → mds.survivalplot-b04947ee.js} +1 -1
- package/dist/metaboliteIntensity-f407ad0c.js +1 -0
- package/dist/niceNumLabels-621ef5c3.js +1 -0
- package/dist/{nodrag-f6c0801c.js → nodrag-b2866dd8.js} +1 -1
- package/dist/{notify-da3afe99.js → notify-91f0bc5d.js} +1 -1
- package/dist/{numeric-1d0318e8.js → numeric-eb1d29b3.js} +1 -1
- package/dist/{numeric.binary-88bf9e0d.js → numeric.binary-da92d665.js} +1 -1
- package/dist/numeric.continuous-92d1dea8.js +1 -0
- package/dist/numeric.discrete-cd8f09b1.js +1 -0
- package/dist/{numeric.spline-b3968b77.js → numeric.spline-9a9987b6.js} +1 -1
- package/dist/{numeric.toggle-ab8b79be.js → numeric.toggle-8f68f077.js} +1 -1
- package/dist/{oncomatrix-5f4326a8.js → oncomatrix-c29e6de9.js} +1 -1
- package/dist/{parseData-62083461.js → parseData-3bf0ef9f.js} +1 -1
- package/dist/{plot.2dvaf-eccd8ef3.js → plot.2dvaf-9e59c7d1.js} +1 -1
- package/dist/plot.app-fc3608a9.js +1 -0
- package/dist/plot.barplot-122296f7.js +1 -0
- package/dist/{plot.boxplot-0c538ebe.js → plot.boxplot-99c5aac5.js} +1 -1
- package/dist/{plot.brainImaging-ee3a0272.js → plot.brainImaging-a7bb79d6.js} +1 -1
- package/dist/{plot.disco-c9249cbd.js → plot.disco-ccdf741c.js} +1 -1
- package/dist/{plot.dzi-dfd72ddf.js → plot.dzi-aafdf56b.js} +1 -1
- package/dist/plot.ssgq-146075f5.js +1 -0
- package/dist/{plot.vaf2cov-4081decd.js → plot.vaf2cov-41e13dd9.js} +1 -1
- package/dist/{plot.wsi-f6325d95.js → plot.wsi-2327ad63.js} +1 -1
- package/dist/{profileBarchart-f4da0483.js → profileBarchart-46616916.js} +1 -1
- package/dist/profileHome-121aaddb.js +1 -0
- package/dist/profilePlot-a2591a28.js +1 -0
- package/dist/{profilePolar-996784ad.js → profilePolar-006a56b1.js} +1 -1
- package/dist/{profileRadar-79299186.js → profileRadar-3320d932.js} +1 -1
- package/dist/{profileRadarFacility-00e31213.js → profileRadarFacility-7a9cea80.js} +1 -1
- package/dist/{profileSummary-df75e6ff.js → profileSummary-7a747b4e.js} +1 -1
- package/dist/recover-edcdde38.js +1 -0
- package/dist/{regression.inputs-e647b716.js → regression.inputs-d5d44e49.js} +1 -1
- package/dist/{regression.inputs.values.table-b283619d.js → regression.inputs.values.table-daf7bcda.js} +1 -1
- package/dist/regression.results-31a8884d.js +1 -0
- package/dist/{renderPvalueTable-0ed37e90.js → renderPvalueTable-05c29ccf.js} +1 -1
- package/dist/sampleScatter-f6c04130.js +1 -0
- package/dist/{sampleScatter.rendererThree-aa51e3c8.js → sampleScatter.rendererThree-448689c6.js} +2 -2
- package/dist/{sampleView-e4819da2.js → sampleView-0931e571.js} +1 -1
- package/dist/{samplelst-9d9ff205.js → samplelst-27115b0e.js} +1 -1
- package/dist/{samplematrix-3556e5c0.js → samplematrix-2bb2480b.js} +1 -1
- package/dist/{scatter-ff17f653.js → scatter-a8d7c2a0.js} +1 -1
- package/dist/select2Terms-480025f5.js +1 -0
- package/dist/{selectGenomeWithTklst-84f4ff79.js → selectGenomeWithTklst-71344af2.js} +1 -1
- package/dist/{singleCellCellType-a2ce9bfa.js → singleCellCellType-b4061c59.js} +1 -1
- package/dist/{singleCellGeneExpression-a2b45c7a.js → singleCellGeneExpression-547149f2.js} +1 -1
- package/dist/singleCellPlot-2f5ad46a.js +1 -0
- package/dist/{singlecell-a5b8a39b.js → singlecell-1c3bee25.js} +1 -1
- package/dist/{singlecell-63cb06d8.js → singlecell-281a74a6.js} +1 -1
- package/dist/snp-32b8cbd8.js +1 -0
- package/dist/{snp-6e312b4c.js → snp-6bbefa83.js} +1 -1
- package/dist/snplocus-84450f3d.js +1 -0
- package/dist/{spliceevent.a53ss.diagram-aa2df5d7.js → spliceevent.a53ss.diagram-c04f46f1.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-0b792984.js → spliceevent.exonskip.diagram-a514c12e.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-a9a45dfc.js +1 -0
- package/dist/{spliceevent.noeventdiagram-e6e29a6e.js → spliceevent.noeventdiagram-b1be922c.js} +1 -1
- package/dist/{spliceevent.phrase-5f65a5f4.js → spliceevent.phrase-57659f7c.js} +1 -1
- package/dist/{stattable-775a5af5.js → stattable-7fa50fd2.js} +1 -1
- package/dist/{style.gdc-519a42d8.js → style.gdc-6b6a2e0c.js} +1 -1
- package/dist/{summary-5866c75f.js → summary-54587ccf.js} +1 -1
- package/dist/{sunburst-f928bfd2.js → sunburst-c24faf27.js} +1 -1
- package/dist/{survival-405514f6.js → survival-21e6637b.js} +1 -1
- package/dist/survival-538cddc2.js +1 -0
- package/dist/{svg.download-cd895635.js → svg.download-0dd56dfd.js} +1 -1
- package/dist/{svg.legend-812ea603.js → svg.legend-21629769.js} +1 -1
- package/dist/{svgraph-037fd7b6.js → svgraph-76e34d5e.js} +1 -1
- package/dist/{svmr-3bd143c3.js → svmr-89b80ea2.js} +1 -1
- package/dist/table-10183501.js +1 -0
- package/dist/{table-e013d8fc.js → table-bb97b5c9.js} +1 -1
- package/dist/{termInfo-e16f90f2.js → termInfo-4d954045.js} +1 -1
- package/dist/termdb.bins-06fd21c1.js +1 -0
- package/dist/termsetting-c12f1c69.js +1 -0
- package/dist/{tk-25ae65c4.js → tk-b96367f7.js} +1 -1
- package/dist/{toggleButtons-2144daab.js → toggleButtons-bb9aca2f.js} +1 -1
- package/dist/{tp.ui-38bc5890.js → tp.ui-f01b186b.js} +1 -1
- package/dist/tvs.density-064e5767.js +1 -0
- package/dist/{tvs.geneVariant-f99fe353.js → tvs.geneVariant-3fac6bed.js} +1 -1
- package/dist/{tvs.numeric-d9108473.js → tvs.numeric-86aacc82.js} +1 -1
- package/dist/{tvs.samplelst-3b8ee998.js → tvs.samplelst-1b00d7b6.js} +1 -1
- package/dist/{uiUtils-57f4b1ba.js → uiUtils-5aad7e13.js} +1 -1
- package/dist/{variantBrowser-56ebc7e1.js → variantBrowser-2c465d02.js} +1 -1
- package/dist/{vcf-e43b533a.js → vcf-55bf2c83.js} +1 -1
- package/dist/{violin-1352dab2.js → violin-edbe9a63.js} +1 -1
- package/dist/violin.interactivity-57637244.js +1 -0
- package/dist/{violin.renderer-4273257d.js → violin.renderer-4cab7448.js} +1 -1
- package/dist/{violinRenderer-7f46e468.js → violinRenderer-24abe5fd.js} +1 -1
- package/dist/{viridis-87a8b605.js → viridis-8a8f3e12.js} +1 -1
- package/dist/{y-cac91178.js → y-6fe1bb7b.js} +1 -1
- package/dist/{zoom-001c2f01.js → zoom-6a36fb2b.js} +1 -1
- package/package.json +6 -5
- package/dist/FilterRxComp-e8de560c.js +0 -1
- package/dist/FilterStateless-75514d37.js +0 -1
- package/dist/app-3d14cbe4.js +0 -1
- package/dist/app-8b5b982a.js +0 -1
- package/dist/bam-fa90bae8.js +0 -1
- package/dist/block.lazyload-4c4e81ff.js +0 -1
- package/dist/controls.btns-237b3154.js +0 -1
- package/dist/genomeBrowser-9f0e8a60.js +0 -1
- package/dist/hierCluster-edaaacc5.js +0 -1
- package/dist/hierCluster.config-a84f69a3.js +0 -1
- package/dist/hierCluster.interactivity-dd917fd3.js +0 -1
- package/dist/hierCluster.renderers-4d33e96a.js +0 -1
- package/dist/launch.adhoc-cb00917b.js +0 -1
- package/dist/legacyDataset-c9bab1e6.js +0 -1
- package/dist/matrix-8b3341c4.js +0 -1
- package/dist/matrix.cells-4dd055e7.js +0 -1
- package/dist/matrix.cluster-7ab94fb5.js +0 -1
- package/dist/matrix.config-b3b56456.js +0 -1
- package/dist/matrix.controls-6e0e9692.js +0 -1
- package/dist/matrix.data-baabaf57.js +0 -1
- package/dist/matrix.dom-cb1f4872.js +0 -1
- package/dist/matrix.groups-9990aade.js +0 -1
- package/dist/matrix.interactivity-3f3cf44d.js +0 -1
- package/dist/matrix.layout-50bc2ea5.js +0 -1
- package/dist/matrix.legend-024e2d50.js +0 -1
- package/dist/matrix.renderers-1aed44e5.js +0 -1
- package/dist/matrix.serieses-dc18fcc2.js +0 -1
- package/dist/matrix.sort-89b98e83.js +0 -1
- package/dist/matrix.sorterUi-0ad98ef0.js +0 -1
- package/dist/metaboliteIntensity-4d905d93.js +0 -1
- package/dist/niceNumLabels-ef07b7ad.js +0 -1
- package/dist/numeric.continuous-d27197cf.js +0 -1
- package/dist/numeric.discrete-b826f33b.js +0 -1
- package/dist/plot.app-4dc30ebc.js +0 -1
- package/dist/plot.barplot-331715f6.js +0 -1
- package/dist/plot.ssgq-b5f68395.js +0 -1
- package/dist/profileHome-11b7d146.js +0 -1
- package/dist/profilePlot-5dd1fe71.js +0 -1
- package/dist/recover-4888c2a9.js +0 -1
- package/dist/regression.results-f61b4a25.js +0 -1
- package/dist/sampleScatter-b96546e9.js +0 -1
- package/dist/select2Terms-eb437c2a.js +0 -1
- package/dist/singleCellPlot-e7e57b0f.js +0 -1
- package/dist/snp-41aa88d1.js +0 -1
- package/dist/snplocus-0653ba82.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-af1943e3.js +0 -1
- package/dist/survival-10dd3d28.js +0 -1
- package/dist/table-be2a9975.js +0 -1
- package/dist/termdb.bins-a60aaa77.js +0 -1
- package/dist/termsetting-7467350f.js +0 -1
- package/dist/tvs.density-060d3006.js +0 -1
- package/dist/violin.interactivity-2502dcd8.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){if(t===void 0)t={};var n=t.insertAt;if(!e||typeof document==="undefined"){return}var r=document.head||document.getElementsByTagName("head")[0];var o=document.createElement("style");o.type="text/css";if(n==="top"){if(r.firstChild){r.insertBefore(o,r.firstChild)}else{r.appendChild(o)}}else{r.appendChild(o)}if(o.styleSheet){o.styleSheet.cssText=e}else{o.appendChild(document.createTextNode(e))}}var t='\n/**\n * Render the `main` element consistently in IE.\n */\n\n.sja_root_holder main, .sja_menu_div main, .sja_pane main {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\n.sja_root_holder h1, .sja_menu_div h1, .sja_pane h1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\n.sja_root_holder hr, .sja_menu_div hr, .sja_pane hr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\n.sja_root_holder pre, .sja_menu_div pre, .sja_pane pre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\n.sja_root_holder a, .sja_menu_div a, .sja_pane a {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\n.sja_root_holder abbr[title], .sja_menu_div abbr[title], .sja_pane abbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\n.sja_root_holder b, .sja_menu_div b, .sja_pane b,\n.sja_root_holder strong, .sja_menu_div strong, .sja_pane strong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\n.sja_root_holder code, .sja_menu_div code, .sja_pane code,\n.sja_root_holder kbd, .sja_menu_div kbd, .sja_pane kbd,\n.sja_root_holder samp, .sja_menu_div samp, .sja_pane samp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\n.sja_root_holder small, .sja_menu_div small, .sja_pane small {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\n.sja_root_holder sub, .sja_menu_div sub, .sja_pane sub,\n.sja_root_holder sup, .sja_menu_div sup, .sja_pane sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\n.sja_root_holder sub, .sja_menu_div sub, .sja_pane sub {\n bottom: -0.25em;\n}\n\n.sja_root_holder sup, .sja_menu_div sup, .sja_pane sup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\n.sja_root_holder img, .sja_menu_div img, .sja_pane img {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\n.sja_root_holder button, .sja_menu_div button, .sja_pane button,\n.sja_root_holder input, .sja_menu_div input, .sja_pane input,\n.sja_root_holder optgroup, .sja_menu_div optgroup, .sja_pane optgroup,\n.sja_root_holder select, .sja_menu_div select, .sja_pane select,\n.sja_root_holder textarea, .sja_menu_div textarea, .sja_pane textarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\n.sja_root_holder button, .sja_menu_div button, .sja_pane button,\n.sja_root_holder input /* 1 */, .sja_menu_div input /* 1 */, .sja_pane input /* 1 */ {\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\n.sja_root_holder button, .sja_menu_div button, .sja_pane button,\n.sja_root_holder select /* 1 */, .sja_menu_div select /* 1 */, .sja_pane select /* 1 */ {\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\n.sja_root_holder button, .sja_menu_div button, .sja_pane button,\n.sja_root_holder [type="button"], .sja_menu_div [type="button"], .sja_pane [type="button"],\n.sja_root_holder [type="reset"], .sja_menu_div [type="reset"], .sja_pane [type="reset"],\n.sja_root_holder [type="submit"], .sja_menu_div [type="submit"], .sja_pane [type="submit"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\n.sja_root_holder button::-moz-focus-inner, .sja_menu_div button::-moz-focus-inner, .sja_pane button::-moz-focus-inner,\n.sja_root_holder [type="button"]::-moz-focus-inner, .sja_menu_div [type="button"]::-moz-focus-inner, .sja_pane [type="button"]::-moz-focus-inner,\n.sja_root_holder [type="reset"]::-moz-focus-inner, .sja_menu_div [type="reset"]::-moz-focus-inner, .sja_pane [type="reset"]::-moz-focus-inner,\n.sja_root_holder [type="submit"]::-moz-focus-inner, .sja_menu_div [type="submit"]::-moz-focus-inner, .sja_pane [type="submit"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\n.sja_root_holder button:-moz-focusring, .sja_menu_div button:-moz-focusring, .sja_pane button:-moz-focusring,\n.sja_root_holder [type="button"]:-moz-focusring, .sja_menu_div [type="button"]:-moz-focusring, .sja_pane [type="button"]:-moz-focusring,\n.sja_root_holder [type="reset"]:-moz-focusring, .sja_menu_div [type="reset"]:-moz-focusring, .sja_pane [type="reset"]:-moz-focusring,\n.sja_root_holder [type="submit"]:-moz-focusring, .sja_menu_div [type="submit"]:-moz-focusring, .sja_pane [type="submit"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\n.sja_root_holder fieldset, .sja_menu_div fieldset, .sja_pane fieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\n.sja_root_holder legend, .sja_menu_div legend, .sja_pane legend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\n.sja_root_holder progress, .sja_menu_div progress, .sja_pane progress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\n.sja_root_holder textarea, .sja_menu_div textarea, .sja_pane textarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n.sja_root_holder [type="checkbox"], .sja_menu_div [type="checkbox"], .sja_pane [type="checkbox"],\n.sja_root_holder [type="radio"], .sja_menu_div [type="radio"], .sja_pane [type="radio"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n.sja_root_holder [type="number"]::-webkit-inner-spin-button, .sja_menu_div [type="number"]::-webkit-inner-spin-button, .sja_pane [type="number"]::-webkit-inner-spin-button,\n.sja_root_holder [type="number"]::-webkit-outer-spin-button, .sja_menu_div [type="number"]::-webkit-outer-spin-button, .sja_pane [type="number"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n.sja_root_holder [type="search"], .sja_menu_div [type="search"], .sja_pane [type="search"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n.sja_root_holder [type="search"]::-webkit-search-decoration, .sja_menu_div [type="search"]::-webkit-search-decoration, .sja_pane [type="search"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n.sja_root_holder ::-webkit-file-upload-button, .sja_menu_div ::-webkit-file-upload-button, .sja_pane ::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\n.sja_root_holder details, .sja_menu_div details, .sja_pane details {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\n.sja_root_holder summary, .sja_menu_div summary, .sja_pane summary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\n.sja_root_holder template, .sja_menu_div template, .sja_pane template {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n.sja_root_holder [hidden], .sja_menu_div [hidden], .sja_pane [hidden] {\n display: none;\n}';e(t);var n="pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}";e(n);var r="/*\n see client/generateScopedCss.js on how to generate style-normalize-*.css\n\n also see a TODO comment in client/src/app.js, of dynamically importing\n style-normalize-unscoped.css only if it's known to not conflict in\n the embedder portal\n*/\n/* directly import these in src/app.js so that they will be processed as CSSStyleSheet\n@import './style-normalize-scoped.css';\n@import 'highlight.js/styles/github.css';\n*/\n/*\nhtml {\n height:100%;\n}\nbody {\n min-height:100%;\n}\ntable {\n font-size:1em;\n border-spacing:1px;\n border-collapse:separate;\n}\n*/\n/*\n !!! NOTE !!!\n FireFox does not support the @scope (selector) syntax\n that can enclose all affected rules inside a nested block,\n so for now, will need to prepend the .sja_root_holder scope for each selector\n*/\n/***************************************\nCSS properties that are not covered \nby normalize.css are covered here\n\n!!! make sure to scope to sja_root_holder\n****************************************/\n.sja_root_holder h2 {\n margin-block-start: 0.83em;\n margin-block-end: 0.83em;\n}\n/***************************************\n tag-based styles\n\n prevent embedder styles from overriding\n the styles within pp-controlled divs\n****************************************/\n/* use default browser styles within pp-controlled divs */\n/* using the !important flag:\n- this flag is used to override conflicting styles\n- this flag will override both embedder styling and inline styling\n- it is not necessary to use this flag to prevent embedder styles from overriding pp styles, because specifying styles within pp-specific classes will usually prevent this issue\n- the only time when it is necessary to use this flag is when (1) the conflicting styling also has an !important flag or (2) the conflicting styling is also specified in this same file\n*/\n.sja_root_holder {\n /*background-color: #fff;*/\n}\n.sja_root_holder,\n.sja_menu_div,\n.sja_pane {\n all: initial;\n /* block inheritance for all properties */\n}\n.sja_root_holder table,\n.sja_menu_div table,\n.sja_pane table {\n border-collapse: separate;\n border-spacing: 2px;\n}\n.sja_root_holder svg {\n display: inline-block;\n}\n/*\n override the thicker button border\n that results when a button's \n border-radius: 0 which seems to override\n all associated styles of \n -webkit-appearance: button;\n*/\n.sja_root_holder button,\n.sja_menu_div button,\n.sja_pane button {\n padding: 2px 3px;\n border-width: 1px;\n border-style: solid;\n border-radius: 3px;\n box-shadow: inset 0 0 0 99999px rgba(255, 255, 255, 0.3);\n font-family: Arial;\n color: black;\n background-color: buttonface;\n border-color: buttonborder;\n}\n.sja_root_holder button:disabled,\n.sja_menu_div button:disabled,\n.sja_pane button:disabled {\n background-color: rgba(239, 239, 239, 0.3);\n color: rgba(16, 16, 16, 0.3);\n border-color: rgba(118, 118, 118, 0.3);\n}\n.sja_root_holder button:hover,\n.sja_menu_div button:hover,\n.sja_pane button:hover {\n box-shadow: none;\n}\n.sja_root_holder label,\n.sja_menu_div label,\n.sja_pane label {\n margin-bottom: 0;\n}\n.sja_root_holder a,\n.sja_menu_div a,\n.sja_pane a,\n.linkText {\n color: rgb(0, 0, 238);\n cursor: pointer;\n text-decoration: underline;\n}\n.sja_root_holder input,\n.sja_menu_div input,\n.sja_pane input {\n padding: 1px 3px;\n margin: 2px 5px;\n border: 1px solid #ccc;\n}\n.sja_root_holder select,\n.sja_menu_div select,\n.sja_pane select {\n padding: 1px 3px;\n padding-right: 30px; /* padding between text and arrow */\n background-size: auto;\n background-position: right;\n border: 1px solid #ccc;\n}\n.sja_root_holder textarea,\n.sja_menu_div textarea,\n.sja_pane textarea {\n padding: 2px;\n border: 1px solid #ccc;\n}\n.sja_root_holder input[type=\"search\"].tree_search {\n -webkit-appearance: searchfield;\n}\n.sja_root_holder ul {\n display: block;\n list-style-type: disc;\n margin-block-start: 1em;\n margin-block-end: 1em;\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n padding-inline-start: 40px;\n}\n.sja_root_holder ul ul {\n list-style-type: circle;\n}\n.sja_root_holder li {\n display: list-item;\n text-align: -webkit-match-parent;\n}\n/*************************\n class-specific styles\n*************************/\n.sja_errorbar {\n position: relative;\n padding: 5px 50px 5px 10px;\n background-color: rgba(200, 0, 0, .1);\n color: rgba(190, 0, 0, .5);\n border: solid 1px rgba(200, 0, 0, .2);\n /*border-width: 1px 0px;*/\n}\n.sja_errorbar>:nth-child(2) {\n position: absolute;\n padding: 5px 10px;\n cursor: default;\n top: 0px;\n right: 10px;\n}\n.sja_inset_a {\n background-color: #ebedeb;\n box-shadow: inset 0px 0px 14px 0px #858585;\n padding: 5px 10px;\n}\n.sja_menu,\n.sja_menu_persist,\n.sja_tooltip {\n position: absolute;\n background-color: white;\n font-family: Arial;\n z-index: 1000;\n}\n/* /client/src/app.js start */\n.sja_menuoption {\n color: black;\n padding: 5px 10px;\n cursor: default;\n background-color: #f2f2f2;\n margin: 1px;\n border-radius: 5px;\n}\n.sja_menuoption_not_interactive {\n padding: 5px 10px;\n cursor: default;\n margin: 1px;\n}\n.sja_sharp_border {\n border-radius: 0px;\n}\n.sja_menuoption:hover {\n background-color: #e6e6e6\n}\n.sja_menuoption:active {\n color: #cc0000;\n background-color: #FCE2E1;\n}\n/* /client/src/app.js end */\n.sja_filter_tag_btn {\n display: inline-block;\n color: black;\n padding: 5px 8px;\n background-color: #cfe2f3;\n cursor: default;\n}\n/* .sja_filter_tag_btn:hover { opacity: 0.8; cursor:default} */\n.sja_filter_tag_btn:active {\n color: #cc0000;\n opacity: 0.6;\n}\n.ts_pill:hover,\n.tvs_pill:hover {\n opacity: 0.8;\n cursor: default\n}\n.sjpp_apply_btn {\n background-color: #d0e0e3;\n border-radius: 13px !important; \n padding: 7px 15px !important;\n border: 0px !important;\n}\n.sjpp_delete_btn,\n.remove_btn {\n background-color: #f4cccc;\n}\n.ts_summary_btn {\n background-color: #d9d2e9;\n}\n/* mostly for table tr */\n.sja_clb {\n padding: 5px 10px;\n cursor: default;\n}\n.sja_clb:hover {\n background: #ffff99;\n}\n.sja_clb:active {\n background: #ffcc99;\n}\n.sja_clb_selected {\n padding: 5px 10px;\n cursor: default;\n background: #FAF0C8;\n border-bottom: solid 2px #E3CA64;\n}\n.sja_clb_selected:hover {\n background: #FCE68B\n}\n.sja_clb_selected:active {\n background: #ffcc99\n}\n/* table tr, gray highlight */\n.sja_clb_gray {\n padding: 5px 10px;\n cursor: default;\n}\n.sja_clb_gray:hover {\n background-color: #f1f1f1;\n}\n.sja_clb_gray:active {\n background-color: #ffffcc;\n}\n.sja_hideable_legend {\n cursor: default;\n}\n.sja_hideable_legend:hover {\n background: #ffff99;\n}\n.sja_legend_more_btn {\n padding: 3px;\n text-align: center;\n font-size: 0.7em;\n opacity: 0.5;\n cursor: default;\n}\n.sja_legend_more_btn:hover {\n text-decoration: underline;\n}\n/* text only */\n.sja_clbtext2 {\n cursor: default;\n text-decoration: none;\n}\n.sja_clbtext2:hover {\n text-decoration: underline;\n}\n.sja_clbtext2:active {\n fill: #CC0000;\n color: #CC0000;\n}\n.sja_clbtext {\n cursor: default;\n color: black;\n fill: black;\n border-bottom: solid 1px transparent;\n}\n.sja_clbtext:hover {\n color: #631318;\n fill: #631318;\n border-color: black;\n}\n.sja_clbtext:active {\n color: #CC0000;\n border-color: #cc0000;\n fill: #cc0000;\n}\n.sja_clbtextbold {\n cursor: default;\n color: black;\n fill: black;\n font-weight: normal;\n}\n.sja_clbtextbold:hover {\n color: #631318;\n fill: #631318;\n font-weight: bold;\n}\n.sja_clbtextbold:active {\n color: #CC0000;\n fill: #cc0000;\n font-weight: bold;\n}\n.sja_opaque6 {\n opacity: .6;\n cursor: default;\n}\n.sja_opaque6:hover {\n opacity: .9;\n}\n.sja_opaque8 {\n opacity: .8;\n cursor: default;\n}\n.sja_opaque8:hover {\n opacity: 1;\n}\n.sja_simpletable tr td {\n border-bottom: solid 1px #ededed;\n}\n.sja_mcdot {\n cursor: default;\n border-radius: 8px;\n padding: 1px 2px;\n margin-right: 1px;\n color: white;\n font-size: .8em;\n}\n.sja_variantpagesnv {\n cursor: default;\n display: inline-block;\n border-radius: 3px;\n padding: 3px 10px;\n margin-right: 2px;\n color: white;\n background-color: #0099FF;\n opacity: .6;\n}\n.sja_variantpagesnv:hover {\n opacity: 1;\n}\n.sja_variantpagesnv:active {\n background-color: #3366FF;\n}\n.sja_selectsample {\n cursor: default;\n display: inline-block;\n border-radius: 2px;\n border: solid 1px #545454;\n padding: 3px 10px;\n margin-right: 2px;\n color: #545454;\n background-color: white;\n font-size: .8em;\n}\n.sja_selectsample:hover {\n background-color: #f1f1f1;\n}\n.sja_selectsample:active {\n background-color: #F2E1E3;\n}\n.sja_pane {\n position: absolute;\n /*border:solid 1px #ccc;\n */\n box-shadow: 0px 2px 4px 1px #999;\n background-color: white;\n}\n.sja_pane>:first-child {\n padding-right: 10px;\n cursor: move;\n background-color: #f0f0f0;\n}\n.sja_pane>:nth-child(2) {\n padding: 0px 10px 10px 10px;\n font-family: Arial;\n}\n.sja_cursor_hmove {\n cursor: ew-resize;\n}\n.sja_svgtext {\n cursor: default;\n fill-opacity: .8\n}\n.sja_svgtext2 {\n cursor: default;\n fill: black;\n}\n.sja_svgtext2:hover {\n fill: #B30000\n}\n.sja_clb5 {\n /* tree button */\n cursor: default;\n display: inline-block;\n border: solid 1px #006600;\n color: #006600;\n background-color: white;\n margin-left: 6px;\n padding: 0px 4px;\n font-size: 80%;\n}\n.sja_clb5:hover {\n background-color: #006600;\n color: white;\n}\n.sja_clb5:active {\n background-color: #009900;\n}\n.sja_clb2 {\n color: black;\n font-family: Courier;\n display: inline-block;\n padding: 1px 5px;\n cursor: default;\n}\n.sja_clb2:hover {\n background-color: #ffff99;\n}\n.sja_clb2:active {\n background-color: #ccff99;\n}\n.sja_clbb {\n /* highlight border */\n border: solid 1px transparent;\n cursor: default;\n}\n.sja_clbb:hover {\n border-color: #ccc;\n}\n.sja_clbbox {\n cursor: default;\n padding: 2px 5px;\n color: white;\n font-size: .7em;\n font-weight: normal;\n}\n.sja_clbbox:hover {\n font-weight: bold;\n}\n.sja_tr {\n cursor: default;\n background-color: #f1f1f1;\n}\n.sja_tr:hover {\n background-color: white;\n}\n.sja_tr:active {\n background-color: #ffffcc;\n}\n.sja_tr2 {\n cursor: default;\n}\n.sja_tr2:hover {\n background-color: #ffffcc;\n}\n.sja_tr2:active {\n background-color: #ffff00;\n}\n.sja_aa_disclabel {\n cursor: default;\n}\n.sja_aa_discnum {\n cursor: default;\n text-rendering: geometricPrecision;\n}\n.sja_aa_skkick:hover {\n stroke: #858585;\n}\n.sja_aa_disckick:hover {\n stroke-opacity: 1;\n}\n.sja_menuoption_y {\n display: inline-block;\n color: black;\n padding: 2px 4px;\n cursor: default;\n background-color: #E6E5C5;\n margin: 2px;\n}\n.sja_menuoption_y:hover {\n background-color: #DEDCA9\n}\n.sja_menuoption_y:active {\n background-color: #FFFF99\n}\n.sja_menuoption_r {\n display: inline-block;\n color: black;\n padding: 2px 4px;\n cursor: default;\n background-color: #EDDDDE;\n margin: 2px;\n}\n.sja_menuoption_r:hover {\n background-color: #E8CFD1\n}\n.sja_menuoption_r:active {\n background-color: #FCD9DD\n}\n.sja_error2 {\n display: inline-block;\n padding: 5px 50px 5px 10px;\n margin: 10px 20px;\n background-color: rgba(200, 0, 0, .5);\n color: white;\n border-radius: 6px;\n}\n.sja_paint {\n position: relative;\n}\n.sja_paint>:first-child {}\n.sja_paint>:nth-child(2) {\n position: absolute;\n padding: 3px 6px;\n cursor: default;\n top: 10px;\n right: 30px;\n font-size: 80%;\n}\n.sja_tree_ul {\n list-style-type: none;\n padding-left: 25px;\n line-height: 1.4;\n}\n.sja_input {\n display: inline-block;\n padding: 2px 6px;\n}\n.sja_bulkcell {\n display: inline-block;\n width: 3px;\n height: 9px;\n margin: 1px 1px 0px 0px;\n}\n.sja_tag {\n display: inline-block;\n margin-left: 10px;\n padding: 1px 3px;\n background-color: #858585;\n color: white;\n font-size: 80%;\n}\n.sja_bgbox {\n cursor: default;\n fill: yellow;\n fill-opacity: 0;\n}\n.sja_bgbox:hover {\n fill-opacity: .2;\n}\n.sja_diseasehm_search_item {\n display: inline-block;\n margin: 3px;\n padding: 2px;\n}\n.sja_pulse {\n animation: pulse .5s alternate infinite;\n}\n@keyframes pulse {\n from {\n opacity: .2;\n }\n to {\n opacity: 1;\n }\n}\n.sja_hm-edittool-table td {\n padding: 0 2px;\n cursor: pointer;\n text-align: center;\n font-size: 14px;\n}\n.sja_hm-edittool-table td:hover {\n opacity: 1;\n font-weight: 600;\n}\n.sja_tinylogo_head {\n display: inline-block;\n background-color: #858585;\n color: white;\n font-size: .6em;\n padding: 1px 3px;\n}\n.sja_tinylogo_body {\n display: inline-block;\n margin-left: 10px;\n background-color: #ededed;\n font-size: .9em;\n color: black;\n padding: 1px 5px;\n}\n.sja_handle_green {\n display: inline-block;\n font-size: .9em;\n padding: 3px 6px;\n background-color: #f0f7f1;\n color: #146E17;\n cursor: default;\n}\n.sja_handle_green:hover {\n background-color: #D5F0D8;\n}\n.sja_handle_green:active {\n background-color: #BAD1BC;\n color: black;\n}\n.sja_handle_red {\n display: inline-block;\n font-size: .9em;\n padding: 3px 6px;\n background-color: #F5EBEC;\n color: #991F1F;\n cursor: default;\n}\n.sja_handle_red:hover {\n background-color: #F2D8DB;\n}\n.sja_handle_red:active {\n background-color: #E3B1B7;\n color: black;\n}\n.sja_btn {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n text-decoration: none;\n color: initial;\n}\n.sja_button {\n display: inline-block;\n background: white;\n padding: 3px 5px;\n border: solid 1px black;\n opacity: .8;\n cursor: default;\n}\n.sja_button:hover {\n opacity: 1;\n}\n.sja_button_open {\n display: inline-block;\n background: #ddd;\n padding: 3px 5px;\n border: solid 1px black;\n opacity: .8;\n cursor: default;\n}\n.sja_button_open:hover {\n opacity: 1;\n}\n.sja_button_fold {\n display: inline-block;\n background: #aaa;\n color: white;\n padding: 3px 5px;\n border: solid 1px black;\n opacity: .8;\n cursor: default;\n}\n.sja_button_fold:hover {\n opacity: 1;\n}\n.sja-termdb-config-row-label {\n padding: 5px;\n text-align: left;\n vertical-align: middle;\n}\n.sjpp-controls-table {\n margin-bottom: 10px;\n}\n.sjpp-controls-table > tr:hover {\n /*font-weight: 600;*/\n text-shadow:0px 0px 0.5px black;\n background-color: rgba(239, 236, 149, 0.389);\n}\n.sja_edit_btn {\n display: inline-block;\n color: black;\n background-color: #f2f2f2;\n border-radius: 5px;\n border: solid 1px #aaa;\n padding: 5px 10px;\n cursor: default;\n margin: 1px;\n font-size: 0.8em;\n margin-left: 20px;\n}\n.sja_edit_btn:hover {\n background-color: #e6e6e6\n}\n.sja_edit_btn:active {\n color: #cc0000;\n background-color: #FCE2E1;\n}\n/* App Drawer style */\n.sjpp-appdrawer-cols {\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n font-weight: 500;\n font-size: 17px;\n text-align: left;\n color: #324870;\n margin: 10px 10px 0px 10px;\n}\n.sjpp-track, .sjpp-track li {\n display: grid !important;\n grid-template-columns: 2fr 4fr 40px;\n grid-template-areas: 'image header' 'image blurb';\n gap: 5px;\n}\n.sjpp-app-drawer-card,\n.sjpp-track {\n background-color: white;\n max-width: 400px;\n /* min-width: 320px; */\n border-radius: 5px;\n padding: 0px;\n align-items: center;\n justify-items: left;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n -webkit-transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);\n transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n.sjpp-app-drawer-card::after,\n.sjpp-track::after {\n content: \"\";\n border-radius: 8px;\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n opacity: 0;\n -webkit-transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);\n transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n.sjpp-app-drawer-card:hover,\n.sjpp-track:hover {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n.sjpp-app-drawer-card:hover::after,\n.sjpp-track:hover::after {\n opacity: 1;\n}\n.sjpp-track-image {\n grid-area: image;\n width: 75px;\n height: 75px;\n align-self: start;\n justify-self: start;\n}\n.sjpp-track-image img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 5px 0px 0px 5px;\n}\n.sjpp-app-drawer-card-ribbon{\n grid-area: image;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n.sjpp-app-drawer-card-ribbon::before,\n.sjpp-app-drawer-card-ribbon::after {\n position: relative;\n z-index: -1;\n content: '';\n display: block;\n border-top-color: transparent;\n border-left-color: transparent;\n}\n.sjpp-app-drawer-card-ribbon span {\n position: relative;\n display: block;\n width: 100%;\n padding: 1px 0;\n border-color: transparent transparent transparent darkgray;\n box-shadow: 0 2px 7.5px rgba(0, 0, 0, 0.3);\n opacity: 1;\n font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;\n transform: rotate(-45deg);\n}\n.sjpp-app-drawer-card-ribbon::before {\n top: 0;\n right: 0;\n}\n.sjpp-app-drawer-card-ribbon::after {\n bottom: 0;\n left: 0;\n}\n.sjpp-track-h {\n grid-area: header;\n font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;\n margin-left: 5px;\n padding: 0px;\n}\n.sjpp-track-blurb {\n grid-area: blurb;\n font-size: 13px;\n font-weight: 300;\n margin-left: 5px;\n justify-content: center;\n font-style: oblique;\n color: #403f3f;\n}\n/* client/src/block.js start */\n.sjpp-active-tiny-button {\n\tdisplay: inline-block;\n\tbackground-color: #1C5E86;\n\tfont-size: .8em;\n\tcolor: white;\n\tpadding: 1px 5px;\n\tmargin-right: 5px;\n\tborder-radius: 4px;\n}\n.sjpp-plus-button\n{\n display: inline-block;\n margin: 1px;\n border: solid 1px #545454;\n font-size: .9em;\n cursor: default;\n padding: 2px 5px;\n}\n.sjpp-dshandleholder\n{\n display: inline-block;\n margin: 1px;\n border: solid 1px #545454;\n font-size: .9em;\n cursor: default;\n}\n.sjpp-dslabel\n{\n display: inline-block;\n color: black;\n padding: 2px 4px;\n\n}\n/* client/src/block.js end */\n/* client/src/app.js start */\n.sjpp-input-div-gene-pos\n{\n display: inline-block;\n padding-right: 5px;\n}\n.sjpp-input-gene-pos\n{\n border: solid 1px #545454;\n padding: 6px 10px;\n border-radius: 5px;\n}\n.sjpp-genome-select-div\n{\n display: inline-block;\n padding-left: 5px;\n}\n.sjpp-genome-select\n{\n border-radius: 5px;\n margin: 1px 20px 1px 10px;\n}\n.sjpp-output-sandbox-title\n{\n border-radius:4px; \n color:white; \n background-color: #969696; \n padding: 1px 5px; \n display:inline-block; \n font-size:0.8em; \n margin-left:4px;\n}\n/* client/src/app.js end */\n/* client/dom/sandbox.ts start */\n.sjpp-output-sandbox-header\n{\n display: inline-block;\n margin: 5px 10px;\n padding-right: 8px;\n margin-bottom: 0px;\n /* box-shadow:2px 0px 2px #f2f2f2; */\n border-radius: 5px 5px 0 0;\n /* background-color: #f2f2f2; */\n z-index: 99;\n}\n.sjpp-output-sandbox-content\n{\n margin: 5px 10px;\n margin-top: 0px;\n padding-right: 8px;\n display: inline-block;\n /* box-shadow: 2px 2px 10px #f2f2f2; */\n border: solid 1px #ccc;\n border-top: solid 1px white;\n border-radius: 0 0 5px 5px;\n}\n.sjpp-output-sandbox-collapse-btn,\n.sjpp-output-sandbox-expand-btn,\n.sjpp-output-sandbox-close-bt\n{\n /* display: inline-block; */\n /* margin: 0px; */\n /* border-right: solid 2px white; */\n font-size: 16px;\n cursor: default;\n}\n.sjpp-output-sandbox-close-bt {\n border-radius: 5px 0 0 0;\n}\n/* \nSeparated padding for sandbox buttons to fix close button's\nright, white border not extending to total height of\nsandbox header\n*/\n.sjpp-output-sandbox-collapse-btn,\n.sjpp-output-sandbox-expand-btn {\n padding: 4px 10px;\n}\n.sjpp-output-sandbox-close-bt {\n padding: 8px 10px;\n}\n/* client/dom/sandbox.ts end */\n.sjpp_row_wrapper:hover {\n background: #fcfcca !important; \n}\n/*.sjpp_row_wrapper:nth-child(odd) {background: rgb(237, 237, 237)}*/\n.sjpp_table_header {\n font-family: 'Arial';\n font-size: 1em;\n text-align: left;\n position: sticky;\n top: 0;\n opacity: 0.7;\n font-weight: normal;\n}\n.sjpp_table_item {\n padding: 3px 5px;\n font-size: 1em;\n text-align: left;\n}\n.sjpp_show_scrollbar{\n\t/* set to \"auto\" to avoid showing a gray track as non-functional scrollbar when contents don't scroll at all, since scrollbar track is now gray and no longer white */\n overflow-y: auto;\n overflow-x: auto;\n}\n.sjpp_show_scrollbar::-webkit-scrollbar{\n background-color: #f1f1f1; /* use non-white track color so the presence of scrollbar is apparent (gdc requirement) */\n border-radius: 7px;\n width: 14px;\n}\n/* This will handle the thumb (scrolling part) */\n.sjpp_show_scrollbar::-webkit-scrollbar-thumb{\n background-color: #858585;\n border-radius: 7px;\n border: 1px solid white;\n}\n.sjpp_show_scrollbar::-webkit-scrollbar-thumb:vertical{\n height: 14px!important;\n width: 14px;\n}\n.sjpp-matrix-series-group-label-g text,\n.sjpp-matrix-series-label-g text,\n.sjpp-matrix-term-group-label-g text,\n.sjpp-matrix-term-label-g text,\n.sjpp-matrix-label text {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -user-select: none;\n}\n.sjpp-nav\n{\n position: sticky;\n background-color: white;\n width: 100%;\n z-index: 10;\n top: 0px;\n left: 0px;\n padding: 0px 0px 15px 0px;\n}\n.add_term_btn {\n border-radius: 6px;\n}\n#sjpp-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color:rgba(255, 255, 255, 0.8);\n}\n.sjpp-spinner {\n position: absolute;\n left: 50%;\n top: 30%;\n height: 60px;\n width: 60px;\n margin: 0px auto;\n -webkit-animation: rotation .6s infinite linear;\n -moz-animation: rotation .6s infinite linear;\n -o-animation: rotation .6s infinite linear;\n animation: rotation .6s infinite linear;\n border-left: 6px solid rgba(0, 174, 239, .15);\n border-right: 6px solid rgba(0, 174, 239, .15);\n border-bottom: 6px solid rgba(0, 174, 239, .15);\n border-top: 6px solid rgba(0, 174, 239, .8);\n border-radius: 100%;\n}\n@-webkit-keyframes rotation {\n from {-webkit-transform: rotate(0deg);}\n to {-webkit-transform: rotate(359deg);}\n }\n@-moz-keyframes rotation {\n from {-moz-transform: rotate(0deg);}\n to {-moz-transform: rotate(359deg);}\n }\n@-o-keyframes rotation {\n from {-o-transform: rotate(0deg);}\n to {-o-transform: rotate(359deg);}\n }\n@keyframes rotation {\n from {transform: rotate(0deg);}\n to {transform: rotate(359deg);}\n }\n.sja_root_holder [aria-label], .sja_menu_div [aria-label], .sja_pane [aria-label] {\n position: relative;\n cursor: default;\n }\n.sja_root_holder [aria-label]:after, .sja_menu_div [aria-label]:after, .sja_pane [aria-label]:after {\n content: attr(aria-label);\n position: absolute;\n left: 1em;\n top: 1.75em; /* put it on the top */\n /*bottom: 50%;*/\n background-color: white;\n font-size: 15px;\n padding: 5px;\n opacity: 0;\n z-index: 10000;\n width: max-content;\n max-width: 300px;\n white-space: wrap;\n pointer-events: none;\n box-shadow: 0px 2px 4px 1px #999;\n text-align: left;\n\n}\n.sja_root_holder [aria-label]:hover:after, .sja_menu_div [aria-label]:hover:after, .sja_pane [aria-label]:hover:after {\n animation-name: fadeOut;\n animation-duration: 5s;\n }\n@keyframes fadeOut {\n 0% {\n opacity: 1;\n }\n 70% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }";e(r);var o=".sja_root_holder .map, .sja_menu_div .map, .sja_pane .map {\n width: 100%;\n height: 400px;\n}\n\n.sja_root_holder .map .ol-custom-overviewmap, .sja_menu_div .map .ol-custom-overviewmap, .sja_pane .map .ol-custom-overviewmap,\n.sja_root_holder .map .ol-custom-overviewmap.ol-uncollapsible, .sja_menu_div .map .ol-custom-overviewmap.ol-uncollapsible, .sja_pane .map .ol-custom-overviewmap.ol-uncollapsible {\n bottom: auto;\n left: auto;\n right: 6pt;\n top: 6pt;\n}\n\n.sja_root_holder .ol-full-screen, .sja_menu_div .ol-full-screen, .sja_pane .ol-full-screen {\n position: absolute;\n right: auto;\n left: 6pt;\n top: 70pt;\n}";e(o);var i="http://www.w3.org/1999/xhtml";var s={svg:"http://www.w3.org/2000/svg",xhtml:i,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function a(e){var t=e+="",n=t.indexOf(":");if(n>=0&&(t=e.slice(0,n))!=="xmlns")e=e.slice(n+1);return s.hasOwnProperty(t)?{space:s[t],local:e}:e}function l(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===i&&t.documentElement.namespaceURI===i?t.createElement(e):t.createElementNS(n,e)}}function c(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function f(e){var t=a(e);return(t.local?c:l)(t)}function d(){}function u(e){return e==null?d:function(){return this.querySelector(e)}}function p(e){if(typeof e!=="function")e=u(e);for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o){for(var i=t[o],s=i.length,a=r[o]=new Array(s),l,c,f=0;f<s;++f){if((l=i[f])&&(c=e.call(l,l.__data__,f,i))){if("__data__"in l)c.__data__=l.__data__;a[f]=c}}}return new tt(r,this._parents)}function h(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function m(){return[]}function g(e){return e==null?m:function(){return this.querySelectorAll(e)}}function b(e){return function(){return h(e.apply(this,arguments))}}function y(e){if(typeof e==="function")e=b(e);else e=g(e);for(var t=this._groups,n=t.length,r=[],o=[],i=0;i<n;++i){for(var s=t[i],a=s.length,l,c=0;c<a;++c){if(l=s[c]){r.push(e.call(l,l.__data__,c,s));o.push(l)}}}return new tt(r,o)}function v(e){return function(){return this.matches(e)}}function w(e){return function(t){return t.matches(e)}}var _=Array.prototype.find;function x(e){return function(){return _.call(this.children,e)}}function k(){return this.firstElementChild}function j(e){return this.select(e==null?k:x(typeof e==="function"?e:w(e)))}var N=Array.prototype.filter;function C(){return Array.from(this.children)}function A(e){return function(){return N.call(this.children,e)}}function S(e){return this.selectAll(e==null?C:A(typeof e==="function"?e:w(e)))}function M(e){if(typeof e!=="function")e=v(e);for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o){for(var i=t[o],s=i.length,a=r[o]=[],l,c=0;c<s;++c){if((l=i[c])&&e.call(l,l.__data__,c,i)){a.push(l)}}}return new tt(r,this._parents)}function O(e){return new Array(e.length)}function I(){return new tt(this._enter||this._groups.map(O),this._parents)}function E(e,t){this.ownerDocument=e.ownerDocument;this.namespaceURI=e.namespaceURI;this._next=null;this._parent=e;this.__data__=t}E.prototype={constructor:E,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function T(e){return function(){return e}}function L(e,t,n,r,o,i){var s=0,a,l=t.length,c=i.length;for(;s<c;++s){if(a=t[s]){a.__data__=i[s];r[s]=a}else{n[s]=new E(e,i[s])}}for(;s<l;++s){if(a=t[s]){o[s]=a}}}function z(e,t,n,r,o,i,s){var a,l,c=new Map,f=t.length,d=i.length,u=new Array(f),p;for(a=0;a<f;++a){if(l=t[a]){u[a]=p=s.call(l,l.__data__,a,t)+"";if(c.has(p)){o[a]=l}else{c.set(p,l)}}}for(a=0;a<d;++a){p=s.call(e,i[a],a,i)+"";if(l=c.get(p)){r[a]=l;l.__data__=i[a];c.delete(p)}else{n[a]=new E(e,i[a])}}for(a=0;a<f;++a){if((l=t[a])&&c.get(u[a])===l){o[a]=l}}}function R(e){return e.__data__}function U(e,t){if(!arguments.length)return Array.from(this,R);var n=t?z:L,r=this._parents,o=this._groups;if(typeof e!=="function")e=T(e);for(var i=o.length,s=new Array(i),a=new Array(i),l=new Array(i),c=0;c<i;++c){var f=r[c],d=o[c],u=d.length,p=$(e.call(f,f&&f.__data__,c,r)),h=p.length,m=a[c]=new Array(h),g=s[c]=new Array(h),b=l[c]=new Array(u);n(f,d,m,g,b,p,t);for(var y=0,v=0,w,_;y<h;++y){if(w=m[y]){if(y>=v)v=y+1;while(!(_=g[v])&&++v<h);w._next=_||null}}}s=new tt(s,r);s._enter=a;s._exit=l;return s}function $(e){return typeof e==="object"&&"length"in e?e:Array.from(e)}function F(){return new tt(this._exit||this._groups.map(O),this._parents)}function P(e,t,n){var r=this.enter(),o=this,i=this.exit();if(typeof e==="function"){r=e(r);if(r)r=r.selection()}else{r=r.append(e+"")}if(t!=null){o=t(o);if(o)o=o.selection()}if(n==null)i.remove();else n(i);return r&&o?r.merge(o).order():o}function q(e){var t=e.selection?e.selection():e;for(var n=this._groups,r=t._groups,o=n.length,i=r.length,s=Math.min(o,i),a=new Array(o),l=0;l<s;++l){for(var c=n[l],f=r[l],d=c.length,u=a[l]=new Array(d),p,h=0;h<d;++h){if(p=c[h]||f[h]){u[h]=p}}}for(;l<o;++l){a[l]=n[l]}return new tt(a,this._parents)}function D(){for(var e=this._groups,t=-1,n=e.length;++t<n;){for(var r=e[t],o=r.length-1,i=r[o],s;--o>=0;){if(s=r[o]){if(i&&s.compareDocumentPosition(i)^4)i.parentNode.insertBefore(s,i);i=s}}}return this}function G(e){if(!e)e=B;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,o=new Array(r),i=0;i<r;++i){for(var s=n[i],a=s.length,l=o[i]=new Array(a),c,f=0;f<a;++f){if(c=s[f]){l[f]=c}}l.sort(t)}return new tt(o,this._parents).order()}function B(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function V(){var e=arguments[0];arguments[0]=this;e.apply(null,arguments);return this}function H(){return Array.from(this)}function J(){for(var e=this._groups,t=0,n=e.length;t<n;++t){for(var r=e[t],o=0,i=r.length;o<i;++o){var s=r[o];if(s)return s}}return null}function Y(){let e=0;for(const t of this)++e;return e}function X(){return!this.node()}function W(e){for(var t=this._groups,n=0,r=t.length;n<r;++n){for(var o=t[n],i=0,s=o.length,a;i<s;++i){if(a=o[i])e.call(a,a.__data__,i,o)}}return this}function Z(e){return function(){this.removeAttribute(e)}}function K(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Q(e,t){return function(){this.setAttribute(e,t)}}function ee(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function te(e,t){return function(){var n=t.apply(this,arguments);if(n==null)this.removeAttribute(e);else this.setAttribute(e,n)}}function ne(e,t){return function(){var n=t.apply(this,arguments);if(n==null)this.removeAttributeNS(e.space,e.local);else this.setAttributeNS(e.space,e.local,n)}}function re(e,t){var n=a(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?K:Z:typeof t==="function"?n.local?ne:te:n.local?ee:Q)(n,t))}function oe(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ie(e){return function(){this.style.removeProperty(e)}}function se(e,t,n){return function(){this.style.setProperty(e,t,n)}}function ae(e,t,n){return function(){var r=t.apply(this,arguments);if(r==null)this.style.removeProperty(e);else this.style.setProperty(e,r,n)}}function le(e,t,n){return arguments.length>1?this.each((t==null?ie:typeof t==="function"?ae:se)(e,t,n==null?"":n)):ce(this.node(),e)}function ce(e,t){return e.style.getPropertyValue(t)||oe(e).getComputedStyle(e,null).getPropertyValue(t)}function fe(e){return function(){delete this[e]}}function de(e,t){return function(){this[e]=t}}function ue(e,t){return function(){var n=t.apply(this,arguments);if(n==null)delete this[e];else this[e]=n}}function pe(e,t){return arguments.length>1?this.each((t==null?fe:typeof t==="function"?ue:de)(e,t)):this.node()[e]}function he(e){return e.trim().split(/^|\s+/)}function me(e){return e.classList||new ge(e)}function ge(e){this._node=e;this._names=he(e.getAttribute("class")||"")}ge.prototype={add:function(e){var t=this._names.indexOf(e);if(t<0){this._names.push(e);this._node.setAttribute("class",this._names.join(" "))}},remove:function(e){var t=this._names.indexOf(e);if(t>=0){this._names.splice(t,1);this._node.setAttribute("class",this._names.join(" "))}},contains:function(e){return this._names.indexOf(e)>=0}};function be(e,t){var n=me(e),r=-1,o=t.length;while(++r<o)n.add(t[r])}function ye(e,t){var n=me(e),r=-1,o=t.length;while(++r<o)n.remove(t[r])}function ve(e){return function(){be(this,e)}}function we(e){return function(){ye(this,e)}}function _e(e,t){return function(){(t.apply(this,arguments)?be:ye)(this,e)}}function xe(e,t){var n=he(e+"");if(arguments.length<2){var r=me(this.node()),o=-1,i=n.length;while(++o<i)if(!r.contains(n[o]))return false;return true}return this.each((typeof t==="function"?_e:t?ve:we)(n,t))}function ke(){this.textContent=""}function je(e){return function(){this.textContent=e}}function Ne(e){return function(){var t=e.apply(this,arguments);this.textContent=t==null?"":t}}function Ce(e){return arguments.length?this.each(e==null?ke:(typeof e==="function"?Ne:je)(e)):this.node().textContent}function Ae(){this.innerHTML=""}function Se(e){return function(){this.innerHTML=e}}function Me(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t==null?"":t}}function Oe(e){return arguments.length?this.each(e==null?Ae:(typeof e==="function"?Me:Se)(e)):this.node().innerHTML}function Ie(){if(this.nextSibling)this.parentNode.appendChild(this)}function Ee(){return this.each(Ie)}function Te(){if(this.previousSibling)this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Le(){return this.each(Te)}function ze(e){var t=typeof e==="function"?e:f(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))}function Re(){return null}function Ue(e,t){var n=typeof e==="function"?e:f(e),r=t==null?Re:typeof t==="function"?t:u(t);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))}function $e(){var e=this.parentNode;if(e)e.removeChild(this)}function Fe(){return this.each($e)}function Pe(){var e=this.cloneNode(false),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function qe(){var e=this.cloneNode(true),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function De(e){return this.select(e?qe:Pe)}function Ge(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Be(e){return function(t){e.call(this,t,this.__data__)}}function Ve(e){return e.trim().split(/^|\s+/).map((function(e){var t="",n=e.indexOf(".");if(n>=0)t=e.slice(n+1),e=e.slice(0,n);return{type:e,name:t}}))}function He(e){return function(){var t=this.__on;if(!t)return;for(var n=0,r=-1,o=t.length,i;n<o;++n){if(i=t[n],(!e.type||i.type===e.type)&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options)}else{t[++r]=i}}if(++r)t.length=r;else delete this.__on}}function Je(e,t,n){return function(){var r=this.__on,o,i=Be(t);if(r)for(var s=0,a=r.length;s<a;++s){if((o=r[s]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options);this.addEventListener(o.type,o.listener=i,o.options=n);o.value=t;return}}this.addEventListener(e.type,i,n);o={type:e.type,name:e.name,value:t,listener:i,options:n};if(!r)this.__on=[o];else r.push(o)}}function Ye(e,t,n){var r=Ve(e+""),o,i=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a)for(var l=0,c=a.length,f;l<c;++l){for(o=0,f=a[l];o<i;++o){if((s=r[o]).type===f.type&&s.name===f.name){return f.value}}}return}a=t?Je:He;for(o=0;o<i;++o)this.each(a(r[o],t,n));return this}function Xe(e,t,n){var r=oe(e),o=r.CustomEvent;if(typeof o==="function"){o=new o(t,n)}else{o=r.document.createEvent("Event");if(n)o.initEvent(t,n.bubbles,n.cancelable),o.detail=n.detail;else o.initEvent(t,false,false)}e.dispatchEvent(o)}function We(e,t){return function(){return Xe(this,e,t)}}function Ze(e,t){return function(){return Xe(this,e,t.apply(this,arguments))}}function Ke(e,t){return this.each((typeof t==="function"?Ze:We)(e,t))}function*Qe(){for(var e=this._groups,t=0,n=e.length;t<n;++t){for(var r=e[t],o=0,i=r.length,s;o<i;++o){if(s=r[o])yield s}}}var et=[null];function tt(e,t){this._groups=e;this._parents=t}function nt(){return new tt([[document.documentElement]],et)}function rt(){return this}tt.prototype=nt.prototype={constructor:tt,select:p,selectAll:y,selectChild:j,selectChildren:S,filter:M,data:U,enter:I,exit:F,join:P,merge:q,selection:rt,order:D,sort:G,call:V,nodes:H,node:J,size:Y,empty:X,each:W,attr:re,style:le,property:pe,classed:xe,text:Ce,html:Oe,raise:Ee,lower:Le,append:ze,insert:Ue,remove:Fe,clone:De,datum:Ge,on:Ye,dispatch:Ke,[Symbol.iterator]:Qe};function ot(e){return typeof e==="string"?new tt([[document.querySelector(e)]],[document.documentElement]):new tt([[e]],et)}function it(e){return typeof e==="string"?new tt([document.querySelectorAll(e)],[document.documentElement]):new tt([h(e)],et)}function st(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function at(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function lt(e){let t,n,r;if(e.length!==2){t=st;n=(t,n)=>st(e(t),n);r=(t,n)=>e(t)-n}else{t=e===st||e===at?e:ct;n=e;r=e}function o(e,r,o=0,i=e.length){if(o<i){if(t(r,r)!==0)return i;do{const t=o+i>>>1;if(n(e[t],r)<0)o=t+1;else i=t}while(o<i)}return o}function i(e,r,o=0,i=e.length){if(o<i){if(t(r,r)!==0)return i;do{const t=o+i>>>1;if(n(e[t],r)<=0)o=t+1;else i=t}while(o<i)}return o}function s(e,t,n=0,i=e.length){const s=o(e,t,n,i-1);return s>n&&r(e[s-1],t)>-r(e[s],t)?s-1:s}return{left:o,center:s,right:i}}function ct(){return 0}function ft(e){return e===null?NaN:+e}const dt=lt(st);const ut=dt.right;lt(ft).center;var pt=ut;class ht extends Map{constructor(e,t=yt){super();Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}});if(e!=null)for(const[t,n]of e)this.set(t,n)}get(e){return super.get(mt(this,e))}has(e){return super.has(mt(this,e))}set(e,t){return super.set(gt(this,e),t)}delete(e){return super.delete(bt(this,e))}}function mt({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function gt({_intern:e,_key:t},n){const r=t(n);if(e.has(r))return e.get(r);e.set(r,n);return n}function bt({_intern:e,_key:t},n){const r=t(n);if(e.has(r)){n=e.get(r);e.delete(r)}return n}function yt(e){return e!==null&&typeof e==="object"?e.valueOf():e}var vt=Math.sqrt(50),wt=Math.sqrt(10),_t=Math.sqrt(2);function xt(e,t,n){var r,o=-1,i,s,a;t=+t,e=+e,n=+n;if(e===t&&n>0)return[e];if(r=t<e)i=e,e=t,t=i;if((a=kt(e,t,n))===0||!isFinite(a))return[];if(a>0){let n=Math.round(e/a),r=Math.round(t/a);if(n*a<e)++n;if(r*a>t)--r;s=new Array(i=r-n+1);while(++o<i)s[o]=(n+o)*a}else{a=-a;let n=Math.round(e*a),r=Math.round(t*a);if(n/a<e)++n;if(r/a>t)--r;s=new Array(i=r-n+1);while(++o<i)s[o]=(n+o)/a}if(r)s.reverse();return s}function kt(e,t,n){var r=(t-e)/Math.max(0,n),o=Math.floor(Math.log(r)/Math.LN10),i=r/Math.pow(10,o);return o>=0?(i>=vt?10:i>=wt?5:i>=_t?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=vt?10:i>=wt?5:i>=_t?2:1)}function jt(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;if(i>=vt)o*=10;else if(i>=wt)o*=5;else if(i>=_t)o*=2;return t<e?-o:o}function Nt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Ct(e,t){switch(arguments.length){case 0:break;case 1:{if(typeof e==="function")this.interpolator(e);else this.range(e);break}default:{this.domain(e);if(typeof t==="function")this.interpolator(t);else this.range(t);break}}return this}const At=Symbol("implicit");function St(){var e=new ht,t=[],n=[],r=At;function o(o){let i=e.get(o);if(i===undefined){if(r!==At)return r;e.set(o,i=t.push(o)-1)}return n[i%n.length]}o.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new ht;for(const r of n){if(e.has(r))continue;e.set(r,t.push(r)-1)}return o};o.range=function(e){return arguments.length?(n=Array.from(e),o):n.slice()};o.unknown=function(e){return arguments.length?(r=e,o):r};o.copy=function(){return St(t,n).unknown(r)};Nt.apply(o,arguments);return o}function Mt(e,t,n){e.prototype=t.prototype=n;n.constructor=e}function Ot(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function It(){}var Et=.7;var Tt=1/Et;var Lt="\\s*([+-]?\\d+)\\s*",zt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Rt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ut=/^#([0-9a-f]{3,8})$/,$t=new RegExp(`^rgb\\(${Lt},${Lt},${Lt}\\)$`),Ft=new RegExp(`^rgb\\(${Rt},${Rt},${Rt}\\)$`),Pt=new RegExp(`^rgba\\(${Lt},${Lt},${Lt},${zt}\\)$`),qt=new RegExp(`^rgba\\(${Rt},${Rt},${Rt},${zt}\\)$`),Dt=new RegExp(`^hsl\\(${zt},${Rt},${Rt}\\)$`),Gt=new RegExp(`^hsla\\(${zt},${Rt},${Rt},${zt}\\)$`);var Bt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Mt(It,Xt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Vt,formatHex:Vt,formatHex8:Ht,formatHsl:Jt,formatRgb:Yt,toString:Yt});function Vt(){return this.rgb().formatHex()}function Ht(){return this.rgb().formatHex8()}function Jt(){return cn(this).formatHsl()}function Yt(){return this.rgb().formatRgb()}function Xt(e){var t,n;e=(e+"").trim().toLowerCase();return(t=Ut.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Wt(t):n===3?new en(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Zt(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Zt(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=$t.exec(e))?new en(t[1],t[2],t[3],1):(t=Ft.exec(e))?new en(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Pt.exec(e))?Zt(t[1],t[2],t[3],t[4]):(t=qt.exec(e))?Zt(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Dt.exec(e))?ln(t[1],t[2]/100,t[3]/100,1):(t=Gt.exec(e))?ln(t[1],t[2]/100,t[3]/100,t[4]):Bt.hasOwnProperty(e)?Wt(Bt[e]):e==="transparent"?new en(NaN,NaN,NaN,0):null}function Wt(e){return new en(e>>16&255,e>>8&255,e&255,1)}function Zt(e,t,n,r){if(r<=0)e=t=n=NaN;return new en(e,t,n,r)}function Kt(e){if(!(e instanceof It))e=Xt(e);if(!e)return new en;e=e.rgb();return new en(e.r,e.g,e.b,e.opacity)}function Qt(e,t,n,r){return arguments.length===1?Kt(e):new en(e,t,n,r==null?1:r)}function en(e,t,n,r){this.r=+e;this.g=+t;this.b=+n;this.opacity=+r}Mt(en,Qt,Ot(It,{brighter(e){e=e==null?Tt:Math.pow(Tt,e);return new en(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){e=e==null?Et:Math.pow(Et,e);return new en(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new en(sn(this.r),sn(this.g),sn(this.b),on(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&(-.5<=this.g&&this.g<255.5)&&(-.5<=this.b&&this.b<255.5)&&(0<=this.opacity&&this.opacity<=1)},hex:tn,formatHex:tn,formatHex8:nn,formatRgb:rn,toString:rn}));function tn(){return`#${an(this.r)}${an(this.g)}${an(this.b)}`}function nn(){return`#${an(this.r)}${an(this.g)}${an(this.b)}${an((isNaN(this.opacity)?1:this.opacity)*255)}`}function rn(){const e=on(this.opacity);return`${e===1?"rgb(":"rgba("}${sn(this.r)}, ${sn(this.g)}, ${sn(this.b)}${e===1?")":`, ${e})`}`}function on(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function sn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function an(e){e=sn(e);return(e<16?"0":"")+e.toString(16)}function ln(e,t,n,r){if(r<=0)e=t=n=NaN;else if(n<=0||n>=1)e=t=NaN;else if(t<=0)e=NaN;return new dn(e,t,n,r)}function cn(e){if(e instanceof dn)return new dn(e.h,e.s,e.l,e.opacity);if(!(e instanceof It))e=Xt(e);if(!e)return new dn;if(e instanceof dn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),s=NaN,a=i-o,l=(i+o)/2;if(a){if(t===i)s=(n-r)/a+(n<r)*6;else if(n===i)s=(r-t)/a+2;else s=(t-n)/a+4;a/=l<.5?i+o:2-i-o;s*=60}else{a=l>0&&l<1?0:s}return new dn(s,a,l,e.opacity)}function fn(e,t,n,r){return arguments.length===1?cn(e):new dn(e,t,n,r==null?1:r)}function dn(e,t,n,r){this.h=+e;this.s=+t;this.l=+n;this.opacity=+r}Mt(dn,fn,Ot(It,{brighter(e){e=e==null?Tt:Math.pow(Tt,e);return new dn(this.h,this.s,this.l*e,this.opacity)},darker(e){e=e==null?Et:Math.pow(Et,e);return new dn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new en(hn(e>=240?e-240:e+120,o,r),hn(e,o,r),hn(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new dn(un(this.h),pn(this.s),pn(this.l),on(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&(0<=this.l&&this.l<=1)&&(0<=this.opacity&&this.opacity<=1)},formatHsl(){const e=on(this.opacity);return`${e===1?"hsl(":"hsla("}${un(this.h)}, ${pn(this.s)*100}%, ${pn(this.l)*100}%${e===1?")":`, ${e})`}`}}));function un(e){e=(e||0)%360;return e<0?e+360:e}function pn(e){return Math.max(0,Math.min(1,e||0))}function hn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const mn=Math.PI/180;const gn=180/Math.PI;var bn=-.14861,yn=+1.78277,vn=-.29227,wn=-.90649,_n=+1.97294,xn=_n*wn,kn=_n*yn,jn=yn*vn-wn*bn;function Nn(e){if(e instanceof An)return new An(e.h,e.s,e.l,e.opacity);if(!(e instanceof en))e=Kt(e);var t=e.r/255,n=e.g/255,r=e.b/255,o=(jn*r+xn*t-kn*n)/(jn+xn-kn),i=r-o,s=(_n*(n-o)-vn*i)/wn,a=Math.sqrt(s*s+i*i)/(_n*o*(1-o)),l=a?Math.atan2(s,i)*gn-120:NaN;return new An(l<0?l+360:l,a,o,e.opacity)}function Cn(e,t,n,r){return arguments.length===1?Nn(e):new An(e,t,n,r==null?1:r)}function An(e,t,n,r){this.h=+e;this.s=+t;this.l=+n;this.opacity=+r}Mt(An,Cn,Ot(It,{brighter(e){e=e==null?Tt:Math.pow(Tt,e);return new An(this.h,this.s,this.l*e,this.opacity)},darker(e){e=e==null?Et:Math.pow(Et,e);return new An(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*mn,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),o=Math.sin(e);return new en(255*(t+n*(bn*r+yn*o)),255*(t+n*(vn*r+wn*o)),255*(t+n*(_n*r)),this.opacity)}}));function Sn(e,t,n,r,o){var i=e*e,s=i*e;return((1-3*e+3*i-s)*t+(4-6*i+3*s)*n+(1+3*e+3*i-3*s)*r+s*o)/6}function Mn(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),o=e[r],i=e[r+1],s=r>0?e[r-1]:2*o-i,a=r<t-1?e[r+2]:2*i-o;return Sn((n-r/t)*t,s,o,i,a)}}var On=e=>()=>e;function In(e,t){return function(n){return e+n*t}}function En(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function Tn(e,t){var n=t-e;return n?In(e,n>180||n<-180?n-360*Math.round(n/360):n):On(isNaN(e)?t:e)}function Ln(e){return(e=+e)===1?zn:function(t,n){return n-t?En(t,n,e):On(isNaN(t)?n:t)}}function zn(e,t){var n=t-e;return n?In(e,n):On(isNaN(e)?t:e)}var Rn=function e(t){var n=Ln(t);function r(e,t){var r=n((e=Qt(e)).r,(t=Qt(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),s=zn(e.opacity,t.opacity);return function(t){e.r=r(t);e.g=o(t);e.b=i(t);e.opacity=s(t);return e+""}}r.gamma=e;return r}(1);function Un(e){return function(t){var n=t.length,r=new Array(n),o=new Array(n),i=new Array(n),s,a;for(s=0;s<n;++s){a=Qt(t[s]);r[s]=a.r||0;o[s]=a.g||0;i[s]=a.b||0}r=e(r);o=e(o);i=e(i);a.opacity=1;return function(e){a.r=r(e);a.g=o(e);a.b=i(e);return a+""}}}var $n=Un(Mn);function Fn(e,t){if(!t)t=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(i){for(o=0;o<n;++o)r[o]=e[o]*(1-i)+t[o]*i;return r}}function Pn(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function qn(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,o=new Array(r),i=new Array(n),s;for(s=0;s<r;++s)o[s]=Wn(e[s],t[s]);for(;s<n;++s)i[s]=t[s];return function(e){for(s=0;s<r;++s)i[s]=o[s](e);return i}}function Dn(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Gn(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Bn(e,t){var n={},r={},o;if(e===null||typeof e!=="object")e={};if(t===null||typeof t!=="object")t={};for(o in t){if(o in e){n[o]=Wn(e[o],t[o])}else{r[o]=t[o]}}return function(e){for(o in n)r[o]=n[o](e);return r}}var Vn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hn=new RegExp(Vn.source,"g");function Jn(e){return function(){return e}}function Yn(e){return function(t){return e(t)+""}}function Xn(e,t){var n=Vn.lastIndex=Hn.lastIndex=0,r,o,i,s=-1,a=[],l=[];e=e+"",t=t+"";while((r=Vn.exec(e))&&(o=Hn.exec(t))){if((i=o.index)>n){i=t.slice(n,i);if(a[s])a[s]+=i;else a[++s]=i}if((r=r[0])===(o=o[0])){if(a[s])a[s]+=o;else a[++s]=o}else{a[++s]=null;l.push({i:s,x:Gn(r,o)})}n=Hn.lastIndex}if(n<t.length){i=t.slice(n);if(a[s])a[s]+=i;else a[++s]=i}return a.length<2?l[0]?Yn(l[0].x):Jn(t):(t=l.length,function(e){for(var n=0,r;n<t;++n)a[(r=l[n]).i]=r.x(e);return a.join("")})}function Wn(e,t){var n=typeof t,r;return t==null||n==="boolean"?On(t):(n==="number"?Gn:n==="string"?(r=Xt(t))?(t=r,Rn):Xn:t instanceof Xt?Rn:t instanceof Date?Dn:Pn(t)?Fn:Array.isArray(t)?qn:typeof t.valueOf!=="function"&&typeof t.toString!=="function"||isNaN(t)?Bn:Gn)(e,t)}function Zn(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Kn=180/Math.PI;var Qn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function er(e,t,n,r,o,i){var s,a,l;if(s=Math.sqrt(e*e+t*t))e/=s,t/=s;if(l=e*n+t*r)n-=e*l,r-=t*l;if(a=Math.sqrt(n*n+r*r))n/=a,r/=a,l/=a;if(e*r<t*n)e=-e,t=-t,l=-l,s=-s;return{translateX:o,translateY:i,rotate:Math.atan2(t,e)*Kn,skewX:Math.atan(l)*Kn,scaleX:s,scaleY:a}}var tr;function nr(e){const t=new(typeof DOMMatrix==="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Qn:er(t.a,t.b,t.c,t.d,t.e,t.f)}function rr(e){if(e==null)return Qn;if(!tr)tr=document.createElementNS("http://www.w3.org/2000/svg","g");tr.setAttribute("transform",e);if(!(e=tr.transform.baseVal.consolidate()))return Qn;e=e.matrix;return er(e.a,e.b,e.c,e.d,e.e,e.f)}function or(e,t,n,r){function o(e){return e.length?e.pop()+" ":""}function i(e,r,o,i,s,a){if(e!==o||r!==i){var l=s.push("translate(",null,t,null,n);a.push({i:l-4,x:Gn(e,o)},{i:l-2,x:Gn(r,i)})}else if(o||i){s.push("translate("+o+t+i+n)}}function s(e,t,n,i){if(e!==t){if(e-t>180)t+=360;else if(t-e>180)e+=360;i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:Gn(e,t)})}else if(t){n.push(o(n)+"rotate("+t+r)}}function a(e,t,n,i){if(e!==t){i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:Gn(e,t)})}else if(t){n.push(o(n)+"skewX("+t+r)}}function l(e,t,n,r,i,s){if(e!==n||t!==r){var a=i.push(o(i)+"scale(",null,",",null,")");s.push({i:a-4,x:Gn(e,n)},{i:a-2,x:Gn(t,r)})}else if(n!==1||r!==1){i.push(o(i)+"scale("+n+","+r+")")}}return function(t,n){var r=[],o=[];t=e(t),n=e(n);i(t.translateX,t.translateY,n.translateX,n.translateY,r,o);s(t.rotate,n.rotate,r,o);a(t.skewX,n.skewX,r,o);l(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,o);t=n=null;return function(e){var t=-1,n=o.length,i;while(++t<n)r[(i=o[t]).i]=i.x(e);return r.join("")}}}var ir=or(nr,"px, ","px)","deg)");var sr=or(rr,", ",")",")");function ar(e){return function t(n){n=+n;function r(t,r){var o=e((t=Cn(t)).h,(r=Cn(r)).h),i=zn(t.s,r.s),s=zn(t.l,r.l),a=zn(t.opacity,r.opacity);return function(e){t.h=o(e);t.s=i(e);t.l=s(Math.pow(e,n));t.opacity=a(e);return t+""}}r.gamma=t;return r}(1)}ar(Tn);var lr=ar(zn);function cr(e){return function(){return e}}function fr(e){return+e}var dr=[0,1];function ur(e){return e}function pr(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:cr(isNaN(t)?NaN:.5)}function hr(e,t){var n;if(e>t)n=e,e=t,t=n;return function(n){return Math.max(e,Math.min(t,n))}}function mr(e,t,n){var r=e[0],o=e[1],i=t[0],s=t[1];if(o<r)r=pr(o,r),i=n(s,i);else r=pr(r,o),i=n(i,s);return function(e){return i(r(e))}}function gr(e,t,n){var r=Math.min(e.length,t.length)-1,o=new Array(r),i=new Array(r),s=-1;if(e[r]<e[0]){e=e.slice().reverse();t=t.slice().reverse()}while(++s<r){o[s]=pr(e[s],e[s+1]);i[s]=n(t[s],t[s+1])}return function(t){var n=pt(e,t,1,r)-1;return i[n](o[n](t))}}function br(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function yr(){var e=dr,t=dr,n=Wn,r,o,i,s=ur,a,l,c;function f(){var n=Math.min(e.length,t.length);if(s!==ur)s=hr(e[0],e[n-1]);a=n>2?gr:mr;l=c=null;return d}function d(o){return o==null||isNaN(o=+o)?i:(l||(l=a(e.map(r),t,n)))(r(s(o)))}d.invert=function(n){return s(o((c||(c=a(t,e.map(r),Gn)))(n)))};d.domain=function(t){return arguments.length?(e=Array.from(t,fr),f()):e.slice()};d.range=function(e){return arguments.length?(t=Array.from(e),f()):t.slice()};d.rangeRound=function(e){return t=Array.from(e),n=Zn,f()};d.clamp=function(e){return arguments.length?(s=e?true:ur,f()):s!==ur};d.interpolate=function(e){return arguments.length?(n=e,f()):n};d.unknown=function(e){return arguments.length?(i=e,d):i};return function(e,t){r=e,o=t;return f()}}function vr(){return yr()(ur,ur)}function wr(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function _r(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function xr(e){return e=_r(Math.abs(e)),e?e[1]:NaN}function kr(e,t){return function(n,r){var o=n.length,i=[],s=0,a=e[0],l=0;while(o>0&&a>0){if(l+a+1>r)a=Math.max(1,r-l);i.push(n.substring(o-=a,o+a));if((l+=a+1)>r)break;a=e[s=(s+1)%e.length]}return i.reverse().join(t)}}function jr(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}var Nr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Cr(e){if(!(t=Nr.exec(e)))throw new Error("invalid format: "+e);var t;return new Ar({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Cr.prototype=Ar.prototype;function Ar(e){this.fill=e.fill===undefined?" ":e.fill+"";this.align=e.align===undefined?">":e.align+"";this.sign=e.sign===undefined?"-":e.sign+"";this.symbol=e.symbol===undefined?"":e.symbol+"";this.zero=!!e.zero;this.width=e.width===undefined?undefined:+e.width;this.comma=!!e.comma;this.precision=e.precision===undefined?undefined:+e.precision;this.trim=!!e.trim;this.type=e.type===undefined?"":e.type+""}Ar.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Sr(e){e:for(var t=e.length,n=1,r=-1,o;n<t;++n){switch(e[n]){case".":r=o=n;break;case"0":if(r===0)r=n;o=n;break;default:if(!+e[n])break e;if(r>0)r=0;break}}return r>0?e.slice(0,r)+e.slice(o+1):e}var Mr;function Or(e,t){var n=_r(e,t);if(!n)return e+"";var r=n[0],o=n[1],i=o-(Mr=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=r.length;return i===s?r:i>s?r+new Array(i-s+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+_r(e,Math.max(0,t+i-1))[0]}function Ir(e,t){var n=_r(e,t);if(!n)return e+"";var r=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")}var Er={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:wr,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Ir(e*100,t),r:Ir,s:Or,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Tr(e){return e}var Lr=Array.prototype.map,zr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Rr(e){var t=e.grouping===undefined||e.thousands===undefined?Tr:kr(Lr.call(e.grouping,Number),e.thousands+""),n=e.currency===undefined?"":e.currency[0]+"",r=e.currency===undefined?"":e.currency[1]+"",o=e.decimal===undefined?".":e.decimal+"",i=e.numerals===undefined?Tr:jr(Lr.call(e.numerals,String)),s=e.percent===undefined?"%":e.percent+"",a=e.minus===undefined?"−":e.minus+"",l=e.nan===undefined?"NaN":e.nan+"";function c(e){e=Cr(e);var c=e.fill,f=e.align,d=e.sign,u=e.symbol,p=e.zero,h=e.width,m=e.comma,g=e.precision,b=e.trim,y=e.type;if(y==="n")m=true,y="g";else if(!Er[y])g===undefined&&(g=12),b=true,y="g";if(p||c==="0"&&f==="=")p=true,c="0",f="=";var v=u==="$"?n:u==="#"&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",w=u==="$"?r:/[%p]/.test(y)?s:"";var _=Er[y],x=/[defgprs%]/.test(y);g=g===undefined?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g));function k(e){var n=v,r=w,s,u,k;if(y==="c"){r=_(e)+r;e=""}else{e=+e;var j=e<0||1/e<0;e=isNaN(e)?l:_(Math.abs(e),g);if(b)e=Sr(e);if(j&&+e===0&&d!=="+")j=false;n=(j?d==="("?d:a:d==="-"||d==="("?"":d)+n;r=(y==="s"?zr[8+Mr/3]:"")+r+(j&&d==="("?")":"");if(x){s=-1,u=e.length;while(++s<u){if(k=e.charCodeAt(s),48>k||k>57){r=(k===46?o+e.slice(s+1):e.slice(s))+r;e=e.slice(0,s);break}}}}if(m&&!p)e=t(e,Infinity);var N=n.length+e.length+r.length,C=N<h?new Array(h-N+1).join(c):"";if(m&&p)e=t(C+e,C.length?h-r.length:Infinity),C="";switch(f){case"<":e=n+e+r+C;break;case"=":e=n+C+e+r;break;case"^":e=C.slice(0,N=C.length>>1)+n+e+r+C.slice(N);break;default:e=C+n+e+r;break}return i(e)}k.toString=function(){return e+""};return k}function f(e,t){var n=c((e=Cr(e),e.type="f",e)),r=Math.max(-8,Math.min(8,Math.floor(xr(t)/3)))*3,o=Math.pow(10,-r),i=zr[8+r/3];return function(e){return n(o*e)+i}}return{format:c,formatPrefix:f}}var Ur;var $r;var Fr;Pr({thousands:",",grouping:[3],currency:["$",""]});function Pr(e){Ur=Rr(e);$r=Ur.format;Fr=Ur.formatPrefix;return Ur}function qr(e){return Math.max(0,-xr(Math.abs(e)))}function Dr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xr(t)/3)))*3-xr(Math.abs(e)))}function Gr(e,t){e=Math.abs(e),t=Math.abs(t)-e;return Math.max(0,xr(t)-xr(e))+1}function Br(e,t,n,r){var o=jt(e,t,n),i;r=Cr(r==null?",f":r);switch(r.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));if(r.precision==null&&!isNaN(i=Dr(o,s)))r.precision=i;return Fr(r,s)}case"":case"e":case"g":case"p":case"r":{if(r.precision==null&&!isNaN(i=Gr(o,Math.max(Math.abs(e),Math.abs(t)))))r.precision=i-(r.type==="e");break}case"f":case"%":{if(r.precision==null&&!isNaN(i=qr(o)))r.precision=i-(r.type==="%")*2;break}}return $r(r)}function Vr(e){var t=e.domain;e.ticks=function(e){var n=t();return xt(n[0],n[n.length-1],e==null?10:e)};e.tickFormat=function(e,n){var r=t();return Br(r[0],r[r.length-1],e==null?10:e,n)};e.nice=function(n){if(n==null)n=10;var r=t();var o=0;var i=r.length-1;var s=r[o];var a=r[i];var l;var c;var f=10;if(a<s){c=s,s=a,a=c;c=o,o=i,i=c}while(f-- >0){c=kt(s,a,n);if(c===l){r[o]=s;r[i]=a;return t(r)}else if(c>0){s=Math.floor(s/c)*c;a=Math.ceil(a/c)*c}else if(c<0){s=Math.ceil(s*c)/c;a=Math.floor(a*c)/c}else{break}l=c}return e};return e}function Hr(){var e=vr();e.copy=function(){return br(e,Hr())};Nt.apply(e,arguments);return Vr(e)}var Jr={value:()=>{}};function Yr(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new Xr(n)}function Xr(e){this._=e}function Wr(e,t){return e.trim().split(/^|\s+/).map((function(e){var n="",r=e.indexOf(".");if(r>=0)n=e.slice(r+1),e=e.slice(0,r);if(e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:n}}))}Xr.prototype=Yr.prototype={constructor:Xr,on:function(e,t){var n=this._,r=Wr(e+"",n),o,i=-1,s=r.length;if(arguments.length<2){while(++i<s)if((o=(e=r[i]).type)&&(o=Zr(n[o],e.name)))return o;return}if(t!=null&&typeof t!=="function")throw new Error("invalid callback: "+t);while(++i<s){if(o=(e=r[i]).type)n[o]=Kr(n[o],e.name,t);else if(t==null)for(o in n)n[o]=Kr(n[o],e.name,null)}return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Xr(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var n=new Array(o),r=0,o,i;r<o;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],r=0,o=i.length;r<o;++r)i[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var r=this._[e],o=0,i=r.length;o<i;++o)r[o].value.apply(t,n)}};function Zr(e,t){for(var n=0,r=e.length,o;n<r;++n){if((o=e[n]).name===t){return o.value}}}function Kr(e,t,n){for(var r=0,o=e.length;r<o;++r){if(e[r].name===t){e[r]=Jr,e=e.slice(0,r).concat(e.slice(r+1));break}}if(n!=null)e.push({name:t,value:n});return e}var Qr=0,eo=0,to=0,no=1e3,ro,oo,io=0,so=0,ao=0,lo=typeof performance==="object"&&performance.now?performance:Date,co=typeof window==="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function fo(){return so||(co(uo),so=lo.now()+ao)}function uo(){so=0}function po(){this._call=this._time=this._next=null}po.prototype=ho.prototype={constructor:po,restart:function(e,t,n){if(typeof e!=="function")throw new TypeError("callback is not a function");n=(n==null?fo():+n)+(t==null?0:+t);if(!this._next&&oo!==this){if(oo)oo._next=this;else ro=this;oo=this}this._call=e;this._time=n;vo()},stop:function(){if(this._call){this._call=null;this._time=Infinity;vo()}}};function ho(e,t,n){var r=new po;r.restart(e,t,n);return r}function mo(){fo();++Qr;var e=ro,t;while(e){if((t=so-e._time)>=0)e._call.call(undefined,t);e=e._next}--Qr}function go(){so=(io=lo.now())+ao;Qr=eo=0;try{mo()}finally{Qr=0;yo();so=0}}function bo(){var e=lo.now(),t=e-io;if(t>no)ao-=t,io=e}function yo(){var e,t=ro,n,r=Infinity;while(t){if(t._call){if(r>t._time)r=t._time;e=t,t=t._next}else{n=t._next,t._next=null;t=e?e._next=n:ro=n}}oo=e;vo(r)}function vo(e){if(Qr)return;if(eo)eo=clearTimeout(eo);var t=e-so;if(t>24){if(e<Infinity)eo=setTimeout(go,e-lo.now()-ao);if(to)to=clearInterval(to)}else{if(!to)io=lo.now(),to=setInterval(bo,no);Qr=1,co(go)}}function wo(e,t,n){var r=new po;t=t==null?0:+t;r.restart((n=>{r.stop();e(n+t)}),t,n);return r}var _o=Yr("start","end","cancel","interrupt");var xo=[];var ko=0;var jo=1;var No=2;var Co=3;var Ao=4;var So=5;var Mo=6;function Oo(e,t,n,r,o,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Lo(e,n,{name:t,index:r,group:o,on:_o,tween:xo,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:ko})}function Io(e,t){var n=To(e,t);if(n.state>ko)throw new Error("too late; already scheduled");return n}function Eo(e,t){var n=To(e,t);if(n.state>Co)throw new Error("too late; already running");return n}function To(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Lo(e,t,n){var r=e.__transition,o;r[t]=n;n.timer=ho(i,0,n.time);function i(e){n.state=jo;n.timer.restart(s,n.delay,n.time);if(n.delay<=e)s(e-n.delay)}function s(i){var c,f,d,u;if(n.state!==jo)return l();for(c in r){u=r[c];if(u.name!==n.name)continue;if(u.state===Co)return wo(s);if(u.state===Ao){u.state=Mo;u.timer.stop();u.on.call("interrupt",e,e.__data__,u.index,u.group);delete r[c]}else if(+c<t){u.state=Mo;u.timer.stop();u.on.call("cancel",e,e.__data__,u.index,u.group);delete r[c]}}wo((function(){if(n.state===Co){n.state=Ao;n.timer.restart(a,n.delay,n.time);a(i)}}));n.state=No;n.on.call("start",e,e.__data__,n.index,n.group);if(n.state!==No)return;n.state=Co;o=new Array(d=n.tween.length);for(c=0,f=-1;c<d;++c){if(u=n.tween[c].value.call(e,e.__data__,n.index,n.group)){o[++f]=u}}o.length=f+1}function a(t){var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(l),n.state=So,1),i=-1,s=o.length;while(++i<s){o[i].call(e,r)}if(n.state===So){n.on.call("end",e,e.__data__,n.index,n.group);l()}}function l(){n.state=Mo;n.timer.stop();delete r[t];for(var o in r)return;delete e.__transition}}function zo(e,t){var n=e.__transition,r,o,i=true,s;if(!n)return;t=t==null?null:t+"";for(s in n){if((r=n[s]).name!==t){i=false;continue}o=r.state>No&&r.state<So;r.state=Mo;r.timer.stop();r.on.call(o?"interrupt":"cancel",e,e.__data__,r.index,r.group);delete n[s]}if(i)delete e.__transition}function Ro(e){return this.each((function(){zo(this,e)}))}function Uo(e,t){var n,r;return function(){var o=Eo(this,e),i=o.tween;if(i!==n){r=n=i;for(var s=0,a=r.length;s<a;++s){if(r[s].name===t){r=r.slice();r.splice(s,1);break}}}o.tween=r}}function $o(e,t,n){var r,o;if(typeof n!=="function")throw new Error;return function(){var i=Eo(this,e),s=i.tween;if(s!==r){o=(r=s).slice();for(var a={name:t,value:n},l=0,c=o.length;l<c;++l){if(o[l].name===t){o[l]=a;break}}if(l===c)o.push(a)}i.tween=o}}function Fo(e,t){var n=this._id;e+="";if(arguments.length<2){var r=To(this.node(),n).tween;for(var o=0,i=r.length,s;o<i;++o){if((s=r[o]).name===e){return s.value}}return null}return this.each((t==null?Uo:$o)(n,e,t))}function Po(e,t,n){var r=e._id;e.each((function(){var e=Eo(this,r);(e.value||(e.value={}))[t]=n.apply(this,arguments)}));return function(e){return To(e,r).value[t]}}function qo(e,t){var n;return(typeof t==="number"?Gn:t instanceof Xt?Rn:(n=Xt(t))?(t=n,Rn):Xn)(e,t)}function Do(e){return function(){this.removeAttribute(e)}}function Go(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Bo(e,t,n){var r,o=n+"",i;return function(){var s=this.getAttribute(e);return s===o?null:s===r?i:i=t(r=s,n)}}function Vo(e,t,n){var r,o=n+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===o?null:s===r?i:i=t(r=s,n)}}function Ho(e,t,n){var r,o,i;return function(){var s,a=n(this),l;if(a==null)return void this.removeAttribute(e);s=this.getAttribute(e);l=a+"";return s===l?null:s===r&&l===o?i:(o=l,i=t(r=s,a))}}function Jo(e,t,n){var r,o,i;return function(){var s,a=n(this),l;if(a==null)return void this.removeAttributeNS(e.space,e.local);s=this.getAttributeNS(e.space,e.local);l=a+"";return s===l?null:s===r&&l===o?i:(o=l,i=t(r=s,a))}}function Yo(e,t){var n=a(e),r=n==="transform"?sr:qo;return this.attrTween(e,typeof t==="function"?(n.local?Jo:Ho)(n,r,Po(this,"attr."+e,t)):t==null?(n.local?Go:Do)(n):(n.local?Vo:Bo)(n,r,t))}function Xo(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Wo(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Zo(e,t){var n,r;function o(){var o=t.apply(this,arguments);if(o!==r)n=(r=o)&&Wo(e,o);return n}o._value=t;return o}function Ko(e,t){var n,r;function o(){var o=t.apply(this,arguments);if(o!==r)n=(r=o)&&Xo(e,o);return n}o._value=t;return o}function Qo(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=="function")throw new Error;var r=a(e);return this.tween(n,(r.local?Zo:Ko)(r,t))}function ei(e,t){return function(){Io(this,e).delay=+t.apply(this,arguments)}}function ti(e,t){return t=+t,function(){Io(this,e).delay=t}}function ni(e){var t=this._id;return arguments.length?this.each((typeof e==="function"?ei:ti)(t,e)):To(this.node(),t).delay}function ri(e,t){return function(){Eo(this,e).duration=+t.apply(this,arguments)}}function oi(e,t){return t=+t,function(){Eo(this,e).duration=t}}function ii(e){var t=this._id;return arguments.length?this.each((typeof e==="function"?ri:oi)(t,e)):To(this.node(),t).duration}function si(e,t){if(typeof t!=="function")throw new Error;return function(){Eo(this,e).ease=t}}function ai(e){var t=this._id;return arguments.length?this.each(si(t,e)):To(this.node(),t).ease}function li(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=="function")throw new Error;Eo(this,e).ease=n}}function ci(e){if(typeof e!=="function")throw new Error;return this.each(li(this._id,e))}function fi(e){if(typeof e!=="function")e=v(e);for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o){for(var i=t[o],s=i.length,a=r[o]=[],l,c=0;c<s;++c){if((l=i[c])&&e.call(l,l.__data__,c,i)){a.push(l)}}}return new Fi(r,this._parents,this._name,this._id)}function di(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,o=n.length,i=Math.min(r,o),s=new Array(r),a=0;a<i;++a){for(var l=t[a],c=n[a],f=l.length,d=s[a]=new Array(f),u,p=0;p<f;++p){if(u=l[p]||c[p]){d[p]=u}}}for(;a<r;++a){s[a]=t[a]}return new Fi(s,this._parents,this._name,this._id)}function ui(e){return(e+"").trim().split(/^|\s+/).every((function(e){var t=e.indexOf(".");if(t>=0)e=e.slice(0,t);return!e||e==="start"}))}function pi(e,t,n){var r,o,i=ui(t)?Io:Eo;return function(){var s=i(this,e),a=s.on;if(a!==r)(o=(r=a).copy()).on(t,n);s.on=o}}function hi(e,t){var n=this._id;return arguments.length<2?To(this.node(),n).on.on(e):this.each(pi(n,e,t))}function mi(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;if(t)t.removeChild(this)}}function gi(){return this.on("end.remove",mi(this._id))}function bi(e){var t=this._name,n=this._id;if(typeof e!=="function")e=u(e);for(var r=this._groups,o=r.length,i=new Array(o),s=0;s<o;++s){for(var a=r[s],l=a.length,c=i[s]=new Array(l),f,d,p=0;p<l;++p){if((f=a[p])&&(d=e.call(f,f.__data__,p,a))){if("__data__"in f)d.__data__=f.__data__;c[p]=d;Oo(c[p],t,n,p,c,To(f,n))}}}return new Fi(i,this._parents,t,n)}function yi(e){var t=this._name,n=this._id;if(typeof e!=="function")e=g(e);for(var r=this._groups,o=r.length,i=[],s=[],a=0;a<o;++a){for(var l=r[a],c=l.length,f,d=0;d<c;++d){if(f=l[d]){for(var u=e.call(f,f.__data__,d,l),p,h=To(f,n),m=0,b=u.length;m<b;++m){if(p=u[m]){Oo(p,t,n,m,u,h)}}i.push(u);s.push(f)}}}return new Fi(i,s,t,n)}var vi=nt.prototype.constructor;function wi(){return new vi(this._groups,this._parents)}function _i(e,t){var n,r,o;return function(){var i=ce(this,e),s=(this.style.removeProperty(e),ce(this,e));return i===s?null:i===n&&s===r?o:o=t(n=i,r=s)}}function xi(e){return function(){this.style.removeProperty(e)}}function ki(e,t,n){var r,o=n+"",i;return function(){var s=ce(this,e);return s===o?null:s===r?i:i=t(r=s,n)}}function ji(e,t,n){var r,o,i;return function(){var s=ce(this,e),a=n(this),l=a+"";if(a==null)l=a=(this.style.removeProperty(e),ce(this,e));return s===l?null:s===r&&l===o?i:(o=l,i=t(r=s,a))}}function Ni(e,t){var n,r,o,i="style."+t,s="end."+i,a;return function(){var l=Eo(this,e),c=l.on,f=l.value[i]==null?a||(a=xi(t)):undefined;if(c!==n||o!==f)(r=(n=c).copy()).on(s,o=f);l.on=r}}function Ci(e,t,n){var r=(e+="")==="transform"?ir:qo;return t==null?this.styleTween(e,_i(e,r)).on("end.style."+e,xi(e)):typeof t==="function"?this.styleTween(e,ji(e,r,Po(this,"style."+e,t))).each(Ni(this._id,e)):this.styleTween(e,ki(e,r,t),n).on("end.style."+e,null)}function Ai(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Si(e,t,n){var r,o;function i(){var i=t.apply(this,arguments);if(i!==o)r=(o=i)&&Ai(e,i,n);return r}i._value=t;return i}function Mi(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=="function")throw new Error;return this.tween(r,Si(e,t,n==null?"":n))}function Oi(e){return function(){this.textContent=e}}function Ii(e){return function(){var t=e(this);this.textContent=t==null?"":t}}function Ei(e){return this.tween("text",typeof e==="function"?Ii(Po(this,"text",e)):Oi(e==null?"":e+""))}function Ti(e){return function(t){this.textContent=e.call(this,t)}}function Li(e){var t,n;function r(){var r=e.apply(this,arguments);if(r!==n)t=(n=r)&&Ti(r);return t}r._value=e;return r}function zi(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=="function")throw new Error;return this.tween(t,Li(e))}function Ri(){var e=this._name,t=this._id,n=Pi();for(var r=this._groups,o=r.length,i=0;i<o;++i){for(var s=r[i],a=s.length,l,c=0;c<a;++c){if(l=s[c]){var f=To(l,t);Oo(l,e,n,c,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}}}return new Fi(r,this._parents,e,n)}function Ui(){var e,t,n=this,r=n._id,o=n.size();return new Promise((function(i,s){var a={value:s},l={value:function(){if(--o===0)i()}};n.each((function(){var n=Eo(this,r),o=n.on;if(o!==e){t=(e=o).copy();t._.cancel.push(a);t._.interrupt.push(a);t._.end.push(l)}n.on=t}));if(o===0)i()}))}var $i=0;function Fi(e,t,n,r){this._groups=e;this._parents=t;this._name=n;this._id=r}function Pi(){return++$i}var qi=nt.prototype;Fi.prototype={constructor:Fi,select:bi,selectAll:yi,selectChild:qi.selectChild,selectChildren:qi.selectChildren,filter:fi,merge:di,selection:wi,transition:Ri,call:qi.call,nodes:qi.nodes,node:qi.node,size:qi.size,empty:qi.empty,each:qi.each,on:hi,attr:Yo,attrTween:Qo,style:Ci,styleTween:Mi,text:Ei,textTween:zi,remove:gi,tween:Fo,delay:ni,duration:ii,ease:ai,easeVarying:ci,end:Ui,[Symbol.iterator]:qi[Symbol.iterator]};function Di(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Gi={time:null,delay:0,duration:250,ease:Di};function Bi(e,t){var n;while(!(n=e.__transition)||!(n=n[t])){if(!(e=e.parentNode)){throw new Error(`transition ${t} not found`)}}return n}function Vi(e){var t,n;if(e instanceof Fi){t=e._id,e=e._name}else{t=Pi(),(n=Gi).time=fo(),e=e==null?null:e+""}for(var r=this._groups,o=r.length,i=0;i<o;++i){for(var s=r[i],a=s.length,l,c=0;c<a;++c){if(l=s[c]){Oo(l,e,t,c,s,n||Bi(l,t))}}}return new Fi(r,this._parents,e,t)}nt.prototype.interrupt=Ro;nt.prototype.transition=Vi;function Hi(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else while(--r>=0)t+=n[r].value;e.value=t}function Ji(){return this.eachAfter(Hi)}function Yi(e,t){let n=-1;for(const r of this){e.call(t,r,++n,this)}return this}function Xi(e,t){var n=this,r=[n],o,i,s=-1;while(n=r.pop()){e.call(t,n,++s,this);if(o=n.children){for(i=o.length-1;i>=0;--i){r.push(o[i])}}}return this}function Wi(e,t){var n=this,r=[n],o=[],i,s,a,l=-1;while(n=r.pop()){o.push(n);if(i=n.children){for(s=0,a=i.length;s<a;++s){r.push(i[s])}}}while(n=o.pop()){e.call(t,n,++l,this)}return this}function Zi(e,t){let n=-1;for(const r of this){if(e.call(t,r,++n,this)){return r}}}function Ki(e){return this.eachAfter((function(t){var n=+e(t.data)||0,r=t.children,o=r&&r.length;while(--o>=0)n+=r[o].value;t.value=n}))}function Qi(e){return this.eachBefore((function(t){if(t.children){t.children.sort(e)}}))}function es(e){var t=this,n=ts(t,e),r=[t];while(t!==n){t=t.parent;r.push(t)}var o=r.length;while(e!==n){r.splice(o,0,e);e=e.parent}return r}function ts(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),o=null;e=n.pop();t=r.pop();while(e===t){o=e;e=n.pop();t=r.pop()}return o}function ns(){var e=this,t=[e];while(e=e.parent){t.push(e)}return t}function rs(){return Array.from(this)}function os(){var e=[];this.eachBefore((function(t){if(!t.children){e.push(t)}}));return e}function is(){var e=this,t=[];e.each((function(n){if(n!==e){t.push({source:n.parent,target:n})}}));return t}function*ss(){var e=this,t,n=[e],r,o,i;do{t=n.reverse(),n=[];while(e=t.pop()){yield e;if(r=e.children){for(o=0,i=r.length;o<i;++o){n.push(r[o])}}}}while(n.length)}function as(e,t){if(e instanceof Map){e=[undefined,e];if(t===undefined)t=fs}else if(t===undefined){t=cs}var n=new ps(e),r,o=[n],i,s,a,l;while(r=o.pop()){if((s=t(r.data))&&(l=(s=Array.from(s)).length)){r.children=s;for(a=l-1;a>=0;--a){o.push(i=s[a]=new ps(s[a]));i.parent=r;i.depth=r.depth+1}}}return n.eachBefore(us)}function ls(){return as(this).eachBefore(ds)}function cs(e){return e.children}function fs(e){return Array.isArray(e)?e[1]:null}function ds(e){if(e.data.value!==undefined)e.value=e.data.value;e.data=e.data.data}function us(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function ps(e){this.data=e;this.depth=this.height=0;this.parent=null}ps.prototype=as.prototype={constructor:ps,count:Ji,each:Yi,eachAfter:Wi,eachBefore:Xi,find:Zi,sum:Ki,sort:Qi,path:es,ancestors:ns,descendants:rs,leaves:os,links:is,copy:ls,[Symbol.iterator]:ss};function hs(e){return e==null?null:ms(e)}function ms(e){if(typeof e!=="function")throw new Error;return e}var gs={depth:-1},bs={},ys={};function vs(e){return e.id}function ws(e){return e.parentId}function _s(){var e=vs,t=ws,n;function r(r){var o=Array.from(r),i=e,s=t,a,l,c,f,d,u,p,h,m=new Map;if(n!=null){const e=o.map(((e,t)=>xs(n(e,t,r))));const t=e.map(ks);const a=new Set(e).add("");for(const n of t){if(!a.has(n)){a.add(n);e.push(n);t.push(ks(n));o.push(ys)}}i=(t,n)=>e[n];s=(e,n)=>t[n]}for(c=0,a=o.length;c<a;++c){l=o[c],u=o[c]=new ps(l);if((p=i(l,c,r))!=null&&(p+="")){h=u.id=p;m.set(h,m.has(h)?bs:u)}if((p=s(l,c,r))!=null&&(p+="")){u.parent=p}}for(c=0;c<a;++c){u=o[c];if(p=u.parent){d=m.get(p);if(!d)throw new Error("missing: "+p);if(d===bs)throw new Error("ambiguous: "+p);if(d.children)d.children.push(u);else d.children=[u];u.parent=d}else{if(f)throw new Error("multiple roots");f=u}}if(!f)throw new Error("no root");if(n!=null){while(f.data===ys&&f.children.length===1){f=f.children[0],--a}for(let e=o.length-1;e>=0;--e){u=o[e];if(u.data!==ys)break;u.data=null}}f.parent=gs;f.eachBefore((function(e){e.depth=e.parent.depth+1;--a})).eachBefore(us);f.parent=null;if(a>0)throw new Error("cycle");return f}r.id=function(t){return arguments.length?(e=hs(t),r):e};r.parentId=function(e){return arguments.length?(t=hs(e),r):t};r.path=function(e){return arguments.length?(n=hs(e),r):n};return r}function xs(e){e=`${e}`;let t=e.length;if(js(e,t-1)&&!js(e,t-2))e=e.slice(0,-1);return e[0]==="/"?e:`/${e}`}function ks(e){let t=e.length;if(t<2)return"";while(--t>1)if(js(e,t))break;return e.slice(0,t)}function js(e,t){if(e[t]==="/"){let n=0;while(t>0&&e[--t]==="\\")++n;if((n&1)===0)return true}return false}function Ns(e){var t=e.length/6|0,n=new Array(t),r=0;while(r<t)n[r]="#"+e.slice(r*6,++r*6);return n}var Cs=Ns("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf");var As=Ns("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666");var Ss=Ns("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928");lr(Cn(-100,.75,.35),Cn(80,1.5,.8));lr(Cn(260,.75,.35),Cn(80,1.5,.8));var Ms=Cn();function Os(e){if(e<0||e>1)e-=Math.floor(e);var t=Math.abs(e-.5);Ms.h=360*e-100;Ms.s=1.5-1.5*t;Ms.l=.8-.9*t;return Ms+""}function Is(e,t,n){this.k=e;this.x=t;this.y=n}Is.prototype={constructor:Is,scale:function(e){return e===1?this:new Is(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Is(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Es=new Is(1,0,0);Is.prototype;const Ts={DICTIONARY_VARIABLES:"Dictionary Variables",MUTATION_CNV_FUSION:"Mutation/CNV/Fusion",VARIANT_GENOTYPE:"Variant Genotype",DNA_METHYLATION:"DNA Methylation",GENE_DEPENDENCY:"Gene Dependency",GENE_EXPRESSION:"Gene Expression",PROTEIN_EXPRESSION:"Protein Expression",SPLICE_JUNCTION:"Splice Junction",METABOLITE_INTENSITY:"Metabolite Intensity",GSEA:"GSEA",MUTATION_SIGNATURE:"Mutation Signature",SNP:"SNP Genotype",SNP_LIST:"SNP List",SNP_LOCUS:"SNP Locus"};const Ls=Qt("#8AB1D4").darker();const zs=Qt("#aaa").darker().darker();const Rs="#4F8053";const Us="#ce768e";const $s=true;const Fs=false;const Ps=1;const qs=2;const Ds=3;const Gs=4;const Bs=5;const Vs=6;const Hs=7;const Js=8;const Ys=9;const Xs=10;const Ws=11;const Zs={[Ps]:"SNV/indel",[qs]:"Fusion RNA",[Gs]:"CNV",[Bs]:"SV",[Vs]:"ITD",[Hs]:"Deletion",[Js]:"N-loss",[Ys]:"C-loss",[Xs]:"LOH",[Ds]:"Gene Expression",[Ws]:"Metabolite Intensity"};const Ks={M:{label:"MISSENSE",color:"#3987CC",dt:Ps,desc:"A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved",key:"M"},E:{label:"EXON",color:"#bcbd22",dt:Ps,desc:"A variant in the exon of a non-coding RNA.",key:"E"},F:{label:"FRAMESHIFT",color:"rgb(200, 61, 61)",dt:Ps,desc:"A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three",key:"F"},N:{label:"NONSENSE",color:"#ff7f0e",dt:Ps,desc:"A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened transcript",key:"N"},S:{label:"SILENT",color:"#2ca02c",dt:Ps,desc:"A sequence variant where there is no resulting change to the encoded amino acid",key:"S"},D:{label:"PROTEINDEL",color:"rgb(100, 100, 100)",dt:Ps,desc:"An inframe non synonymous variant that deletes bases from the coding sequence",key:"D"},I:{label:"PROTEININS",color:"#8c564b",dt:Ps,desc:"An inframe non synonymous variant that inserts bases into in the coding sequence",key:"I"},ProteinAltering:{label:"PROTEINALTERING",color:"#5a0034",dt:Ps,desc:"An inframe complex change to the coding sequence",key:"ProteinAltering"},P:{label:"SPLICE_REGION",color:"#9467bd",dt:Ps,desc:"A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron",key:"P"},L:{label:"SPLICE",color:"#6633FF",dt:Ps,desc:"A variant near an exon edge that may affect splicing functionality",key:"L"},Intron:{label:"INTRON",color:"#656565",dt:Ps,desc:"An intronic variant.",key:"Intron"},Blank:{label:"Not tested",color:"#fff",dt:Ps,desc:"This gene is not tested.",key:"Blank"},WT:{label:"Wildtype",color:"#D3D3D3",dt:Ps,desc:"Wildtype",key:"WT"}};const Qs="ITD";Ks[Qs]={label:"ITD",color:"#ff70ff",dt:Vs,desc:"In-frame internal tandem duplication.",key:Qs};const ea="DEL";Ks[ea]={label:"DELETION, intragenic",color:"#858585",dt:Hs,desc:"Intragenic deletion.",key:ea};const ta="NLOSS";Ks[ta]={label:"N-terminus loss",color:"#545454",dt:Js,desc:"N-terminus loss due to translocation",key:ta};const na="CLOSS";Ks[na]={label:"C-terminus loss",color:"#545454",dt:Ys,desc:"C-terminus loss due to translocation",key:na};const ra="Utr3";Ks[ra]={label:"UTR_3",color:"#998199",dt:Ps,desc:"A variant in the 3' untranslated region.",key:ra};const oa="Utr5";Ks[oa]={label:"UTR_5",color:"#819981",dt:Ps,desc:"A variant in the 5' untranslated region.",key:oa};const ia="X";Ks[ia]={label:"NONSTANDARD",color:"black",dt:Ps,desc:"A mutation class that either does not match our notation, or is unspecified.",key:ia};const sa="noncoding";Ks[sa]={label:"NONCODING",color:"black",dt:Ps,desc:"Noncoding mutation.",key:sa};function aa(e){switch(e.toLowerCase()){case"missense_mutation":return"M";case"nonsense_mutation":return"N";case"splice_site":return"L";case"rna":return sa;case"frame_shift_del":return"F";case"frame_shift_ins":return"F";case"in_frame_del":return"D";case"in_frame_ins":return"I";case"protein_altering_variant":return"ProteinAltering";case"translation_start_site":return ia;case"nonstop_mutation":return"N";case"3'utr":return ra;case"3'flank":return sa;case"5'utr":return oa;case"5'flank":return sa;case"blank":return"Blank";default:return null}}const la="Fuserna";Ks[la]={label:"Fusion transcript",color:"#545454",dt:qs,desc:"Marks the break points leading to fusion transcripts.<br>"+"<span style=\"font-size:150%\">◐</span> - 3' end of the break point is fused to the 5' end of another break point in a different gene.<br>"+"<span style=\"font-size:150%\">◑</span> - 5' end of the break point is fused to the 3' end of another break point in a different gene.",key:la};const ca="SV";Ks[ca]={label:"Structural variation",color:"#858585",dt:Bs,desc:"Structural variation detected in genomic DNA.",key:ca};const fa="CNV_amp";Ks[fa]={label:"Copy number gain",color:"#e9a3c9",dt:Gs,desc:"Copy number gain",key:fa};const da="CNV_loss";Ks[da]={label:"Copy number loss",color:"#a1d76a",dt:Gs,desc:"Copy number loss",key:da};const ua="CNV_loh";Ks[ua]={label:"LOH",color:"#12EDFC",dt:Gs,desc:"Loss of heterozygosity",key:ua};const pa="snv";Ks[pa]={label:"SNV",color:"#92a2d4",dt:Ps,desc:"Single nucleotide variation",key:pa};const ha="mnv";Ks[ha]={label:"MNV",color:"#92a2d4",dt:Ps,desc:"Multiple nucleotide variation",key:ha};const ma="insertion";Ks[ma]={label:"Sequence insertion",color:"#bd8e91",dt:Ps,desc:"Sequence insertion",key:ma};const ga="deletion";Ks[ga]={label:"Sequence deletion",color:"#b5a174",dt:Ps,desc:"Sequence deletion",key:ga};const ba={[Ps]:Ks.M.color};function ya(e={}){if(e.mclass){for(const t in e.mclass){if(!Ks[t])Ks[t]={};for(const n in e.mclass[t]){Ks[t][n]=e.mclass[t][n]}}}}const va=function(e){const t=e.toLowerCase().split(",");let n=1;if(t.indexOf("transcript_ablation")!=-1){return[Hs,ea,n]}n++;if(t.indexOf("splice_acceptor_variant")!=-1)return[Ps,"L",n];n++;if(t.indexOf("splice_donor_variant")!=-1)return[Ps,"L",n];n++;if(t.indexOf("stop_gained")!=-1)return[Ps,"N",n];n++;if(t.indexOf("frameshift_variant")!=-1)return[Ps,"F",n];n++;if(t.indexOf("stop_lost")!=-1)return[Ps,"N",n];n++;if(t.indexOf("start_lost")!=-1)return[Ps,"N",n];n++;if(t.indexOf("transcript_amplification")!=-1){return[Ps,ia,n]}n++;if(t.indexOf("inframe_insertion")!=-1||t.indexOf("conservative_inframe_insertion")!=-1||t.indexOf("disruptive_inframe_insertion")!=-1)return[Ps,"I",n];n++;if(t.indexOf("inframe_deletion")!=-1||t.indexOf("conservative_inframe_deletion")!=-1||t.indexOf("disruptive_inframe_deletion")!=-1)return[Ps,"D",n];n++;if(t.indexOf("missense_variant")!=-1)return[Ps,"M",n];n++;if(t.indexOf("protein_altering_variant")!=-1)return[Ps,"ProteinAltering",n];n++;if(t.indexOf("splice_region_variant")!=-1)return[Ps,"P",n];n++;if(t.indexOf("incomplete_terminal_codon_variant")!=-1)return[Ps,"N",n];n++;if(t.indexOf("stop_retained_variant")!=-1)return[Ps,"S",n];n++;if(t.indexOf("synonymous_variant")!=-1)return[Ps,"S",n];n++;if(t.indexOf("coding_sequence_variant")!=-1)return[Ps,ia,n];n++;if(t.indexOf("mature_mirna_variant")!=-1)return[Ps,"E",n];n++;if(t.indexOf("5_prime_utr_variant")!=-1)return[Ps,oa,n];n++;if(t.indexOf("3_prime_utr_variant")!=-1)return[Ps,ra,n];n++;if(t.indexOf("non_coding_transcript_exon_variant")!=-1)return[Ps,"E",n];n++;if(t.indexOf("intron_variant")!=-1)return[Ps,"Intron",n];n++;if(t.indexOf("nmd_transcript_variant")!=-1)return[Ps,"S",n];n++;if(t.indexOf("non_coding_transcript_variant")!=-1)return[Ps,"E",n];n++;if(t.indexOf("upstream_gene_variant")!=-1)return[Ps,sa,n];n++;if(t.indexOf("downstream_gene_variant")!=-1)return[Ps,sa,n];n++;if(t.indexOf("tfbs_ablation")!=-1)return[Ps,sa,n];n++;if(t.indexOf("tfbs_amplification")!=-1)return[Ps,sa,n];n++;if(t.indexOf("tf_binding_site_variant")!=-1)return[Ps,sa,n];n++;if(t.indexOf("regulatory_region_ablation")!=-1)return[Ps,sa,n];n++;if(t.indexOf("regulatory_region_amplification")!=-1)return[Ps,sa,n];n++;if(t.indexOf("feature_elongation")!=-1)return[Ps,sa,n];n++;if(t.indexOf("regulatory_region_variant")!=-1)return[Ps,sa,n];n++;if(t.indexOf("feature_truncation")!=-1)return[Ps,sa,n];n++;if(t.indexOf("intergenic_variant")!=-1)return[Ps,sa,n];n++;return[Ps,ia,n]};const wa='<circle cx="7" cy="12" r="7" fill="#b1b1b1"></circle><path d="M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z" transform="translate(7,12)" fill="#858585" stroke="none"></path>';const _a={};const xa="S";_a[xa]={label:"Somatic",desc:"A variant found only in a tumor sample. The proportion is indicated by lack of any arc.",legend:'<circle cx="7" cy="12" r="7" fill="#b1b1b1"></circle>'};const ka="G";_a[ka]={label:"Germline",desc:"A constitutional variant found in a normal sample. The proportion is indicated by the span of the solid arc within the whole circle.",legend:wa};_a.germline=_a[ka];_a.somatic=_a[xa];const ja="R";_a[ja]={label:"Relapse",desc:"A somatic variant found only in a relapse sample. The proportion is indicated by the span of the hollow arc within the whole circle.",legend:'<circle cx="7" cy="12" r="7" fill="#b1b1b1"></circle><path d="M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z" transform="translate(7,12)" fill="none" stroke="#858585"></path>'};const Na="GP";_a[Na]={label:"Germline pathogenic",desc:"A constitutional variant with pathogenic allele.",legend:wa};const Ca="GNP";_a[Ca]={label:"Germline non-pathogenic",desc:"A constitutional variant with non-pathogenic allele.",legend:wa,hidden:true};const Aa={usegm:"usegm",ds:"dataset",bigwig:"bigwig",bigwigstranded:"bigwigstranded",junction:"junction",mdsjunction:"mdsjunction",mdscnv:"mdscnv",mdssvcnv:"mdssvcnv",mdsexpressionrank:"mdsexpressionrank",mdsvcf:"mdsvcf",bedj:"bedj",pgv:"profilegenevalue",bampile:"bampile",hicstraw:"hicstraw",expressionrank:"expressionrank",aicheck:"aicheck",ase:"ase",mds2:"mds2",mds3:"mds3",bedgraphdot:"bedgraphdot",bam:"bam",ld:"ld"};function Sa(e){for(const t in Aa){if(e==Aa[t]){return true}}return false}const Ma={vcf:"vcf"};const Oa={vcf:"vcf",svcnvitd:"svcnvitd",geneexpression:"geneexpression"};const Ia={GCT:"A",GCC:"A",GCA:"A",GCG:"A",CGT:"R",CGC:"R",CGA:"R",CGG:"R",AGA:"R",AGG:"R",AAT:"N",AAC:"N",GAT:"D",GAC:"D",TGT:"C",TGC:"C",CAA:"Q",CAG:"Q",GAA:"E",GAG:"E",GGT:"G",GGC:"G",GGA:"G",GGG:"G",CAT:"H",CAC:"H",ATT:"I",ATC:"I",ATA:"I",TTA:"L",TTG:"L",CTT:"L",CTC:"L",CTA:"L",CTG:"L",AAA:"K",AAG:"K",ATG:"M",TTT:"F",TTC:"F",CCT:"P",CCC:"P",CCA:"P",CCG:"P",TCT:"S",TCC:"S",TCA:"S",TCG:"S",AGT:"S",AGC:"S",ACT:"T",ACC:"T",ACA:"T",ACG:"T",TGG:"W",TAT:"Y",TAC:"Y",GTT:"V",GTC:"V",GTA:"V",GTG:"V"};const Ea="*";function Ta(e){if(!e.genomicseq)return undefined;const t=[];if(e.coding){for(const[n,r]of e.coding.entries()){const n=e.genomicseq.substr(r[0]-e.start,r[1]-r[0]);if(e.strand=="-"){t.push(Ua(n))}else{t.push(n)}}}const n=t.join("");const r=[];const o=e.startCodonFrame?3-e.startCodonFrame:0;for(let e=o;e<n.length;e+=3){const t=Ia[n.substr(e,3)];r.push(t||Ea)}e.cdseq=n;return r.join("")}function La(e,t){if(e>=1e9)return(e/1e9).toFixed(1)+" Gb";if(e>=1e7)return Math.ceil(e/1e6)+" Mb";if(e>=1e6)return(e/1e6).toFixed(1)+" Mb";if(e>=1e4)return Math.ceil(e/1e3)+" Kb";if(e>=1e3)return(e/1e3).toFixed(1)+" Kb";return e+(t?"bytes":" bp")}const za={A:"#ca0020",T:"#f4a582",C:"#92c5de",G:"#0571b0"};function Ra(e){switch(e){case"A":return"T";case"T":return"A";case"C":return"G";case"G":return"C";case"a":return"t";case"t":return"a";case"c":return"g";case"g":return"c";default:return e}}function Ua(e){const t=[];for(let n=e.length-1;n>=0;n--){t.push(Ra(e[n]))}return t.join("")}function $a(e,t){const n={chr:e.chr,start:e.start,stop:e.stop,strand:e.strand,coding:[]};if(t.isskipexon||t.isaltexon){for(let r=0;r<e.exon.length;r++){const o=Math.max(e.codingstart,e.exon[r][0]);const i=Math.min(e.codingstop,e.exon[r][1]);if(o>i){continue}if(t.skippedexon.indexOf(r)==-1){n.coding.push([o,i])}}}else if(t.a5ss||t.a3ss){const r=e.exon.map((e=>[e[0],e[1]]));const o=e.strand=="+";if(t.a5ss){if(o){r[t.exon5idx][1]=t.junctionB.start}else{r[t.exon5idx+1][0]=t.junctionB.stop}}else{if(o){r[t.exon5idx+1][0]=t.junctionB.stop}else{r[t.exon5idx][1]=t.junctionB.start}}for(const t of r){const r=Math.max(e.codingstart,t[0]);const o=Math.min(e.codingstop,t[1]);if(r>o){continue}n.coding.push([r,o])}}return n}function Fa(e,t){const n=t.split("\n");n.shift();e.genomicseq=n.join("").toUpperCase();const r=Ta(e);let o=Fs;const i=r.indexOf(Ea);if(i==r.length-1){o=$s}return o}function Pa(e){if(!e.lst)return".lst missing";if(!Array.isArray(e.lst))return"input is not an array";for(const t of e.lst){if(!t.name)return"name missing from a set of .vcfinfofilter.lst";if(t.autocategory||t.categories){if(!t.autocategory){for(const e in t.categories){const n=t.categories[e];if(!t.autocolor&&!n.color)return".color missing for class "+e+" from .categories of set "+t.name;if(!n.label){n.label=e}}}if(t.categoryhidden){for(const e in t.categoryhidden){if(!t.categories[e])return"unknown hidden-by-default category "+e+" from set "+t.name}}else{t.categoryhidden={}}}else if(t.numericfilter){const e=[];for(const n of t.numericfilter){if(typeof n=="number"){e.push({side:"<",value:n})}else{e.push({side:n.side||"<",value:n.value})}}t.numericfilter=e}if(t.altalleleinfo){if(!t.altalleleinfo.key){return".key missing from .altalleleinfo from set "+t.name}}else if(t.locusinfo){if(!t.locusinfo.key){return".key missing from .locusinfo from set "+t.name}}else{return"neither .altalleleinfo or .locusinfo is available from set "+t.name}}}function qa(e,t){for(const n in e.majorchr){if(t.indexOf(n.replace("chr",""))!=-1){return true}}if(e.minorchr){for(const n in e.minorchr){if(t.indexOf(n.replace("chr",""))!=-1){return true}}}return false}function Da(e,t){let n=0,r=0;for(const o in e.majorchr){if(t.includes(o)){r++}else if(t.includes(o.replace("chr",""))){n++}}if(e.minorchr){for(const o in e.minorchr){if(t.includes(o)){r++}else if(t.includes(o.replace("chr",""))){n++}}}return[n,r]}function Ga(e,t){if(e.length==0)return t;e.sort(((e,t)=>e-t));const n=e[e.length-1];if(e.length<=5)return n;const r=e[Math.floor(e.length/4)];const o=e[Math.floor(e.length*3/4)];return Math.min(o+(o-r)*1.5,n)}function Ba(e,t){if(!e)return false;if(e.indexOf("/")!=-1){return e.split("/").indexOf(t)!=-1}return e.split("|").indexOf(t)!=-1}const Va={genomic:"genomic",splicingrna:"splicing RNA",exononly:"exon only",protein:"protein",gmsum:"aggregated exons"};function Ha(e,t){if(e.csq){let n;if(t.usegm){n=e.csq.find((e=>e._isoform==t.usegm.isoform))}if(!n){n=e.csq.find((e=>e.CANONICAL));if(!n){n=e.csq[0];for(const t of e.csq){if(t._csqrank<n._csqrank){n=t}}}}if(n){e.gene=n._gene;e.isoform=n._isoform;e.class=n._class;e.dt=n._dt;e.mname=n._mname;if(e.class==sa){delete e.class}}}else if(e.ann){let n=null;if(t.usegm){for(const r of e.ann){if(r._isoform!=t.usegm.isoform)continue;if(n){if(r._csqrank<n._csqrank){n=r}}else{n=r}}if(!n&&t.gmmode==Va.genomic){n=e.ann[0]}}else{n=e.ann[0];for(const t of e.ann){if(t._csqrank<n._csqrank){n=t}}}if(n){e.gene=n._gene;e.isoform=n._isoform;e.class=n._class;e.dt=n._dt;e.mname=n._mname;if(e.class==sa){delete e.class}}}if(e.class==undefined){if(Ks[e.type]){e.class=e.type;e.dt=Ks[e.type].dt;e.mname=e.id&&e.id!="."?e.id:e.ref+">"+e.alt;if(e.mname.length>15){e.mname=e.type}}else{e.class=ia;e.dt=Ps;e.mname=e.type}}delete e.type}const Ja="Unannotated";function Ya(e,t){return function(n){return t.map((t=>[t,n.map((n=>e(t-n))).reduce(((e,t)=>e+t),0)/n.length]))}}function Xa(e){return function(t){return Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}}const Wa=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"];const Za=["#e75480","blue"];function Ka(e){if(e>20){const t=[];for(let n=0;n<e;n++)t.push(Os(n/e));return t}if(e>12)return Wa;else if(e>8)return Ss;else if(e>2)return As;else return Za}function Qa(e){const t=Ka(e);return St(t)}const el=["F","N","L","P"];const tl=["F","N","L","P","D","I","ProteinAltering","M"];const nl=["S","Intron","Utr3","Utr5","noncoding","E"];const rl=Object.values(Ks).filter((e=>e.dt==Ps)).map((e=>e.key));const ol=Object.values(Ks).filter((e=>e.dt==Gs)).map((e=>e.key));const il={disabled:false,type:"custom",lst:[{name:"Mutated vs. wildtype",groups:[{type:"values",name:"Mutated",values:rl.filter((e=>e!="WT"&&e!="Blank")).map((e=>({key:e,label:Ks[e].label})))},{type:"values",name:"Wildtype",values:[{key:"WT",label:"Wildtype"}]},{type:"values",name:"Not tested",values:[{key:"Blank",label:"Not tested"}],uncomputable:true}]},{name:"Protein-changing vs. rest",groups:[{type:"values",name:"Protein-changing",values:tl.map((e=>({key:e,label:Ks[e].label})))},{type:"values",name:"Rest",values:Object.keys(Ks).filter((e=>!tl.includes(e)&&e!="Blank")).map((e=>({key:e,label:Ks[e].label})))},{type:"values",name:"Not tested",values:[{key:"Blank",label:"Not tested"}],uncomputable:true}]},{name:"Truncating vs. rest",groups:[{type:"values",name:"Truncating",values:el.map((e=>({key:e,label:Ks[e].label})))},{type:"values",name:"Rest",values:Object.keys(Ks).filter((e=>!el.includes(e)&&e!="Blank")).map((e=>({key:e,label:Ks[e].label})))},{type:"values",name:"Not tested",values:[{key:"Blank",label:"Not tested"}],uncomputable:true}]},{name:"Gain vs. Loss vs. LOH vs. Wildtype",groups:[{type:"values",name:"Copy number gain",values:[{key:"CNV_amp",label:Ks["CNV_amp"].label}]},{type:"values",name:"Copy number loss",values:[{key:"CNV_loss",label:Ks["CNV_loss"].label}]},{type:"values",name:"LOH",values:[{key:"CNV_loh",label:Ks["CNV_loh"].label}]},{type:"values",name:"Wildtype",values:[{key:"WT",label:"Wildtype"}]},{type:"values",name:"Not tested",values:[{key:"Blank",label:"Not tested"}],uncomputable:true}]},{name:"Fusion vs. Wildtype",groups:[{type:"values",name:"Fusion transcript",values:[{key:"Fuserna",label:Ks["Fuserna"].label}]},{type:"values",name:"Wildtype",values:[{key:"WT",label:"Wildtype"}]},{type:"values",name:"Not tested",values:[{key:"Blank",label:"Not tested"}],uncomputable:true}]}]};const sl={blueWhiteRed:{domain:[0,.5,1],range:["blue","white","red"]},greenWhiteRed:{domain:[0,.5,1],range:["green","white","red"]},blueYellowRed:{domain:[0,.17,.33,.5,.67,.83,1],range:["#313695","#649AC7","#BCE1ED","#FFFFBF","#FDBE70","#EA5839","#A50026"]},greenBlackRed:{domain:[0,.17,.33,.5,.67,.83,1],range:["#00FF00","#14E10C","#1AAF10","#000000","#B01205","#E20E03","#FF0000"]},blueBlackYellow:{domain:[0,.17,.33,.5,.67,.83,1],range:["#0000FF","#0000CC","#000099","#202020","#999900","#CCCC00","#FFFF00"]}};var al=Object.freeze({__proto__:null,TermTypeGroups:Ts,defaultcolor:Ls,default_text_color:zs,exoncolor:Rs,plotColor:Us,IN_frame:$s,OUT_frame:Fs,dtsnvindel:Ps,dtfusionrna:qs,dtgeneexpression:Ds,dtcnv:Gs,dtsv:Bs,dtitd:Vs,dtdel:Hs,dtnloss:Js,dtcloss:Ys,dtloh:Xs,dtmetaboliteintensity:Ws,dt2label:Zs,mclass:Ks,mclassitd:Qs,mclassdel:ea,mclassnloss:ta,mclasscloss:na,mclassutr3:ra,mclassutr5:oa,mclassnonstandard:ia,mclassnoncoding:sa,mclasstester:aa,mclassfusionrna:la,mclasssv:ca,mclasscnvgain:fa,mclasscnvloss:da,mclasscnvloh:ua,mclasssnv:pa,mclassmnv:ha,mclassinsertion:ma,mclassdeletion:ga,dt2color:ba,applyOverrides:ya,vepinfo:va,germlinelegend:wa,morigin:_a,moriginsomatic:xa,morigingermline:ka,moriginrelapse:ja,morigingermlinepathogenic:Na,morigingermlinenonpathogenic:Ca,tkt:Aa,validtkt:Sa,mdsvcftype:Ma,custommdstktype:Oa,codon:Ia,codon_stop:Ea,nt2aa:Ta,bplen:La,basecolor:za,basecompliment:Ra,reversecompliment:Ua,spliceeventchangegmexon:$a,fasta2gmframecheck:Fa,validate_vcfinfofilter:Pa,contigNameNoChr:qa,contigNameNoChr2:Da,getMax_byiqr:Ga,alleleInGenotypeStr:Ba,gmmode:Va,vcfcopymclass:Ha,not_annotated:Ja,kernelDensityEstimator:Ya,kernelEpanechnikov:Xa,schemeCategory20:Wa,schemeCategory2:Za,getColorScheme:Ka,getColors:Qa,truncatingMutations:el,proteinChangingMutations:tl,synonymousMutations:nl,mutationClasses:rl,CNVClasses:ol,geneVariantTermGroupsetting:il,colorScaleMap:sl});let ll=100;function cl(){return ll}function fl(e){ll=e}function dl(e){return t=>{const n=new e(t);if(!n.api&&n.type){if(n.type=="app")_l(n,t);else if(n.type=="store")yl(n,t);else kl(n,t)}const r=n.api||n;if(n.debug||n.opts&&n.opts.debug)r.Inner=n;if(typeof n.preApiFreeze=="function")n.preApiFreeze(r);Object.freeze(r);if(n.init){return n.init().then((()=>{if(n.bus)n.bus.emit("postInit");return r})).catch((e=>{if(n.printError)n.printError(e);if(n.bus)n.bus.emit("postInit",null,0,e);else throw e}))}else{if(n.bus)n.bus.emit("postInit");return r}}}function ul(e){return ml(e,_l)}function pl(e){return ml(e,yl)}function hl(e){return ml(e,kl)}function ml(e,t){if(typeof t!="function")throw"prepFxn must be a function";return async n=>{let r;try{if(n.app?.opts&&"debug"in n.app.opts&&!("debug"in n)&&n!=n.app.opts){n.debug=n.app.opts.debug}r=new e(n);t(r,n);const o=r.api||r;if(r.debug||r.opts&&r.opts.debug)o.Inner=r;if(r.preApiFreeze)await r.preApiFreeze(o);Object.freeze(o);if(r.init){if(r.app&&r.app!=r)await r.init(r.app.getState());else await r.init();if(r.type!="app"&&r.type!="store"&&r.state&&!r.hasStatePreMain){delete r.state;console.warn(`${r.type}: rx deleted this.state after init()`+`to avoid confusing behavior, such as the component not rendering initially `+`because this.state would not have changed between init() and the first time `+`main() is called. To skip this warning and retain this.state after init(), `+`set this.hasStatePreMain = true in the ${r.type} constructor.`)}}if(r.bus)r.bus.emit("postInit");return o}catch(e){console.log("error:",e);if(r?.bus)r.bus.emit("postInit",null,0,e);if(!r?.printError)throw e}}}function gl(e,t){const n=Object.assign({},t.opts||{},e);if(!t.app)return n;if(t.type in t.app.opts){const e=t.app.opts[t.type];if(t.validateOpts)t.validateOpts(e);Sl(n,e)}if("debug"in t.app)n.debug=t.app.debug;else if(t.app.opts&&"debug"in t.app.opts)n.debug=t.app.opts.debug;return n}async function bl(e){const t={};try{await Promise.all(Object.values(e));for(const n in e){t[n]=await e[n]}return t}catch(e){throw e}}function yl(e,t){if(e.validateOpts)e.validateOpts(t);e.app=t.app;e.opts=gl(t,e);e.api=wl(e);e.copyMerge=Sl;e.deepFreeze=Il;if(!e.fromJson)e.fromJson=Ml;if(!e.toJson)e.toJson=Ol;e.state=Sl(e.toJson(e.defaultState),t.state);if(e.validateState)e.validateState()}let vl=0;function wl(e){e.history=[];e.currIndex=-1;let t=0;const n={async write(r){r.sequenceId=vl++;const o=e.constructor.prototype.actions;if(!o){throw`no store actions specified`}if(!o.hasOwnProperty(r.type)){throw`Action=${r.type} must be declared in an "actions" property of a class.`}if(typeof o[r.type]!=="function"){throw`invalid action type=${r.type}`}await o[r.type].call(e,r);e.state._scope_=r._scope_;if(!e.opts.debounceInterval)return n.copyState();t+=1;let i=-1;return new Promise(((r,o)=>{const s=setInterval((()=>{t+=i;i=0;if(t>0)return;clearInterval(s);r(n.copyState())}),e.opts.debounceInterval)}))},async copyState(){const t=e.fromJson(e.toJson(e.state));e.deepFreeze(t);return t}};return n}function _l(e,t){try{if(e.validateOpts)e.validateOpts(t);if("id"in t)e.id=t[e.type].id;e.opts=t;e.api=xl(e)}catch(t){console.error(t);if(e.printError)e.printError(t);else alert(t)}}function xl(e){const t={};const n=[];let r;const o={type:e.type,opts:e.opts,async dispatch(t){e.bus.emit("preDispatch");try{if(n.length){for(const e of n.slice()){const r=await e(t);if(r){if(r.cancel)return;if(r.error)throw r.error;if(r.deactivate){n.splice(n.indexOf(e),1)}}}}if(t)e.state=await e.store.write(t);r=t?.sequenceId;if(e.main)await e.main();const o={action:t,appState:e.state};await Cl(o.action?._notificationRoot_||e.components,o)}catch(n){if(e.bus&&r==t?.sequenceId)e.bus.emit("error");if(e.printError)e.printError(n);else console.log(n)}if(e.bus&&r==t?.sequenceId)e.bus.emit("postRender")},async save(n){e.state=await e.store.write(n);if(t.recover){for(const n in t.recover){const r=t.recover[n];r.replaceLastState(e.state)}}},getState(){return e.state},middle(e){if(typeof e!=="function")throw`a middleware must be a function`;if(n.includes(e))throw`the function is already in the middlewares array`;n.push(e);return o},on(t,n){if(!e.eventTypes)throw`no eventTypes[] for ${e.type} component`;e.bus.on(t,n);return o},getComponents(t=""){return Al(e.components,t)},register(e){if(!t[e.type])t[e.type]={};t[e.type][e.id]=e},deregister(e){if(t[e.type]?.[e.id])delete t[e.type][e.id]},destroy(){for(const t in e.components){const n=e.components[t];if(typeof n.destroy=="function"){n.destroy()}else if(n.holder){n.holder.selectAll("*").remove()}delete e.components[t]}if(typeof e.destroy=="function")e.destroy();if(e.dom){if(e.dom.holder)e.dom.holder.selectAll("*").remove();for(const t in e.dom){delete e.dom[t]}}if(e.bus)e.bus.destroy();delete e.store;if(e.api)delete e.api;e.wasDestroyed=true}};if(e.opts.debugName)window[e.opts.debugName]=o;if(!e.bus){if(!e.eventTypes)e.eventTypes=["preDispatch","postInit","postRender","firstRender","error"];if(e.customEvents)e.eventTypes.push(...e.customEvents);const t=e.opts.app&&e.opts.app.callbacks||e.opts.callbacks||{};e.bus=new Nl(o,e.eventTypes,t)}return o}function kl(e,t){if(!t.app)throw`missing self.opts.app in prepComponent(${e.type})`;e.app=t.app;e.opts=gl(t,e);if(e.validateOpts)e.validateOpts(t);if("id"in t)e.id=e.opts.id;e.api=jl(e)}function jl(e){if(!("type"in e)){throw`The component's type must be set before calling this.getComponentApi(this).`}let t;const n={type:e.type,id:e.id,async update(r){if(r.action&&e.reactsTo&&!e.reactsTo(r.action))return;const o=e.getState?e.getState(r.appState):r.appState;if(!o)return;if(!r.action||!El(o,e.state)){if(r.action)t=r.action.sequenceId;if(e.mainArg=="state"){await e.main(o)}else{e.state=o;if(e.main){try{await e.main()}catch(t){if(e.bus)e.bus.emit("error");throw t}}}}await Cl(e.components,r);if(e.bus&&(!r.action||r.action.sequenceId===t))e.bus.emit("postRender");return n},on(t,r){if(!e.eventTypes)throw`no eventTypes[] for ${e.type} component`;e.bus.on(t,r);return n},getComponents(t=""){return Al(e.components,t)},async detectStale(e,n={}){try{const r=t;const o=[];let i,s;if(n.abortCtrl){o.push(new Promise(((e,o)=>{s=e;i=setInterval((()=>{if(r!==t){clearInterval(i);try{n.abortCtrl.abort();throw`stale sequenceId`}catch(e){o(e)}}}),n.wait||100)})))}o.push(e());const a=await Promise.race(o);if(i)clearInterval(i);if(s)s();if(t!==r){console.warn("aborted state update, the returned data corresponds to a stale action.sequenceId");if(n.abortCtrl)n.abortCtrl.abort();return[a,true]}return[a]}catch(e){if(typeof e=="string"&&e.includes("sequenceId"))console.warn(e);throw e}},destroy(){e.app.deregister(e.api);for(const t in e.components){const n=e.components[t];if(typeof n.destroy=="function"){n.destroy()}else if(n.holder){n.holder.selectAll("*").remove()}delete e.components[t]}if(typeof e.destroy=="function")e.destroy();if(e.dom){if(e.dom.holder)e.dom.holder.selectAll("*").remove();for(const t in e.dom){if(typeof e.dom[t]?.remove=="function")e.dom[t].remove();delete e.dom[t]}}if(e.bus)e.bus.destroy();if(e.api)delete e.api}};if(!e.bus){if(!e.eventTypes)e.eventTypes=["postInit","postRender","postPrintError","firstRender","error"];if(e.customEvents)e.eventTypes.push(...e.customEvents);e.bus=new Nl(n,e.eventTypes,e.opts&&e.opts.callbacks||{})}return n}class Nl{constructor(e,t,n){this.name=e.type+(e.id===undefined||e.id===null?"":"#"+e.id);this.eventTypes=t;this.events={};this.defaultArg=e;if(n){for(const e in n){this.on(e,n[e])}}}on(e,t,n={}){const[r,o]=e.split(".");if(!this.eventTypes.includes(r)){throw`Unknown bus event '${r}' for component ${this.name}`}else if(!t){delete this.events[e]}else if(typeof t=="function"){if(e in this.events&&!e.includes(".")){console.log(`Warning: replacing ${this.name} ${e} callback - use event.name?`)}this.events[e]=n.wait?e=>setTimeout((()=>t(e)),n.wait):t}else{throw`invalid callback for ${this.name} eventType=${e}`}return this}emit(e,t=null,n=0,r=null){setTimeout((()=>{for(const n in this.events){if(e=="postRender"&&n.startsWith("firstRender")){this.events[n](t||this.defaultArg,r);delete this.events[n]}if(n==e||n.startsWith(e+".")){this.events[n](t||this.defaultArg,r);if(e=="postInit")delete this.events[n]}}}),n);return this}destroy(){for(const e in this.events){delete this.events[e]}}}async function Cl(e,t){if(!e)return;const n=[];for(const r in e){const o=e[r];if(Array.isArray(o)){for(const e of o)n.push(e.update(t))}else if(o.hasOwnProperty("update")){n.push(o.update(t))}else if(o&&typeof o=="object"&&!o.main){for(const e in o){if(o.hasOwnProperty(e)&&typeof o[e].update=="function"){n.push(o[e].update(t))}}}}return Promise.all(n)}function Al(e,t){if(!t)return Object.assign({},e);const n=t.split(".");let r=e;while(n.length){let e=n.shift();if(Array.isArray(r))e=Number(e);if(!n.length)r=r[e];else if(r[e]&&r[e].components)r=r[e].components;else if(r[e]&&r[e].getComponents)r=r[e].getComponents();else r=r[e];if(!r)break}return r}function Sl(e,...t){const n=typeof e=="string"?Ml(e):e;for(const r of t){if(r){const t=typeof e=="string"?Ml(Ol(r)):r;for(const e in t){if(!n[e]||Array.isArray(n[e])||typeof n[e]!=="object"||t===null||t===undefined||t.isAtomic||n?.isAtomic||n[e]?.isAtomic)n[e]=t[e];else Sl(n[e],t[e])}}}return n}function Ml(e){return JSON.parse(e)}function Ol(e=null){return JSON.stringify(e?e:this.state)}function Il(e){Object.freeze(e);for(const t in e){if(typeof e=="object")Il(e[t])}}function El(e,t){if(e===t){return true}else if(typeof e=="object"&&e!=null&&typeof t=="object"&&t!=null){if(Object.keys(e).length!=Object.keys(t).length){return false}for(var n in e){if(t.hasOwnProperty(n)){if(!El(e[n],t[n]))return false}else{return false}}return true}else return false}const Tl=["false","true","null","undefined"];const Ll=['"',"{","["];function zl(e){const t=[];for(const[n,r]of Object.entries(e)){if(typeof r=="string"&&!Rl(r)&&!Tl.includes(r)&&!Ll.includes(r[0])){t.push(`${n}=${encodeURIComponent(r)}`)}else if(r!==undefined){t.push(`${n}=${encodeURIComponent(JSON.stringify(r))}`)}}return t.join("&")}function Rl(e){return!isNaN(parseFloat(e))&&isFinite(e)&&e!==""}const Ul=localStorage.getItem("jwtByDsRoute")||`{}`;const $l=JSON.parse(Ul);function Fl(e,t,n=null){if(n&&typeof n=="object"){if(n.serverData&&typeof n.serverData=="object"){if(!Fl.serverData){Fl.serverData=n.serverData}else if(!n.serverData){n.serverData=Fl.serverData}}return Dl(e,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)},n)}else{if(e[0]=="/"){e=e.slice(1)}const n=sessionStorage.getItem("jwt");if(n){t.jwt=n}let r=e;const o=sessionStorage.getItem("hostURL")||window.testHost||"";if(o){if(o.endsWith("/")){r=o+e}else{r=o+"/"+e}}return fetch(new Request(r,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)})).then((e=>e.json()))}}const Pl=[];const ql=360;function Dl(e,t={},n={}){if(e[0]=="/"){e=e.slice(1)}let r=e;const o=sessionStorage.getItem("hostURL")||window.testHost||"";if(o){if(o.endsWith("/")){r=o+e}else{r=o+"/"+e}}const i=t.body||{};r=Jl(r,t);if(!t.headers){t.headers={}}if(!t.headers["content-type"]&&t.body){t.headers["content-type"]="application/json"}const s=sessionStorage.getItem("jwt");if(s){t.headers.authorization="Bearer "+s}return tc(t,r).then((async()=>{if(!s)rc(t,i,r);const e=r+" | "+t.method+" | "+t.body;if(n.serverData){let o;if(n.serverData[e]){o=n.serverData[e].clone?await Gl(n.serverData[e].clone()):structuredClone(n.serverData[e])}if(!o||typeof o!="object"||o instanceof Promise){delete n.serverData[e];o=undefined}if(!o){try{const i=await fetch(r,t);o=await Gl(i.clone());if(typeof o=="object"&&!(o instanceof Promise)){if(n.cacheAs=="decoded"){Il(o);n.serverData[e]=o;o=structuredClone(o)}else{n.serverData[e]=i}}}catch(t){delete n.serverData[e];throw t}}const i=Pl.indexOf(e);if(i!==-1)Pl.splice(i,1);Pl.unshift(e);if(Pl.length>ql){const e=Pl.pop();delete n.serverData[e]}return o}else{return fetch(r,t).then(Gl)}}))}function Gl(e){const t=e.headers.get("content-type");if(!t)throw`missing response.header['content-type']`;if(t.includes("/json")){return e.json()}if(t.includes("/text")){return e.text()}return e.blob()}const Bl={};function Vl(e,t={},n={}){n.serverData=Bl;return Dl(e,t,n)}const Hl=2e3;function Jl(e,t){const n=window.location.hostname;const r=t.method&&t.method.toUpperCase()||"GET";if(r=="POST"){if(typeof t.body=="string")t.body=JSON.parse(t.body);if(!t.body.embedder&&Kl)t.body.embedder=n;t.body=JSON.stringify(t.body);return e}if(r!="GET"&&r!="DELETE"){throw`unsupported init.method='${r}': must be undefined or GET or POST or DELETE`}if(t.body){if(!t.body.embedder&&Kl)t.body.embedder=n;const r=zl(t.body);if(!e.includes("?"))e+="?";e+=r}if(!e.includes("embedder=")&&Kl){const t=e.includes("?")?"&":"?";e+=`${t}embedder=${n}`}if(e.length<Hl){if(t.body)delete t.body;return e}t.method="POST";const[o,i]=e.split("?");if(t.body){t.body=JSON.stringify(t.body)}else{const e={};if(i)i.split("&").forEach((t=>{const[n,r]=t.split("=");const o=decodeURIComponent(r);try{e[n]=JSON.parse(o)}catch{e[n]=o}}));if(!e.embedder&&Kl)e.embedder=n;t.body=JSON.stringify(e)}return o}const Yl=new Set;let Xl,Wl,Zl,Kl=false;function Ql(e){Xl=e.dsAuth;Wl=e.ui||nc;Zl=e.holder||ot("body");for(const e of Xl){if(e.insession)Yl.add(e)}Kl=e.dsAuth?.length>0||false}function ec(e,t){return e&&[...Yl].find((n=>n.dslabel==e&&n.route==t))}async function tc(e,t){const n={status:"ok"};if(!Xl)return n;for(const r of Xl){const o=JSON.parse(e.body||`{}`);const i=(t.split("?")[1]||"").split("&").reduce(((e,t)=>{const[n,r]=t.split("=");e[n]=r;return e}),{});const s=Object.assign({},o,i);const a=((t.split("?")[0]||"").split("//")[1]||"").split("/").slice(1).join("/");if(s.dslabel==r.dslabel&&(r.route=="/**"||a==r.route)){if(Yl.has(r))return n;else if(r.route!="/**")return n;else if(r.type=="basic")return await Wl(r.dslabel,r);else if(r.type=="jwt");else if(r.type=="forbidden"){alert("Forbidden access")}else throw`unsupported dsAuth type='${r.type}'`}}return n}async function nc(e,t){const n=Zl.append("div").style("position","fixed").style("top",0).style("left",0).style("height","100%").style("width","100%").style("margin",0).style("padding","20px").style("background-color","rgb(150,150,150)");const r=n.append("div").style("opacity",1);r.append("div").html(`Restricted dataset '${e}'`);r.append("span").html("Please enter password ");const o=r.append("input").attr("type","password");o.node().focus();const i=r.append("button").html("Submit");return new Promise(((r,s)=>{function a(){fetch("/dslogin",{method:"POST",headers:{authorization:`Basic ${btoa(o.property("value"))}`},body:JSON.stringify({dslabel:e,route:t.route,embedder:window.location.hostname})}).then((e=>e.json())).then((o=>{if(o.error)throw o.error;n.remove();Yl.add(t);if(o.jwt){if(!$l[e])$l[e]={};$l[e][o.route]=o.jwt;localStorage.setItem("jwtByDsRoute",JSON.stringify($l))}r(e)})).catch((e=>{alert("login error: "+e)}))}i.on("click",a);o.on("change",a)}))}function rc(e,t,n){if(e.headers.authorization)return;let r=t?.dslabel;if(!r){const e=n.split("?")[1]?.split("&").find((e=>e.includes("dslabel")));if(!e)return;let t=decodeURIComponent(e.split("=")[1]);if(t.startsWith("{")&&t.endsWith("}")){t=JSON.parse(t);r=t.dslabel||t.mass?.vocab.dslabel||t.tracks?.find((e=>e.dslabel))?.dslabel}else{r=t}}if(!r||!$l[r])return;const o=n.split("//");const i=(o[1]||o[0]).split("/").find((e=>e!="")).split("?")[0];const s=$l[r][i]||$l[r]["/**"];if(s)e.headers.authorization="Bearer "+btoa(s)}class oc{constructor(e={}){this.typename=Math.random().toString();const t=ot(document.body);this.d=t.append("div").attr("class","sja_menu_div").style("display","none").style("position","absolute").style("background-color","white").style("font-family","Arial").on("mousedown.menu"+this.typename,(e=>{const t=ot(e.target);if(t.on("mousedown")||t.on("click")||["INPUT","SELECT","TEXTAREA"].includes(e.target.tagName.toUpperCase())){e.stopPropagation()}})).on("keyup",(e=>{if(e.key=="Escape")this.hide()}));this.dnode=this.d.node();if(Object.values(this.d._groups[0]).length)this.dnode.parent_menu=e.parent_menu;t.on("mousedown.menu"+this.typename,(e=>{if(this.dnode.contains(e.target))return;if(e.target.parent_menu===this.dnode)return;const t=e.target.closest(".sja_menu_div");if(t&&t.parent_menu===this.dnode)return;this.hide()}));const n=cl();if(n){this.d.style("z-index",n+1)}this.d.style("padding","padding"in e?e.padding:"10px");if(e.border){this.d.style("border",e.border)}else{this.d.style("box-shadow","0px 2px 4px 1px #999")}this.offsetX=Number.isInteger(e.offsetX)?e.offsetX:20;this.offsetY=Number.isInteger(e.offsetY)?e.offsetY:20;this.hideXmute=Number.isInteger(e.hideXmute)?e.hideXmute:0;this.hideYmute=Number.isInteger(e.hideYmute)?e.hideYmute:0;this.prevX=-1;this.prevY=-1;this.clearSelector=e.clearSelector}clear(){if(this.clearSelector)this.d.select(this.clearSelector).selectAll("*").remove();else this.d.selectAll("*").remove();return this}show(e,t,n=true,r=true,o=true){let i=e;let s=t;this.prevX=e;this.prevY=t;document.body.appendChild(this.dnode);this.d.style("display","block");if(o){i=i+window.scrollX;s=s+window.scrollY}if(n){i=i+this.offsetX;s=s+this.offsetY}const a=window.innerWidth;const l=window.innerHeight;const c=a/2;const f=l/2;const d=this.dnode.getBoundingClientRect();if(a-i<c&&i+d.width>a)this.d.style("left",null).style("right",a-i+"px");else this.d.style("left",i+"px").style("right",null);if(!r&&l-s<f&&s-window.scrollY-d.height>0)this.d.style("top",null).style("bottom",l-s+"px");else this.d.style("top",s+"px").style("bottom",null);this.d.transition().style("opacity",1);return this}show2(e,t){let n=e;let r=t;this.prevX=e;this.prevY=t;document.body.appendChild(this.dnode);this.d.style("display","block");n=n+window.scrollX+this.offsetX;r=r+window.scrollY+this.offsetY;const o=window.innerWidth;const i=this.dnode.getBoundingClientRect();if(n+i.width>o)this.d.style("left","").style("right","5px");else this.d.style("left",n+"px").style("right","");this.d.style("top",r+"px").style("bottom","");this.d.transition().style("opacity",1);return this}showunder(e){const t=e.getBoundingClientRect();const n=t.left+window.scrollX;const r=t.top+t.height+window.scrollY+5;return this.show(n,r,false,true,false)}showunderoffset(e){const t=e.getBoundingClientRect();const n=t.top+t.height+window.scrollY+5;return this.show(t.left,n,true,true,false)}hide(e){if(e){if(Math.abs(this.prevX-e.clientX)<this.hideXmute&&Math.abs(this.prevY-e.clientY)<this.hideYmute)return}if(!this.fadeTimeout)this.d.style("display","none").style("opacity",0);if(this.onHide)this.onHide();return this}fadeout(){this.d.transition().style("opacity",0).on("end",(()=>this.d.style("display","none")));return this}confirm({html:e,timeout:t}){this.d.selectAll("*").remove();this.d.append("div").style("padding","5px").html(e);if(t)this.fadeTimeout=setTimeout((()=>{this.fadeout();delete this.fadeTimeout}),3e3)}toggle(){if(!this.hidden){this.hide();this.hidden=true}else{this.d.style("opacity",1).style("display","block");this.hidden=false}return this}getCustomApi(e={}){const t=Object.create(this);Object.assign(t,e);return t}destroy(){this.d.remove()}}function ic(e,t){if(!e.tracks)return;for(const n of e.tracks){if(n.__isgene){t.push(n);return}}}function sc(e){const t=e.holder.append("div").style("max-width","80vw");const n=t.append("table").style("margin","5px 8px").attr("class","sja_simpletable").attr("data-testid","sja_simpletable");return{scrollDiv:t,table:n,addRow:()=>{if(n.node().offsetHeight>500){t.style("height","450px").style("resize","both").style("overflow-y","scroll").attr("class","sjpp_show_scrollbar")}const e=n.append("tr");const r=e.append("td").style("padding","3px").style("color","#555");const o=e.append("td");return[r,o]}}}function ac(e,t,n){const r="#9e9e9e";const o=e.append("table").style("margin","5px 8px").style("font-size","inherit").attr("class","sja_simpletable");for(const e of t){const t=o.append("tr");if(e.kvlst){t.append("td").attr("rowspan",e.kvlst.length).style("padding","3px").style("color",r).html(e.k);t.append("td").style("padding","3px").style("color",r).html(e.kvlst[0].k);t.append("td").style("padding","3px").html(e.kvlst[0].v);for(let t=1;t<e.kvlst.length;t++){const n=o.append("tr");n.append("td").style("padding","3px").style("color",r).html(e.kvlst[t].k);n.append("td").style("padding","3px").html(e.kvlst[t].v)}}else{t.append("td").attr("colspan",2).style("padding","3px").style("color",r).html(e.k);const o=t.append("td").style("padding","3px");if(n&&e.v.length>n){o.html(e.v.substr(0,n-3)+" ...»").attr("class","sja_clbtext").on("click",(()=>{o.html(e.v).classed("sja_clbtext",false).on("click",null)}))}else{o.html(e.v)}}}return o}function lc(e,t,n){if(!n)n={};const r=n.width||40;const o=n.height||12;let i;if(e){e.attr("aria-label",(t.f*100).toFixed(0)+"%"+(t.v1!=undefined?" ("+t.v1+"/"+t.v2+")":""));i=e.append("svg").attr("width",r).attr("height",o)}else{i=ot(document.body).append("svg")}let s=0;i.append("rect").attr("y",s).attr("width",r).attr("height",o).attr("fill",n.fillbg||"#CBE2F5");i.append("rect").attr("y",s).attr("width",r*t.f).attr("height",o).attr("fill",n.fill||"#69A1D1");if(n.readcountcredible&&t.v2<n.readcountcredible){const e="#545454";const t=.3;i.append("rect").attr("y",s).attr("width",r).attr("height",o).attr("fill",e).attr("fill-opacity",t)}if(e)return i;i.remove();return"<svg width="+r+" height="+o+">"+i.node().innerHTML+"</svg>"}const cc="Arial";const fc="Unspecified";const dc="green";const uc="#858585";const pc="#FCE3B8";const hc="#D2E2FC";const mc="red";const gc="#DE3336";const bc=.6;let yc=null;const vc=Aa;const wc=Va;const _c=["#8dd3c7","#bebada","#fb8072","#80b1d3","#E8E89E","#a6d854","#fdb462","#ffd92f","#e5c494","#b3b3b3"];function xc(e,t){e.style("opacity",0).style("display",t||"block").transition().style("opacity",1)}function kc(e,t){e.style("opacity",1).transition().style("opacity",0).call((()=>{if(t){e.remove()}else{e.style("display","none").style("opacity",1)}}))}const jc=new oc({padding:""});jc.d.style("z-index",1e3);function Nc(e,t){const n=e.append("div").attr("class","sja_errorbar");n.append("div").text(t);n.append("div").html("✕").on("click",(()=>{kc(n,true)}))}function Cc(e){if(!e||!e.axis)return;if(!e.color){e.color="#545454"}e.axis.selectAll("line").attr("stroke",e.color).attr("shape-rendering","crispEdges");e.axis.selectAll("path").attr("fill","none").attr("stroke",e.showline?e.color:"none").attr("stroke-width",e.showline?1:0).attr("shape-rendering","crispEdges");e.axis.selectAll("text").style("cursor","default").attr("font-family",cc).attr("font-size",e.fontsize?e.fontsize+"px":"12px").attr("fill",e.color)}function Ac(e){if(e.setzindex){yc=e.setzindex;fl(e.setzindex);return}const t=300;const n={};const r=ot(document.body);n.pane=r.append("div").attr("class","sja_pane").style("left",e.x+window.pageXOffset+"px").style("top",e.y+window.pageYOffset+"px").style("opacity",0);if(e.$id){n.pane.attr("id",e.$id)}if(yc){n.pane.style("z-index",yc)}n.pane.transition().duration(t).style("opacity",1);const o=n.pane.append("div").on("mousedown",(e=>{e.preventDefault();e.stopPropagation();const t=Number.parseInt(n.pane.style("left")),o=Number.parseInt(n.pane.style("top"));const i=e.clientX,s=e.clientY;r.on("mousemove",(e=>{n.pane.style("left",t+e.clientX-i+"px").style("top",o+e.clientY-s+"px")}));r.on("mouseup",(function(){r.on("mouseup",null).on("mousemove",null)}));document.body.appendChild(n.pane.node())}));const i=o.append("div").attr("class","sja_menuoption").style("display","inline-block").style("padding","4px 10px").style("margin","0px").style("border-right","solid 1px white").style("cursor","default").style("font-size","1.5em").on("mousedown",(e=>{document.body.dispatchEvent(new Event("mousedown"));e.stopPropagation()}));if(e.toshrink){n.mini=false;i.html("━").on("click",(()=>{i.html(n.mini?"━":"◽");if(n.mini){xc(n.body)}else{kc(n.body)}n.mini=!n.mini}))}else{i.html("×");if(e.close){i.on("click",e.close)}else if(e.closekeep){i.on("click",(()=>{n.pane.transition().duration(t).style("opacity",0).call((()=>n.pane.style("display","none")))}))}else{i.on("click",(()=>{n.pane.transition().duration(t).style("opacity",0).call((()=>n.pane.remove()))}))}}n.header=o.append("div").style("display","inline-block").style("font-family",cc).style("padding",e.headpad||"5px 10px");n.body=n.pane.append("div").style("font-family",cc);return n}function Sc(e){if(!e.pdomains)return[];const t=new Map;for(const n of e.pdomains){const e=n.name+n.description;if(t.has(e)){t.get(e).start=Math.min(t.get(e).start,n.start)}else{t.set(e,{name:n.name,description:n.description,color:n.color,start:n.start,iscustom:n.iscustom,url:n.url,pmid:n.pmid,CDD:n.CDD,Pfam:n.Pfam,SMART:n.SMART,COG:n.COG,PRK:n.PRK,Curated_at_NCBI:n.Curated_at_NCBI})}}const n=[];for(const[e,r]of t){r.key=e;r.fill=r.color;r.stroke=Qt(r.color).darker(1).toString();delete r.color;n.push(r)}n.sort(((e,t)=>e.start-t.start));return n}function Mc(e,t,n,r){let o=10;if(o*(t.exon.length-1)>n*.3){o=Math.max(2,n*.3/(t.exon.length-1))}let i=0;for(const e of t.exon){i+=e[1]-e[0]}const s=o*(t.exon.length-1);const a=(n-(s>n*.4?0:s))/i;n=a*i+s;const l=e.append("canvas").node();l.width=n;const c=20;const f=4;l.height=c;const d=l.getContext("2d");d.strokeStyle=r;d.beginPath();d.moveTo(0,Math.floor(c/2)-.5);d.lineTo(n,Math.floor(c/2)-.5);d.stroke();const u=t.strand=="-";let p=0;for(const e of t.exon){let n=null,i=null,s=null;if(u){const r=e[1],o=e[0],a=t.codingstop,l=t.codingstart;if(o>=a){n=e}else if(o>=l){if(r>=a){n=[a,r];i=[o,a]}else{i=e}}else{if(r>=a){n=[a,r];s=[o,l];i=[l,a]}else if(r>=l){s=[o,l];i=[l,r]}else{s=e}}}else{if(e[1]<=t.codingstart){n=e}else if(e[1]<=t.codingstop){if(e[0]<=t.codingstart){n=[e[0],t.codingstart];i=[t.codingstart,e[1]]}else{i=e}}else{if(e[0]<=t.codingstart){n=[e[0],t.codingstart];s=[t.codingstop,e[1]];i=[t.codingstart,t.codingstop]}else if(e[0]<t.codingstop){s=[t.codingstop,e[1]];i=[e[0],t.codingstop]}else{s=e}}}if(n){d.fillStyle="#aaa";const e=Math.max(1,(n[1]-n[0])*a);d.fillRect(p,f,e,c-f*2);p+=e}if(i){d.fillStyle=r;const e=Math.max(1,(i[1]-i[0])*a);d.fillRect(p,0,e,c);p+=e}if(s){d.fillStyle="#aaa";const e=Math.max(1,(s[1]-s[0])*a);d.fillRect(p,f,e,c-f*2);p+=e}p+=o}}function Oc(e,t,n,r,o,i,s,a){const l=e.append("canvas").node();l.width=i;l.height=s;const c=Math.ceil(s/5);const f=l.getContext("2d");let d;let u=0;for(const e of t){if(e.chr!=n.chr){u+=e.width+o;continue}if(n.start>=e.start&&n.start<=e.stop){d=u+(e.reverse?e.stop-n.start:n.start-e.start)*r;break}u+=e.width+o}let p;u=0;for(const e of t){if(e.chr!=n.chr){u+=e.width+o;continue}if(n.stop>=e.start&&n.stop<=e.stop){p=u+(e.reverse?e.stop-n.stop:n.stop-e.start)*r;break}u+=e.width+o}f.strokeStyle=a;f.beginPath();f.moveTo(d,Math.floor(s/2)+.5);f.lineTo(p,Math.floor(s/2)+.5);f.stroke();const h=[];if(n.utr5)h.push(...n.utr5);if(n.utr3)h.push(...n.utr3);if(!n.cdslen)h.push(...n.exon);for(const e of h){let i=0;for(const a of t){if(a.chr!=n.chr){i+=a.width+o;continue}const t=Math.max(e[0],a.start);const l=Math.min(e[1],a.stop);if(t>=l){i+=a.width+o;continue}f.fillStyle="#aaa";f.fillRect(i+(a.reverse?(a.stop-l)*r:(t-a.start)*r),c,Math.max(1,(l-t)*r),s-c*2);i+=a.width+o}}if(n.coding){for(const e of n.coding){let i=0;for(const l of t){if(l.chr!=n.chr){i+=l.width+o;continue}const t=Math.max(e[0],l.start);const c=Math.min(e[1],l.stop);if(t>=c){i+=l.width+o;continue}f.fillStyle=a;f.fillRect(i+(l.reverse?(l.stop-c)*r:(t-l.start)*r),0,Math.max(1,(c-t)*r),s);i+=l.width+o}}}}function Ic(e,t,n,r){const o=e.append("canvas").node();o.width=n;const i=20;const s=4;o.height=i;const a=o.getContext("2d");if(!t.cdslen){a.fillStyle="#aaa";a.fillRect(0,s,n,i-s*2);return}const l=n/t.rnalen;let c=0;if(t.utr5){let e=0;for(const n of t.utr5)e+=n[1]-n[0];a.fillStyle="#aaa";a.fillRect(0,s,l*e,i-s*2);c=l*e}if(t.pdomains&&t.pdomains.length){a.fillStyle="white";a.fillRect(c,0,t.cdslen*l,i);t.pdomains.sort(((e,t)=>t.stop-t.start-e.stop+e.start));for(const e of t.pdomains){a.fillStyle=e.color;a.fillRect(c+e.start*3*l,0,(e.stop-e.start+1)*3*l,i)}a.strokeStyle="black";a.strokeRect(c,0,t.cdslen*l,i)}else{a.fillStyle=r;a.fillRect(c,0,t.cdslen*l,i)}c+=t.cdslen*l;if(t.utr3){let e=0;for(const n of t.utr3)e+=n[1]-n[0];a.fillStyle="#aaa";a.fillRect(c,s,l*e,i-s*2)}}function Ec(e,t,n){const r=e.append("canvas").node();r.width=n;const o=20;r.height=o;const i=r.getContext("2d");const s=n/(t.cdslen/3);t.pdomains.sort(((e,t)=>t.stop-t.start-e.stop+e.start));i.fillStyle="white";i.fillRect(0,0,n,o);for(const e of t.pdomains){i.fillStyle=e.color;i.fillRect(e.start*s,0,(e.stop-e.start+1)*s,o)}i.strokeStyle="black";i.strokeRect(0,0,n,o)}function Tc(e,t,n,r,o,i,s,a,l){const c=e.append("canvas").node();c.width=n;c.height=r;const f=c.getContext("2d");const d=Hr().range([1,n]);if(l){d.domain([i,o])}else{d.domain([o,i])}f.strokeStyle=s;f.fillStyle=s;p(f,t.start,t.stop,o,i,r/2,1);const u=Math.ceil(r/5);if(t.utr3){for(const e of t.utr3){p(f,e[0],e[1],o,i,u+1,r-u*2-1)}}if(t.utr5){for(const e of t.utr5){p(f,e[0],e[1],o,i,u+1,r-u*2-1)}}if(t.coding){for(const e of t.coding){p(f,e[0],e[1],o,i,1,r)}}if(t.codingstart==t.codingstop){for(const e of t.exon){p(f,e[0],e[1],o,i,u+1,r-u*2-1)}}if(!a&&t.strand){const e=3;if(t.coding){for(const n of t.coding){h(f,t.strand,n[0],n[1],o,i,1+e,r-e*2-1,"white")}}if(t.intron){for(const n of t.intron){h(f,t.strand,n[0],n[1],o,i,1+e,r-e*2-1,s?s:"black")}}}function p(e,t,n,r,o,i,s){const a=Math.max(t,r);const c=Math.min(n,o);if(a>=c)return;e.fillRect(Math.floor(d(l?c:a)),i,Math.max(1,Math.abs(d(c)-d(a))),s)}function h(e,t,n,r,o,i,s,a,l){const c=Math.max(n,o);const f=Math.min(r,i);if(c>=f)return;const u=2,p=a/2,h=d(f)-d(c);if(h<=u*2+a/2)return;e.strokeStyle=l;const m=Math.floor((h-u*2)/(a/2+p));let g=Math.floor(d(c)+(h-m*(a/2+p))/2)+.5;e.beginPath();for(let n=0;n<m;n++){if(t=="+"){e.moveTo(g,s);e.lineTo(g+a/2,s+a/2);e.lineTo(g,s+a)}else{e.moveTo(g+a/2,s);e.lineTo(g,s+a/2);e.lineTo(g+a/2,s+a)}g+=a/2+p}e.stroke()}}function Lc(e,t,n){let r=-1;if(t.cdslen){r=t.cdslen/3}return e.append("span").html(" "+(r>0?Math.ceil(r)+" AA"+(Number.isInteger(r)?"":" (incomplete CDS)"):"noncoding"))}function zc(e,t,n){const r=Ac({x:e,y:t});const o=r.body.append("div").style("margin","40px 20px 20px 20px");const i=o.append("p");i.append("span").html("Genome ");const s=i.append("select");for(const e in n){s.append("option").text(e)}const a=o.append("div").style("margin","20px 0px");const l=r.body.append("div").style("margin","10px 20px");const c=r.body.append("div").style("margin","20px");return[r,o,s.node(),a,l,c]}function Rc(e,t,n={}){if(n.apply_dom_styles){n.svgClone=e.cloneNode(true);const t=ot(n.svgClone);for(const e of n.svgClone.querySelectorAll(".sjpp-exclude-svg-download")){e.remove()}const r=window.getComputedStyle(e);for(const e of r){t.style(e,r.getPropertyValue(e))}}const r=document.createElement("a");document.body.appendChild(r);r.addEventListener("click",(function(){const o=new XMLSerializer;const i=new Blob([o.serializeToString(n.svgClone?n.svgClone:e)],{type:"image/svg+xml"});r.download=t+".svg";r.href=URL.createObjectURL(i);document.body.removeChild(r)}),false);r.click()}function Uc(e){const t=e.append("select");t.append("option").text("SNV and indel");t.append("option").text("SV (tabular format)");t.append("option").text("Fusion gene (tabular format)");t.append("option").text("ITD");t.append("option").text("Deletion, intragenic");t.append("option").text("Truncation");t.append("option").text("CNV, gene-level");return t}function $c(e,t,n=1,r=1,o=10,i=100,s=null){let a;if(!s){const t=Ac({x:(window.innerWidth/2-200)*n,y:(window.innerHeight/2-150)*r});t.header.text(e);a=t.body}else{s.append("p").text(e);a=s.append("div")}for(const e of t){const t=a.append("div").style("margin-top","10px");if(e.label){t.append("div").text(e.label).style("margin","5px")}a.append("textarea").text(e.text).attr("readonly",1).attr("rows",o).attr("cols",i)}a.append("p").style("font-size",".7em").text("Click on the text box above and press Ctrl-A to select all text for copy-pasting.")}function Fc(e,t){const n=e.node().getBoundingClientRect();const r=t.node().getBoundingClientRect();const o=ot(document.body).append("div").style("position","absolute").style("border","solid 1px black").style("left",n.left+window.pageXOffset+"px").style("top",n.top+window.pageYOffset+"px").style("width",n.width+"px").style("height",n.height+"px");if(yc){o.style("z-index",yc+3)}o.transition().duration(500).style("left",r.left+window.pageXOffset+"px").style("top",r.top+window.pageYOffset+"px").style("width",r.width+"px").style("height",r.height+"px").on("end",(()=>o.remove()))}function Pc(e){const t=16;if(!e.color){e.color="#ccc"}const n=e.holder.append("div").style("position","relative").style("padding-top",t/2+"px");if(e.margin){n.style("margin",e.margin)}const r=n.append("div").style("border","solid 1px "+e.color).style("padding",t+"px").style("padding-bottom",t/2+"px");n.append("div").text(e.label).style("position","absolute").style("left","15px").style("top","0px").style("background-color","white").style("color",e.color).style("font-family",cc).style("font-size",t+"px").style("padding","0px 10px");return r}function qc(e,t){t.selectAll("*").remove();for(const n in e){const r=e[n];const o=t.append("div").style("display","inline-block").style("white-space","nowrap").style("padding","5px 20px 5px 0px");o.append("div").style("display","inline-block").style("background-color",r.color).style("margin-right","5px").style("padding","0px 4px").html(" ");o.append("div").style("display","inline-block").style("color",r.color).text(r.label)}}function Dc(e,t){if(window.location.hostname=="viz.stjude.cloud"||window.location.hostname=="pecan.stjude.cloud")return;if(window.sessionStorage.getItem("suppressErrors")?.includes(`"bulk-bad-lines"`))return;const n=Ac({x:400,y:60});n.body.style("margin","20px 10px 10px 10px");n.header.text(t.length+" line"+(t.length>1?"s":"")+" rejected, click to check");if(t.length<=50){for(const[r,o,i]of t){n.body.append("div").classed("sja_clbtext",true).style("margin","3px").text("Line "+r+": "+o).on("click",(()=>{const t=Ac({x:500,y:60});t.header.text("Line "+r);t.body.style("margin","10px");const n=t.body.append("table").style("border-spacing","1px").style("border-collapse","separate");let o=true;for(let t=0;t<e.length;t++){const r=n.append("tr");if(o){r.style("background-color","#ededed")}o=!o;r.append("td").text(e[t]);r.append("td").text(i[t]==undefined?"":i[t])}}))}return}const r=new Map;for(const[e,n,o]of t){if(!r.has(n)){r.set(n,[])}r.get(n).push({number:e,line:o})}const o=[...r];o.sort(((e,t)=>t[1].length-e[1].length));for(const[t,r]of o){const o=r[0];n.body.append("div").classed("sja_menuoption",true).style("margin","5px").text("Line "+o.number+": "+t+(r.length>1?" (total "+r.length+" lines)":"")).on("click",(()=>{const t=Ac({x:500,y:60});t.header.text("Line "+o.number);const n=t.body.style("margin","10px").append("table");let r=true;for(let t=0;t<e.length;t++){const i=n.append("tr");if(r){i.style("background-color","#ededed")}r=!r;i.append("td").text(e[t]);i.append("td").text(o.line[t]==undefined?"":o.line[t])}}))}}function Gc(e){if(!e)return"No Block{} object given";if(typeof e!="object")return"Block is not an object";if(!e.error)return"method block.error() missing";if(!e.genome)return"block.genome missing";return null}function Bc(e){e.d.append("p").html('<span style="color:#858585;font-size:.7em">EXAMPLE</span> M ; red');const t=e.d.append("textarea").attr("cols",25).attr("rows",5).attr("placeholder","One class per line, join color and class code by semicolon.");const n=e.d.append("div");n.append("button").text("Submit").on("click",(()=>{const e=t.property("value").trim();if(!e)return;r.text("");const n=[];for(const t of e.split("\n")){const e=t.split(";");if(e.length!=2)return r.text("no separator in line: "+t);const o=e[0].trim();const i=e[1].trim();if(!o||!i)return r.text("wrong line: "+t);if(!Ks[o])return r.text("wrong class: "+o);n.push([o,i])}if(n.length){for(const[e,t]of n){Ks[e].color=t}Vc(o);r.text("New color set!")}}));n.append("button").text("Clear").on("click",(()=>{t.property("value","");r.text("")}));const r=n.append("span").style("margin-left","10px");const o=e.d.append("div").style("margin-top","5px");Vc(o);e.d.append("p").style("font-size",".8em").html("<a href=https://en.wikipedia.org/wiki/Web_colors target=_blank>Use color names</a>, or #ff0000 or rgb(255,0,0)")}function Vc(e,t){e.style("border-spacing","3px").selectAll("*").remove();const n=e.append("tr").style("color","#858585").style("font-size",".7em");n.append("td").text("CLASS");n.append("td").attr("colspan",2).text("LABEL, COLOR");for(const n in Ks){const r=Ks[n];if(t&&r.dt!=Ps)continue;const o=e.append("tr");o.append("td").text(n);{const e=o.append("td").append("span").attr("class","sja_mcdot").style("background-color",r.color).html(" ");if(n=="Blank")e.style("border","solid 1px #eee")}o.append("td").text(r.label).style("color",n=="Blank"?"#ddd":r.color)}}const Hc={height:1,pcolor:2,ncolor:3,pcolor2:4,ncolor2:5,autoscale:6,fixedscale:7,percentilescale:8,nodotplot:9,usedotplot:10,usedividefactor:11,nodividefactor:12};function Jc(e,t){for(const n of t){if(n.type!=e.type)continue;switch(e.type){case vc.bigwig:case vc.bedj:case vc.junction:case vc.mdsjunction:case vc.mdscnv:case vc.bampile:case vc.hicstraw:case vc.expressionrank:if(e.file&&e.file==n.file||e.url&&e.url==n.url){return n}break;case vc.bigwigstranded:if(e.strand1&&n.strand1&&e.strand1.file==n.strand1.file&&e.strand1.url==n.strand1.url){if(e.strand2&&n.strand2&&e.strand2.file==n.strand2.file&&e.strand2.url==n.strand2.url){return n}}break}}return null}function Yc(e){if(e>=100)return"HIGHEST";if(e>=90)return"HIGH "+e+"%";if(e>=70)return"high "+e+"%";if(e>=30)return e+"%";if(e>=10)return"low "+e+"%";if(e>0)return"LOW "+e+"%";return"LOWEST"}function Xc(e){if(e[0]=="#")return e;const t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);return t&&t.length===4?"#"+("0"+parseInt(t[1],10).toString(16)).slice(-2)+("0"+parseInt(t[2],10).toString(16)).slice(-2)+("0"+parseInt(t[3],10).toString(16)).slice(-2):""}function Wc(e){return e.code=="Enter"||e.code=="NumpadEnter"}function Zc(e,t,n,r){if(!n||!n.hasSNP)return;const o={byCoord:true,genome:n.name,chr:e,ranges:[],alleleLst:r};for(const e of t){if(Number.isFinite(e)){o.ranges.push({start:e,stop:e+1})}else if(e.start&&e.stop){o.ranges.push(e)}}return Fl("snp",o).then((e=>{if(e.error)throw e.error;return e.results}))}function Kc(e,t){t.append("a").text(e.name).attr("href","https://www.ncbi.nlm.nih.gov/snp/"+e.name).attr("target","_blank");t.append("div").attr("class","sja_tinylogo_body").text(e.observed);t.append("div").attr("class","sja_tinylogo_head").text("ALLELE")}function Qc(e,t){t.append("div").style("display","inline-block").style("background",e.bg).style("padding","3px").append("a").attr("href","https://www.ncbi.nlm.nih.gov/clinvar/variation/"+e.id).attr("target","_blank").style("color",e.textcolor).text(e.value).style("font-size",".9em").style("text-decoration","none")}function ef(e){const t=[];for(const n of e){let e=true;for(const r of t){if(n.chr==r.chr&&Math.max(n.start,r.start)<Math.min(n.stop,r.stop)){r.start=Math.min(r.start,n.start);r.stop=Math.max(r.stop,n.stop);e=false}}if(e){t.push({name:n.isoform,chr:n.chr,start:n.start,stop:n.stop})}}return t}function tf(e,t,n,r){const o=e.append("table").style("border-spacing","0px").style("border-collapse","separate").append("tr");const i=o.append("td").style("vertical-align","top").style("padding","10px 0px 10px 10px");const s=o.append("td").style("vertical-align","top").style("border-left","solid 1px #aaa").style("padding","10px");const a=t.findIndex((e=>e.active))==-1?false:true;if(r){i.append("div").style("padding","5px 10px").style("margin","5px 5px 10px 5px").style("font-weight","550").text(r)}for(let e=0;e<t.length;e++){const r=t[e];r.tab=i.append("div").style("padding","5px 10px").style("margin","0px").style("border-top","solid 1px #ddd").style("border-radius","0px").classed("sja_menuoption",!a&&e!=0).html(r.label);r.box=s.append("div").style("padding","3px").style("display",!a&&e==0||r.active?"block":"none");if(n&&r.callback||!a&&e==0&&r.callback||r.active){r.callback(r.box);delete r.callback}if(a)r.tab.classed("sja_menuoption",!r.active);r.tab.on("click",(()=>{if(r.box.style("display")!="none"){r.tab.classed("sja_menuoption",true);r.box.style("display","none")}else{r.tab.classed("sja_menuoption",false);xc(r.box);for(let n=0;n<t.length;n++){if(e!=n){t[n].tab.classed("sja_menuoption",true);t[n].box.style("display","none")}}}if(r.callback){r.callback(r.box);delete r.callback}}))}}function nf(e){return e.append("div").style("margin","30px").text("Loading...")}var rf=Object.freeze({__proto__:null,dofetch:Fl,dofetch2:Dl,dofetch3:Vl,Menu:oc,first_genetrack_tolist:ic,make_table_2col:ac,fillbar:lc,font:cc,unspecified:fc,colorinframe:dc,coloroutframe:uc,colorbgleft:pc,colorbgright:hc,colorantisense:mc,colorctx:gc,textlensf:bc,get base_zindex(){return yc},tkt:vc,gmmode:wc,domaincolorlst:_c,appear:xc,disappear:kc,tip:jc,sayerror:Nc,axisstyle:Cc,newpane:Ac,getdomaintypes:Sc,sketchSplicerna:Mc,sketchGmsum:Oc,sketchRna:Ic,sketchProtein2:Ec,sketchGene:Tc,sketchProtein:Lc,newpane3:zc,to_svg:Rc,filetypeselect:Uc,export_data:$c,flyindi:Fc,labelbox:Pc,category2legend:qc,bulk_badline:Dc,ensureisblock:Gc,mclasscolorchangeui:Bc,mclasscolor2table:Vc,bwSetting:Hc,tkexists:Jc,ranksays:Yc,rgb2hex:Xc,keyupEnter:Wc,may_findmatchingsnp:Zc,snp_printhtml:Kc,clinvar_printhtml:Qc,gmlst2loci:ef,tab2box:tf,tab_wait:nf});function of(e,t,n){var r,o,i,s,a;if(null==t)t=100;function l(){var c=Date.now()-s;if(c<t&&c>=0){r=setTimeout(l,t-c)}else{r=null;if(!n){a=e.apply(i,o);i=o=null}}}var c=function(){i=this;o=arguments;s=Date.now();var c=n&&!r;if(!r)r=setTimeout(l,t);if(c){a=e.apply(i,o);i=o=null}return a};c.clear=function(){if(r){clearTimeout(r);r=null}};c.flush=function(){if(r){a=e.apply(i,o);i=o=null;clearTimeout(r);r=null}};return c}of.debounce=of;var sf=of;function af(e){const t=e.div.append("input").attr("placeholder","Search gene").style("width",e.width||"100px");const n=e.resultdiv||(e.tip?e.tip.d:jc.d);function r(){if(e.resultdiv){e.resultdiv.selectAll("*").remove()}else if(e.tip){e.tip.hide()}else{jc.hide()}}t.on("keyup",(t=>{const o=t.target.value;if(o.length<=1){r();return}if(Wc(t)){const t=n.select(".sja_menuoption");if(t.size()>0){e.callback(t.text());r()}return}i()}));t.node().focus();function o(){Fl("genelookup",{genome:e.genome,input:t.property("value")}).then((o=>{if(o.error)throw o.error;if(!o.hits)throw".hits[] missing";if(e.resultdiv){e.resultdiv.selectAll("*").remove()}else if(e.tip){e.tip.clear().showunder(t.node())}else{jc.clear().showunder(t.node())}for(const t of o.hits){n.append("div").attr("class","sja_menuoption").text(t).on("click",(()=>{e.callback(t);r()}))}})).catch((e=>{n.append("div").text(e.message||e);if(e.stack)console.log(e.stack)}))}const i=sf.debounce(o,300)}function lf(e,t){return Vl("genelookup",{body:{deep:1,input:t,genome:e}}).then((e=>{if(e.error)throw e.error;if(!e.gmlst||e.gmlst.length==0)return null;return e.gmlst})).catch((e=>{throw e}))}function cf(e){if(!e){return null}const t={};for(const e in Ks){t[Ks[e].label.toUpperCase()]=e}return{genome:e,mclasslabel2key:t,data:{},sample2disease:{},patient2st:{},good:0,geneToUpper:true,snv:{loaded:false,header:null,badlines:[],missense:0,silent:0},svjson:{loaded:false,header:null,badlines:[]},fusion:{loaded:false,header:null,badlines:[],original:[]},sv:{loaded:false,header:null,badlines:[],original:[]},cnv:{loaded:false,header:null,badlines:[]},itd:{loaded:false,header:null,badlines:[]},del:{loaded:false,header:null,badlines:[]},truncation:{loaded:false,header:null,badlines:[]}}}function ff(e,t,n,r,o){let i=xa;if(e.sampletype){const t=e.sampletype.toLowerCase();switch(t){case"relapse":i=ja;break;case"germline":i=ka;break}if(e.sample){if(e.patient);else{e.patient=e.sample+" "+e.sampletype}}else{if(e.patient){e.sample=e.patient+" "+e.sampletype}}}else{if(e.patient){if(e.sample){e.sampletype=e.sample}else{e.sample=e.sampletype=e.patient}}else{if(e.sample){e.sampletype=e.sample}}}if(e.origin){const t=e.origin.toLowerCase();switch(t){case"r":case"relapse":i=ja;e.isrim2=true;break;case"g":case"germline":i=ka;e.isrim1=true;break;case"gp":case"germline pathogenic":i=Na;e.isrim1=true;break;case"gnp":case"germline nonpathogenic":case"germline non-pathogenic":i=Ca;e.isrim1=true;break;case"s":case"somatic":case"diagnosis":i=xa;break}}e.origin=i;if(!e.sample&&!e.patient){return}const s="no patient/individual name";if(e.patient){if(!t.patient2st[e.patient]){t.patient2st[e.patient]={}}t.patient2st[e.patient][e.sampletype]=e.sample}else{if(!t.patient2st[s]){t.patient2st[s]={}}t.patient2st[s][e.sampletype]=e.sample}if(e.sample){if(e.disease){if(e.sample in t.sample2disease){if(e.disease!=t.sample2disease[e.sample]){t.snv.badlines.push([n,'conflict of disease types for sample "'+e.sample+'": '+e.disease+", "+t.sample2disease[e.sample],r]);return true}}else{t.sample2disease[e.sample]=e.disease}}}return false}function df(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid file header for snv/indel";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("annovar_gene","annovar_sj_gene","gene","genename","gene_symbol","hugo_symbol");if(o==-1)return"gene missing from header";n[o]="gene";o=r("annovar_aachange","amino_acid_change","annovar_sj_aachange","aachange","protein_change","variant");if(o==-1)return"amino_acid_change missing from header";n[o]="mname";o=r("annovar_class","class","mclass","variant_class","variant_classification","annovar_sj_class");if(o==-1)return"variant_class missing from header";n[o]="class";o=r("chromosome","chr");if(o==-1)return"chromosome missing from header";n[o]="chr";o=r("wu_hg19_pos","start","start_position","chr_position","position");if(o==-1)return"start missing from header";n[o]="pos";o=r("annovar_isoform","mrna_accession","mrna accession","refseq_mrna_id","annovar_sj_filter_isoform","refseq","isoform");if(o==-1)return"isoform missing from header";n[o]="isoform";o=r("sample","sample_name","tumor_sample_barcode");if(o!=-1)n[o]="sample";o=r("patient","donor","target_case_id");if(o!=-1)n[o]="patient";o=r("quantitative_measurements");if(o!=-1)n[o]="qmset";o=r("mutant_reads_in_case","mutant_in_tumor","tumor_readcount_alt");if(o!=-1)n[o]="maf_tumor_v1";o=r("total_reads_in_case","total_in_tumor","tumor_readcount_total");if(o!=-1)n[o]="maf_tumor_v2";o=r("mutant_reads_in_control","mutant_in_normal","normal_readcount_alt");if(o!=-1)n[o]="maf_normal_v1";o=r("total_reads_in_control","total_in_normal","normal_readcount_total");if(o!=-1)n[o]="maf_normal_v2";o=r("cdna_change");if(o!=-1)n[o]="cdna_change";o=r("sampletype","sample type","sample_type");if(o!=-1)n[o]="sampletype";o=r("origin");if(o!=-1)n[o]="origin";o=r("cancer","disease","diagnosis");if(o!=-1)n[o]="disease";t.snv.header=n;t.snv.loaded=true;return false}function uf(e,t,n){if(t==""||t[0]=="#")return;const r=t.split("\t");const o={};for(let e=0;e<n.snv.header.length;e++){if(r[e]==undefined)break;o[n.snv.header[e]]=r[e]}if(!o.gene){n.snv.badlines.push([e,"missing gene",r]);return}if(o.gene.toUpperCase()=="UNKNOWN"){n.snv.badlines.push([e,"gene name is UNKNOWN",r]);return}if(!o.isoform){n.snv.badlines.push([e,"missing isoform",r]);return}if(!o.mname){o.mname=o.cdna_change;if(!o.mname){n.snv.badlines.push([e,"missing amino acid change",r]);return}}else{if(o.mname.indexOf("p.")==0){o.mname=o.mname.replace(/^p\./,"")}}if(!o.class){n.snv.badlines.push([e,"missing mutation class",r]);return}let i=n.mclasslabel2key[o.class.toUpperCase()];if(i){o.class=i}else{i=aa(o.class);if(i){o.class=i}else{n.snv.badlines.push([e,"wrong mutation class: "+o.class,r]);return}}if(ff(o,n,e,r,n.snv.badlines)){return}if(!o.chr){n.snv.badlines.push([e,"missing chromosome",r]);return}if(o.chr.toLowerCase().indexOf("chr")!=0){o.chr="chr"+o.chr}if(!o.pos){n.snv.badlines.push([e,"missing chromosome position",r]);return}const s=Number.parseInt(o.pos);if(Number.isNaN(s)){n.snv.badlines.push([e,"invalid chromosome position",r]);return}o.pos=s-1;if(o.maf_tumor_v2!=undefined&&o.maf_tumor_v1!=undefined){if(o.maf_tumor_v2=="");else{let t=Number.parseInt(o.maf_tumor_v1),i=Number.parseInt(o.maf_tumor_v2);if(Number.isNaN(t)||Number.isNaN(i)){n.snv.badlines.push([e,"invalid maf_tumor mutant and/or total read count",r]);return}o.maf_tumor={f:t/i,v1:t,v2:i}}delete o.maf_tumor_v1;delete o.maf_tumor_v2}if(o.maf_normal_v1!=undefined&&o.maf_normal_v2!=undefined){if(o.maf_normal_v2=="");else{let t=Number.parseInt(o.maf_normal_v1),i=Number.parseInt(o.maf_normal_v2);if(Number.isNaN(t)||Number.isNaN(i)){n.snv.badlines.push([e,"invalid maf_normal mutant and/or total read count",r]);return}o.maf_normal={f:t/i,v1:t,v2:i}}delete o.maf_normal_v1;delete o.maf_normal_v2}n.good++;if(o.class=="M"){n.snv.missense++}else if(o.class=="S"){n.snv.silent++}const a=n.geneToUpper?o.gene.toUpperCase():o.gene;if(!n.data[a]){n.data[a]=[]}o.dt=Ps;n.data[a].push(o)}function pf(e,t,n){const r=e.toLowerCase().split("\t");if(r.length<=1)return"invalid file header for fusions";const o=(...e)=>{for(const t of e){const e=r.indexOf(t);if(e!=-1)return e}return-1};let i=o("gene_a","gene1","genea");if(i==-1)return"gene_a missing from header";r[i]="gene1";i=o("gene_b","gene2","geneb");if(i==-1)return"gene_b missing from header";r[i]="gene2";i=o("chr_a","chr1","chra");if(i==-1)return"chr_a missing from header";r[i]="chr1";i=o("chr_b","chr2","chrb");if(i==-1)return"chr_b missing from header";r[i]="chr2";i=o("pos_a","position_a","position1","posa");if(i==-1)return"pos_a missing from header";r[i]="position1";i=o("pos_b","position_b","position2","posb");if(i==-1)return"pos_b missing from header";r[i]="position2";i=o("isoform_a","refseq_a","refseq1","isoform1","sv_refseqa");if(i==-1)return"isoform_a missing from header";r[i]="isoform1";i=o("isoform_b","refseq_b","refseq2","isoform2","sv_refseqb");if(i==-1)return"isoform_b missing from header";r[i]="isoform2";i=o("strand_a","orta");if(i==-1)return"strand_a missing from header";r[i]="strand1";i=o("strand_b","ortb");if(i==-1)return"strand_b missing from header";r[i]="strand2";i=o("sample","sample_name","tumor_sample_barcode");if(i!=-1)r[i]="sample";i=o("patient","donor","target_case_id");if(i!=-1)r[i]="patient";i=o("sampletype","sample type","sample_type");if(i!=-1)r[i]="sampletype";i=o("disease");if(i!=-1)r[i]="disease";i=o("origin");if(i!=-1)r[i]="origin";if(n){t.sv.loaded=true;t.sv.header=r}else{t.fusion.loaded=true;t.fusion.header=r}return false}function hf(e,t,n,r){if(t==""||t[0]=="#")return;const o=t.split("\t");const i={};const s=r?n.sv.header:n.fusion.header;const a=r?n.sv.badlines:n.fusion.badlines;for(let e=0;e<s.length;e++){i[s[e]]=o[e]}if(!i.chr1){a.push([e,"missing chr1",o]);return}if(i.chr1.toLowerCase().indexOf("chr")!=0){i.chr1="chr"+i.chr1}if(!i.chr2){a.push([e,"missing chr2",o]);return}if(i.chr2.toLowerCase().indexOf("chr")!=0){i.chr2="chr"+i.chr2}let l=i.position1;if(!l){a.push([e,"missing position1",o]);return}let c=Number.parseInt(l);if(Number.isNaN(c)||c<=0){a.push([e,"invalid value for position1",o]);return}i.position1=c;l=i.position2;if(!l){a.push([e,"missing position2",o]);return}c=Number.parseInt(l);if(Number.isNaN(c)||c<=0){a.push([e,"invalid value for position2",o]);return}i.position2=c;if(ff(i,n,e,o)){return}if(i.isoform1&&i.isoform1.indexOf(",")!=-1){const e=i.isoform1.split(",");i.isoform1=undefined;for(const t of e){if(t!="")i.isoform1=t}}if(i.isoform2&&i.isoform2.indexOf(",")!=-1){const e=i.isoform2.split(",");i.isoform2=undefined;for(const t of e){if(t!="")i.isoform2=t}}if(!i.gene1){i.isoform1=undefined}if(!i.gene2){i.isoform2=undefined}if(i.gene1){n.good++;const e={dt:r?Bs:qs,class:r?ca:la,isoform:i.isoform1,mname:i.gene2||i.chr2,sample:i.sample,patient:i.patient,sampletype:i.sampletype,origin:i.origin,disease:i.disease,pairlst:[{a:{name:i.gene1,isoform:i.isoform1,strand:i.strand1,chr:i.chr1,position:i.position1},b:{name:i.gene2,isoform:i.isoform2,strand:i.strand2,chr:i.chr2,position:i.position2}}]};const t=n.geneToUpper?i.gene1.toUpperCase():i.gene1;if(!n.data[t]){n.data[t]=[]}n.data[t].push(e)}if(i.gene2&&i.gene2!=i.gene1){n.good++;const e={dt:r?Bs:qs,class:r?ca:la,isoform:i.isoform2,mname:i.gene1||i.chr1,sample:i.sample,patient:i.patient,sampletype:i.sampletype,origin:i.origin,disease:i.disease,pairlst:[{a:{name:i.gene1,isoform:i.isoform1,strand:i.strand1,chr:i.chr1,position:i.position1},b:{name:i.gene2,isoform:i.isoform2,strand:i.strand2,chr:i.chr2,position:i.position2}}]};const t=n.geneToUpper?i.gene2.toUpperCase():i.gene2;if(!n.data[t]){n.data[t]=[]}n.data[t].push(e)}}function mf(e){const t={};for(const n in e){if(n=="pairlst")continue;const r=e[n];const o=typeof r;if(o=="object"){continue}t[n]=r}if(e.pairlst){t.pairlst=[];for(const n of e.pairlst){const e={};for(const t in n){if(t=="a"||t=="b"||t=="interstitial"){continue}e[t]=n[t]}if(n.a){e.a={};for(const t in n.a){const r=n.a[t];if(typeof r=="object"){continue}e.a[t]=r}}if(n.b){e.b={};for(const t in n.b){const r=n.b[t];if(typeof r=="object"){continue}e.b[t]=r}}if(n.interstitial){e.interstitial={};for(const t in n.interstitial){const r=n.interstitial[t];if(typeof r=="object"){continue}e.interstitial[t]=r}}t.pairlst.push(e)}}return t}function gf(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid file header for svjson";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("sample");if(o!=-1)n[o]="sample";o=r("sampletype");if(o!=-1)n[o]="sampletype";o=r("patient");if(o!=-1)n[o]="patient";o=r("json","jsontext");if(o==-1)return["json missing from header"];n[o]="jsontext";return[null,n]}function bf(e,t,n,r){if(t==""||t[0]=="#")return;const o=t.split("\t");const i={};const s=n.svjson.badlines;for(let e=0;e<r.length;e++){i[r[e]]=o[e]}if(!i.jsontext){s.push([e,"missing jsontext",o]);return}if(ff(i,n,e,o)){return}let a;try{a=JSON.parse(i.jsontext)}catch(t){s.push([e,"invalid JSON text",o]);return}if(Array.isArray(a)){for(const e of a){if(e.a&&e.a.name&&e.a.isoform){n.good++;const t={dt:qs,class:la,isoform:e.a.isoform,mname:e.b.name};for(const e in i){if(e!="jsontext")t[e]=i[e]}t.pairlst=yf(a);const r=e.a.name.toUpperCase();if(!n.data[r]){n.data[r]=[]}n.data[r].push(t)}if(e.b&&e.b.name&&e.b.isoform){n.good++;const t={dt:qs,class:la,isoform:e.b.isoform,mname:e.a.name};for(const e in i){if(e!="jsontext")t[e]=i[e]}t.pairlst=yf(a);const r=e.b.name.toUpperCase();if(!n.data[r]){n.data[r]=[]}n.data[r].push(t)}}}else{a.dt=a.typecode;delete a.typecode;switch(a.dt){case Vs:a.class=Qs;a.mname="ITD";break;case Js:a.class=ta;a.mname="N-loss";break;case Ys:a.class=na;a.mname="C-loss";break;case Hs:a.class=ea;a.mname="Del";break;case Bs:a.class=ca;a.mname="SV";break;default:s.push([e,"unknown datatype",o]);return}if(!a.gene){s.push([e,"json.gene missing",o]);return}n.good++;for(const e in i){if(e!="jsontext"){a[e]=i[e]}}const t=n.geneToUpper?a.gene.toUpperCase():a.gene.toUpperCase();if(!n.data[t]){n.data[t]=[]}n.data[t].push(a)}}function yf(e){const t=[];for(const n of e){const e={a:{},b:{}};for(const t in n){if(t!="a"&&t!="b")e[t]=n[t]}for(const t in n.a){e.a[t]=n.a[t]}for(const t in n.b){e.b[t]=n.b[t]}t.push(e)}return t}function vf(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid file header for CNV";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("gene");if(o==-1)return"gene missing from header";n[o]="gene";o=r("cnv");if(o==-1)return"CNV missing from header";n[o]="cnv";o=r("sample","sample_name","tumor_sample_barcode");if(o!=-1)n[o]="sample";o=r("patient","donor","target_case_id");if(o!=-1)n[o]="patient";o=r("disease");if(o!=-1)n[o]="disease";o=r("origin");if(o!=-1)n[o]="origin";o=r("sampletype","sample type","sample_type");if(o!=-1)n[o]="sampletype";t.cnv.header=n;t.cnv.loaded=true;return false}function wf(e,t,n){if(t==""||t[0]=="#")return;const r=t.split("\t");const o={};for(let e=0;e<n.cnv.header.length;e++){o[n.cnv.header[e]]=r[e]}if(!o.gene){n.cnv.badlines.push([e,"missing gene",r]);return}if(!o.cnv){n.cnv.badlines.push([e,"missing cnv value",r]);return}const i=o.cnv.toLowerCase();switch(i){case"amplification":case"gain":o.class=fa;break;case"deletion":case"loss":o.class=da;break;case"loh":o.class=ua;break;default:n.cnv.badlines.push([e,"invalid cnv value: "+o.cnv,r]);o.class=null}if(!o.class){return}if(ff(o,n,e,r,n.cnv.badlines)){return}o.dt=Gs;n.good++;const s=n.geneToUpper?o.gene.toUpperCase():o.gene;if(!(s in n.data)){n.data[s]=[]}n.data[s].push(o)}function _f(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid header line for ITD";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("gene");if(o==-1)return"gene missing from header";n[o]="gene";o=r("annovar_isoform","mrna_accession","mrna accession","refseq_mrna_id","annovar_sj_filter_isoform","refseq","isoform");if(o==-1)return"isoform missing from header";n[o]="isoform";o=r("rnaposition");if(o!=-1){n[o]="rnaposition";o=r("rnaduplength");if(o==-1)return"rnaduplength is required when rnaposition is present";n[o]="rnaduplength"}o=r("chromosome","chr");if(o!=-1){n[o]="chr";o=r("chr_start");if(o==-1)return"chr_start is required when chr is present";n[o]="chrpos1";o=r("chr_stop");if(o==-1)return"chr_stop is required when chr is present";n[o]="chrpos2"}o=r("sample","sample_name","tumor_sample_barcode");if(o!=-1)n[o]="sample";o=r("patient","donor","target_case_id");if(o!=-1)n[o]="patient";o=r("disease");if(o!=-1)n[o]="disease";o=r("origin");if(o!=-1)n[o]="origin";o=r("sampletype","sample type","sample_type");if(o!=-1)n[o]="sampletype";t.itd.header=n;t.itd.loaded=true;return false}function xf(e,t,n){if(t==""||t[0]=="#")return;const r=t.split("\t");const o={};for(let e=0;e<n.itd.header.length;e++){if(r[e]==undefined)break;o[n.itd.header[e]]=r[e]}if(!o.gene){n.itd.badlines.push([e,"missing gene",r]);return}if(o.rnaposition){let t=Number.parseInt(o.rnaposition);if(Number.isNaN(t)||t<0){n.itd.badlines.push([e,"invalid rnaPosition value",r]);return}o.rnaposition=t;if(!o.rnaduplength){n.itd.badlines.push([e,"missing rnaDuplength value",r]);return}t=Number.parseInt(o.rnaduplength);if(Number.isNaN(t)||t<0){n.itd.badlines.push([e,"invalid rnaDuplength value",r]);return}o.rnaduplength=t}if(o.chr){let t=Number.parseInt(o.chrpos1);if(Number.isNaN(t)||t<0){n.itd.badlines.push([e,"invalid chr_start value",r]);return}o.chrpos1=t;t=Number.parseInt(o.chrpos2);if(Number.isNaN(t)||t<0){n.itd.badlines.push([e,"invalid chr_stop value",r]);return}o.chrpos2=t}if(ff(o,n,e,r,n.itd.badlines)){return}o.dt=Vs;o.class=Qs;o.mname="ITD";n.good++;var i=n.geneToUpper?o.gene.toUpperCase():o.gene;if(!(i in n.data)){n.data[i]=[]}n.data[i].push(o)}function kf(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid header line for intragenic deletion";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("gene");if(o==-1)return"gene missing from header";n[o]="gene";o=r("annovar_isoform","mrna_accession","mrna accession","refseq_mrna_id","annovar_sj_filter_isoform","refseq","isoform");if(o==-1)return"isoform missing from header";n[o]="isoform";o=r("rnaposition");if(o!=-1){n[o]="rnaposition";o=r("rnadellength");if(o==-1)return"rnadellength is required when rnaPosition is used";n[o]="rnadellength"}o=r("chromosome","chr");if(o!=-1){n[o]="chr";o=r("chr_start");if(o==-1)return"chr_start is required when chr is used";n[o]="chrpos1";o=r("chr_stop");if(o==-1)return"chr_stop is required when chr is used";n[o]="chrpos2"}o=r("sample","sample_name","tumor_sample_barcode");if(o!=-1)n[o]="sample";o=r("patient","donor","target_case_id");if(o!=-1)n[o]="patient";o=r("disease");if(o!=-1)n[o]="disease";o=r("origin");if(o!=-1)n[o]="origin";o=r("sampletype","sample type","sample_type");if(o!=-1)n[o]="sampletype";t.del.header=n;t.del.loaded=true;return false}function jf(e,t,n){if(t==""||t[0]=="#")return;const r=t.split("\t");const o={};for(let e=0;e<n.del.header.length;e++){if(r[e]==undefined)break;o[n.del.header[e]]=r[e]}if(!o.gene){n.del.badlines.push([e,"missing gene",r]);return}if(o.rnaposition){let t=Number.parseInt(o.rnaposition);if(Number.isNaN(t)||t<0){n.del.badlines.push([e,"invalid rnaPosition value",r]);return}o.rnaposition=t;if(!o.rnadellength){n.del.badlines.push([e,"missing rnaDellength value",r]);return}t=Number.parseInt(o.rnadellength);if(Number.isNaN(t)||t<0){n.del.badlines.push([e,"invalid rnaDellength value",r]);return}o.rnadellength=t}if(o.chr){let t=Number.parseInt(o.chrpos1);if(Number.isNaN(t)||t<0){n.del.badlines.push([e,"invalid chr_start value",r]);return}o.chrpos1=t;t=Number.parseInt(o.chrpos2);if(Number.isNaN(t)||t<0){n.del.badlines.push([e,"invalid chr_stop value",r]);return}o.chrpos2=t}if(ff(o,n,e,r,n.del.badlines)){return}o.dt=Hs;o.class=ea;o.mname="DEL";n.good++;var i=n.geneToUpper?o.gene.toUpperCase():o.gene;if(!(i in n.data)){n.data[i]=[]}n.data[i].push(o)}function Nf(e,t){const n=e.toLowerCase().split("\t");if(n.length<=1)return"invalid header line for truncation";const r=(...e)=>{for(const t of e){const e=n.indexOf(t);if(e!=-1)return e}return-1};let o=r("gene");if(o==-1)return"gene missing from header";n[o]="gene";o=r("annovar_isoform","mrna_accession","mrna accession","refseq_mrna_id","annovar_sj_filter_isoform","refseq","isoform");if(o==-1)return"isoform missing from header";n[o]="isoform";let i=false;o=r("rnaposition");if(o!=-1){n[o]="rnaposition";i=true}o=r("losstype");if(o==-1)return"lossType missing from header";n[o]="losstype";let s=false;o=r("chromosome","chr");if(o!=-1){n[o]="chr";o=r("start","start_position","wu_hg19_pos","chr_position","position");if(o==-1){return"genomic position missing from header"}n[o]="pos";s=true}if(!i&&!s){return"neither rnaposition nor genomic position is given"}o=r("sample","sample_name","tumor_sample_barcode");if(o!=-1)n[o]="sample";o=r("patient","donor","target_case_id");if(o!=-1)n[o]="patient";o=r("disease");if(o!=-1)n[o]="disease";o=r("origin");if(o!=-1)n[o]="origin";o=r("sampletype","sample type","sample_type");if(o!=-1)n[o]="sampletype";t.truncation.header=n;t.truncation.loaded=true;return false}function Cf(e,t,n){if(t==""||t[0]=="#")return;const r=t.split("\t");const o={};for(let e=0;e<n.truncation.header.length;e++){o[n.truncation.header[e]]=r[e]}if(!o.gene){n.truncation.badlines.push([e,"missing gene",r]);return}if(o.rnaposition){const t=Number.parseInt(o.rnaposition);if(Number.isNaN(t)||t<0){n.truncation.badlines.push([e,"invalid rnaPosition value",r]);return}o.rnaposition=t}if(o.pos){const t=Number.parseInt(o.pos);if(Number.isNaN(t)||t<0){n.truncation.badlines.push([e,"invalid genomic position",r]);return}o.pos=t}if(!o.losstype){n.truncation.badlines.push([e,"missing lossType value",r]);return}if(o.losstype!="n"&&o.losstype!="c"){n.truncation.badlines.push([e,'lossType value not "n" or "c"',r]);return}if(ff(o,n,e,r,n.truncation.badlines)){return}if(o.losstype=="n"){o.dt=Js;o.class=ta;o.mname="N-loss"}else{o.dt=Ys;o.class=na;o.mname="C-loss"}n.good++;const i=n.geneToUpper?o.gene.toUpperCase():o.gene;if(!(i in n.data)){n.data[i]=[]}n.data[i].push(o)}const Af=["heatmapJSON","piebarJSON","survivalJSON","discoJSON","riverJSON"];const Sf={snvindel:0,si:0,sv:1,fusion:2,itd:3,deletion:4,truncation:5,cnv:6};let Mf=false;class Of{constructor(e){this.bt=e;this.err=this.errHandler();if(!Mf){const e=If();if(e.project){this.getData(e.project);Mf=true}}if(e.filediv){this.projectByInput(e.filediv)}}processData(e){const t=e.files.pop();const n=e.expectedFileNames.indexOf(t.name);if(n==-1){if(e.files.length)setTimeout((()=>{this.processData(e)}),1);return}e.expectedFileNames.splice(n,1);this.cohort={name:"project",genome:this.bt.genomes[this.bt.gselect.options[this.bt.gselect.selectedIndex].innerHTML]};if(!this.flag){this.flag=this.bt.init_bulk_flag(this.cohort.genome)}const r=this.bt.content2flag(t.content,t.type,this.flag);if(r){this.err(r);this.processData(e)}else if(!e.files.length){if(e.expectedFileNames.length){this.err('These referenced files were not found: "'+e.expectedFileNames.join('", "')+'".')}this.bt.flag2tp(this.flag,{name:"project"},Object.assign(this.cohort,e.schema),this.ds);return}else{if(!this.ds){for(const e in this.cohort.dsset){this.ds=this.cohort.dsset[e];break}}const n=this.bt.bulkin({flag:this.flag,cohort:this.cohort,flag2thisds:this.ds,filename:"project"},(()=>{this.processData(e)}));if(n){this.err("Error with "+t.name+": "+n);return}if(this.flag.good===0){this.err(t.name+": no data loaded");return}}}getData(e){const[t,n]=e.split("/");const r=n&&n.trim()?n.trim():"ref.txt";this.gettext("/data/projects/"+t+"/"+r,(e=>{const n={};const r={};const o={schema:{},files:[],expectedFileNames:[]};let i=0;e.trim().split("\n").forEach((e=>{const[t,o]=e.trim().split("\t");if(Af.includes(t)){r[o]=t;i+=1}else if(!Sf[t]&&Sf[t]!==0){this.err("Unrecognized type "+t+" for file "+o+" in reference.txt.")}else{n[o]=Sf[t];i+=1}}));o.expectedFileNames=Object.keys(n);const s=this.getTracker(i,(()=>this.processData(o)));Object.keys(r).forEach((e=>{this.getjson("/data/projects/"+t+"/"+e,(t=>{o.schema[r[e]]=t;s()}))}));Object.keys(n).forEach((e=>{this.gettext("/data/projects/"+t+"/"+e,(t=>{o.files.push({name:e,type:n[e],content:t});s()}))}))}))}gettext(e,t){fetch(e).then((t=>{if(t.ok)return t.text();else this.err("File request error: "+e)})).then(t).catch((t=>this.err("File request error: "+e+" "+t)))}getjson(e,t){fetch(e).then((t=>{if(t.ok)return t.json();else this.err("Network error for "+e)})).then(t).catch((t=>this.err("file request error: "+e+" "+t)))}getTracker(e,t){let n=0;return function r(){n+=1;if(n==e){t()}}}projectByInput(e){this.tp=null;const t=e.append("div");t.append("span").html("Project: reference ");this.refNameInput=t.append("input").attr("type","text").property("value","ref.txt").style("margin-right","20px").style("padding-left","7px");t.append("label").attr("for","sja-pp-bulk-ui-project-btn").attr("class","sja_btn").style("padding","3px 5px").html("Choose folder");t.append("input").attr("type","file").attr("id","sja-pp-bulk-ui-project-btn").property("multiple",true).property("webkitdirectory",true).property("directory",true).on("change",(e=>this.readFiles(e)));t.append("div").style("margin","10px 10px 10px 0").html(`<a href="https://docs.google.com/document/d/1wlfGzyhxFYtWu9Fyf3FK7pgvS3rVb9_vrfYUBUOUrw4/edit?usp=sharing" target="new">Project user guide</a> | \n\t\t\t<a href='https://proteinpaint.stjude.org/ppdemo/projects/target-tall-project/ref.txt' target=_blank>Example project reference file</a>`);t.append("div").style("margin","20px").style("width","100%").html("-- OR --")}readFiles(e){const t=this;const n=t.refNameInput.property("value");const r=Array.from(e.target.files);const o=r.filter((e=>e.name==n))[0];if(!o){t.err("Missing reference file='"+n+"'.");return}const i={};const s={};const a={schema:{},files:[],expectedFileNames:[]};const l=new FileReader;let c="";let f=0;l.onload=e=>{e.target.result.trim().split("\n").forEach((e=>{const[n,r]=e.trim().split("\t");if(Af.includes(n)){s[r]=n}else if(!Sf[n]&&Sf[n]!==0){t.err("Unrecognized type "+n+" for file "+r+" in reference.txt.")}else{i[r]=Sf[n]}}));a.expectedFileNames=Object.keys(i);const n=r.filter((e=>e.name in s));let o=0;if(!n.length){r.forEach(l)}else{n.forEach((e=>{const i=new FileReader;i.onload=i=>{const c=JSON.parse(i.target.result);o+=1;if(!c){t.err('Unable to parse schema file="'+e.name+'".')}else{a.schema[s[e.name]]=c}if(o==n.length){r.forEach(l)}};i.onerror=()=>{t.err("Error reading schema.txt.")};i.readAsText(e,"utf8")}))}function l(e){if(!a.expectedFileNames.includes(e.name)){f+=1;return}if(!e){t.err("Error reading file.");f+=1;return}if(e.size==0){t.err("Wrong file: "+e.name);f+=1;return}if(!i[e.name]&&i[e.name]!==0&&e.name!=c){t.err("Missing or invalid type assigned to file "+e.name+".");f+=1;return}const n=new FileReader;n.onload=n=>{f+=1;a.files.push({name:e.name,type:i[e.name],content:n.target.result});if(f==r.length){t.processData(a)}};n.onerror=()=>{f+=1;t.err("Error reading file "+e.name);if(f==r.length){t.processData(a)}};n.readAsText(e,"utf8")}};l.onerror=()=>{t.err("Error reading reference.txt.")};l.readAsText(o,"utf8")}errHandler(){const e=ot("body").append("div");return function(t){if(!t)return;Nc(e,t)}}}function If(){const e={};window.location.search.substr(1).split("&").forEach((t=>{const[n,r]=t.split("=");e[n]=r}));return e}const Ef="root";const Tf="...";function Lf(e,t){const n=Object.create(null);const r=Object.create(null);const o=Object.create(null);for(const i of e){for(const[e,s]of t.entries()){const a=zf(i,e,t);const l=zf(i,e-1,t);if(!i[s.k]){if(e>0){o[l]+=1}break}n[a]=l;if(!(a in o)){o[a]=0}if(!(a in r)){const n={lst:[]};if(s.full){n.full=i[s.full]}n.id0=t[0].k;n.v0=i[t[0].k];if(e==1){n.id1=t[1].k;n.v1=i[t[1].k]}if(e==2){n.id2=t[2].k;n.v1=i[t[2].k]}r[a]=n}r[a].lst.push(i);if(e==t.length-1){o[a]+=1}}}const i=[{id:Ef,name:Ef}];for(const e in n){const t=n[e];const s=r[e];const a=e.split(Tf);i.push({id:e,parentId:t,lst:s.lst,value:o[e],name:a[a.length-1],full:s.full,id0:s.id0,v0:s.v0,id1:s.id1,v1:s.v1,id2:s.id2,v2:s.v2})}return i}function zf(e,t,n){const r=[Ef];for(let o=0;o<t;o++){r.push(e[n[o].k])}if(t>=0){r.push(e[n[t].k])}return r.join(Tf)}function Rf(e){const t={id2vcf:{},label:e.name||"Unnamed VCF file"};let n;if(e.file){const r=Math.random().toString();n={file:e.file,indexURL:e.indexURL,vcfid:r};t.id2vcf[r]=n}else if(e.url){const r=Math.random().toString();n={url:e.url,indexURL:e.indexURL,vcfid:r};t.id2vcf[r]=n}else{return["no .file or .url"]}n.headernotloaded=true;if(e.samplenamemap){n.samplenamemap=e.samplenamemap}if(e.variant2img){if(!e.variant2img.path)return[".path missing from .variant2img{}"]}const r={type:vc.ds,isvcf:true,name:t.label,ds:t,populationfrequencyfilter:e.populationfrequencyfilter,vcfinfofilter:e.vcfinfofilter,itemlabelname:e.itemlabelname,viewrangeupperlimit:e.viewrangeupperlimit,variant2img:e.variant2img,axisheight:e.axisheight};if(e.url4variant){const t=Uf(e.url4variant);if(t)return[".url4variant error: "+t];r.url4variant=e.url4variant}if(e.button4variant){const t=$f(e.button4variant);if(t)return[".button4variant error: "+t];r.button4variant=e.button4variant}if(e.sampleannotation){const t=e.sampleannotation;if(!t.annotation)return[".annotation{} missing from .sampleannotation"];if(t.levels){if(!Array.isArray(t.levels))return[".sampleannotation.levels should be array"];const e=[];for(const n in t.annotation){const r={sample_name:n};for(const e in t.annotation[n]){r[e]=t.annotation[n][e]}e.push(r)}const n=Lf(e,t.levels);t.root=_s()(n);t.root.sum((e=>e.value))}if(t.variantsunburst){if(!t.levels)return[".levels missing when .variantsunburst is on from .sampleannotation"]}r.ds.cohort=t}if(e.vcfcohorttrack){if(!e.vcfcohorttrack.file&&!e.vcfcohorttrack.url)return["no .file or .url provided from .vcfcohorttrack"];r.ds.vcfcohorttrack=e.vcfcohorttrack}if(e.germline2dvafplot){if(!e.germline2dvafplot.individualkey)return[".individualkey missing from germline2dvafplot"];if(!e.germline2dvafplot.sampletypekey)return[".sampletypekey missing from germline2dvafplot"];if(!e.germline2dvafplot.xsampletype)return[".xsampletype missing from germline2dvafplot"];if(!e.germline2dvafplot.yleftsampletype)return[".yleftsampletype missing from germline2dvafplot"];if(e.germline2dvafplot.yrightsampletype){if(e.germline2dvafplot.yrightsampletype==e.germline2dvafplot.yleftsampletype)return[".yrightsampletype should not be same as yleftsampletype"]}r.ds.germline2dvafplot=e.germline2dvafplot}if(e.vaf2coverageplot){if(e.vaf2coverageplot.categorykey){if(!e.vaf2coverageplot.categories)return[".categories missing when .categorykey is in use for .vaf2coverageplot"]}r.ds.vaf2coverageplot=e.vaf2coverageplot}if(e.genotype2boxplot){if(e.genotype2boxplot.boxplotvaluekey);else if(e.genotype2boxplot.sampleannotationkey){if(!r.ds.cohort)return["sampleannotation missing when using genotype2boxplot.sampleannotationkey"];if(!r.ds.cohort.annotation)return["sampleannotation.annotation missing when using genotype2boxplot.sampleannotationkey"];let t=false;for(const n in r.ds.cohort.annotation){if(e.genotype2boxplot.sampleannotationkey in r.ds.cohort.annotation[n]){t=true;break}}if(!t)return[e.genotype2boxplot.sampleannotationkey+" not found in any sample annotation"]}else{return["incomplete instruction for genotype2boxplot"]}r.ds.genotype2boxplot=e.genotype2boxplot}if(e.discardsymbolicallele){r.ds.discardsymbolicallele=true}if(e.samplebynumericvalue){if(!e.samplebynumericvalue.attrkey)return["attrkey missing from samplebynumericvalue"];if(!r.ds.cohort)return["sampleannotation missing when using samplebynumericvalue"];if(!r.ds.cohort.annotation)return["sampleannotation.annotation missing when using samplebynumericvalue"];let t=false;for(const n in r.ds.cohort.annotation){if(Number.isFinite(r.ds.cohort.annotation[n][e.samplebynumericvalue.attrkey])){t=true;break}}if(!t)return["samplebynumericvalue.attrkey not found in any sample annotation"];r.ds.samplebynumericvalue=e.samplebynumericvalue}{const t=e.genotypebynumericvalue;if(t){if(!t.refref)return[r.name+": refref missing from genotypebynumericvalue"];if(!t.refalt)return[r.name+": refalt missing from genotypebynumericvalue"];if(!t.altalt)return[r.name+": altalt missing from genotypebynumericvalue"];if(!t.refref.infokey)return[r.name+": refref.infokey missing from genotypebynumericvalue"];if(!t.refalt.infokey)return[r.name+": refalt.infokey missing from genotypebynumericvalue"];if(!t.altalt.infokey)return[r.name+": altalt.infokey missing from genotypebynumericvalue"];if(t.refref.genotypeCountInfokey||t.refalt.genotypeCountInfokey||t.altalt.genotypeCountInfokey){if(!t.refref.genotypeCountInfokey)return[r.name+": genotypeCountInfokey missing from genotypebynumericvalue.refref{}"];if(!t.refalt.genotypeCountInfokey)return[r.name+": genotypeCountInfokey missing from genotypebynumericvalue.refalt{}"];if(!t.altalt.genotypeCountInfokey)return[r.name+": genotypeCountInfokey missing from genotypebynumericvalue.altalt{}"]}r.ds.genotypebynumericvalue=t}}if(e.pointdown){r.aboveprotein=false}if(e.dstk_novcferror){r.dstk_novcferror=true}return[null,r]}function Uf(e){if(!Array.isArray(e))return"value is not an array";for(const t of e){if(!t.makeurl){return".makeurl missing"}if(typeof t.makeurl!="function"){return".makeurl must be a function"}}return false}function $f(e){if(!Array.isArray(e))return"value is not an array";for(const t of e){if(!t.makebutton){return".makebutton missing"}if(typeof t.makebutton!="function"){return".makebutton must be a function"}}return false}function Ff(e,t,n,r){if(!e)return"no genome";if(!t)return"no chr name";const o=e.chrlookup[t.toUpperCase()];if(!o)return"Invalid chromosome name: "+o;if(!Number.isInteger(n))return"Non-numerical position: "+n;if(n<0||n>=o.len)return"Position out of range: "+n;if(!Number.isInteger(r))return"Non-numerical position: "+r;if(r<0||r>o.len)return"Position out of range: "+r;if(n>r)return"Start position is greater than stop";return false}function Pf(e,t,n){e=e.replace(/,/g,"");const r=t.chrlookup[e.toUpperCase()];if(r){return{chr:r.name,chrlen:r.len,start:Math.max(0,Math.ceil(r.len/2)-1e4),stop:Math.min(r.len,Math.ceil(r.len/2)+1e4)}}{const n=e.split(".");if(n.length>=2){const e=t.chrlookup[n[0].toUpperCase()];const r=Number.parseInt(n[1]);const o=Ff(t,n[0],r,r+1);if(!o){const t=400;return{chr:e.name,chrlen:e.len,start:Math.max(0,r-Math.ceil(t/2)),stop:Math.min(e.len,r+Math.ceil(t/2)),actualposition:{position:r,len:1}}}}}const o=e.split(/[-:\s]+/);if(o.length==2){const e=Number.parseInt(o[1]);const n=Ff(t,o[0],e,e+1);if(n){return null}const r=t.chrlookup[o[0].toUpperCase()];const i=400;return{chr:r.name,chrlen:r.len,start:Math.max(0,e-Math.ceil(i/2)),stop:Math.min(r.len,e+Math.ceil(i/2)),actualposition:{position:e,len:1}}}if(o.length==3){let e=Number.parseInt(o[1]),r=Number.parseInt(o[2]);const i=Ff(t,o[0],e,r);if(i){return null}const s={position:e,len:r-e};const a=t.chrlookup[o[0].toUpperCase()];if(!n){const t=400;if(r-e<t){let n=Math.ceil((e+r)/2);if(n+t/2>=a.len){n=a.len-Math.ceil(t/2)}e=Math.max(0,n-Math.ceil(t/2));r=e+t}}return{chr:a.name,chrlen:a.len,start:e,stop:r,actualposition:s}}return null}function qf(e,t,n=0){const r=t.strand=="-";const o={};if(e<t.start){if(r){o.atdownstream={off:t.start-e};o.rnapos=t.rnalen;if(t.cdslen){o.aapos=t.cdslen/3}}else{o.atupstream={off:t.start-e};o.rnapos=0;if(t.cdslen){o.aapos=0}}return o}if(e>=t.stop){if(r){o.atupstream={off:e-t.stop+1};o.rnapos=0;if(t.cdslen){o.aapos=0}}else{o.atdownstream={off:e-t.stop+1};o.rnapos=t.rnalen;if(t.cdslen){o.aapos=t.cdslen/3}}return o}if(e>=t.start&&e<t.stop){for(let i=0;i<t.exon.length;i++){const s=t.exon[i];if(r){if(s[1]+n<=e){o.atexon=i+1;o.atintron=i;break}if(s[0]-n<=e){o.atexon=i+1;break}}else{if(s[0]-n>e){o.atexon=i+1;o.atintron=i;break}if(s[1]+n>e){o.atexon=i+1;break}}}}let i=0;for(const n of t.exon){if(r){if(e>=n[1]){i+=.5;break}if(e<n[0]){i+=n[1]-n[0];continue}i+=n[1]-e;break}else{if(e<n[0]){i+=.5;break}if(e>=n[1]){i+=n[1]-n[0];continue}i+=e-n[0]+1;break}}o.rnapos=i;if(t.coding){let n=0;if(t.utr5){n=t.utr5.reduce(((e,t)=>e+t[1]-t[0]),0)}let s=0;if(t.utr3){s=t.utr3.reduce(((e,t)=>e+t[1]-t[0]),0)}if(i<=n){o.aapos=0}else if(i>n+t.cdslen){o.aapos=t.cdslen/3}else{o.aapos=Math.ceil((i-n)/3)}if(e<t.codingstart){let i=0;if(r){if(t.utr3){for(const n of t.utr3){i+=Math.max(n[1],e)-Math.max(n[0],e)}o.atutr3={total:s,off:i}}}else{if(t.utr5){for(const n of t.utr5){i+=Math.min(n[1],e)-Math.min(n[0],e)}o.atutr5={total:n,off:i}}}}else if(e>t.codingstop){let i=0;if(r){if(t.utr5){for(const n of t.utr5){i+=Math.max(n[1],e)-Math.max(n[0],e)}o.atutr5={total:n,off:i}}}else{if(t.utr3){for(const n of t.utr3){i+=Math.min(n[1],e)-Math.min(n[0],e)}o.atutr3={total:s,off:i}}}}}return o}function Df(e,t){if(!Number.isInteger(e))return null;if(!t.coding)return null;let n=0;for(const r of t.coding){if(n+r[1]-r[0]>=(e-1)*3){if(t.strand=="+"){return r[0]+(e-1)*3-n}return r[1]-1-((e-1)*3-n)}n+=r[1]-r[0]}if(t.strand=="+")return t.codingstop;return t.codingstart}function Gf(e,t){if(!Number.isFinite(e))return null;if(!t.exon)return null;let n=0;for(const r of t.exon){if(n+r[1]-r[0]>=e){if(t.strand=="+"){return r[0]+e-n}return r[1]-1-e+n}n+=r[1]-r[0]}if(t.strand=="+")return t.stop;return t.start}let Bf;function Vf(){if(window.sjcharts){return Promise.resolve(window.sjcharts)}else if(Bf){return Bf}else{Bf=new Promise(((e,t)=>{const n=window.location.hostname.split(".")[0];const r=["pp-test","pecan-test","ppr"].includes(n)?`${n}.stjude.org`:"proteinpaint.stjude.org";const o=`https://${r}/sjcharts/bin/sjcharts.js`;const i=document.createElement("script");i.setAttribute("type","text/javascript");i.setAttribute("src",o);document.getElementsByTagName("head")[0].appendChild(i);i.onload=()=>{e(window.sjcharts)};i.onerror=()=>{const e="Unable to load SJCharts from "+o;alert(e);t(e)}}));return Bf}}function Hf(e){if(!e.p2st){e.p2st={}}if(!e.assays){e.assays=[]}if(!Array.isArray(e.assays)){return".assays should be an array"}e.assaylst=[];let t=0;for(const n of e.assays){const r=e[n];if(!r){return'Assay "'+n+'" not found in cohort'}const o=r.config;if(!o){return'.config object missing for assay "'+n+'"'}delete r.config;if(!o.type){return'.config.type missing for assay "'+n+'"'}if(o.type.toLowerCase()=="vcf"){o.type=vc.ds;o.isvcf=true}else{if(!Sa(o.type)){return'unknown .config.type "'+o.type+'" for assay "'+n+'"'}}o.id=(++t).toString();if(!o.name){o.name=n}if(o.type==vc.junction){if(o.readcountcutoff){if(!Number.isInteger(o.readcountcutoff)||o.readcountcutoff<0){return'invalid .config.readcountcutoff for assay "'+n+'"'}}}e.assaylst.push(o);for(const t in r){if(!e.p2st[t]){e.p2st[t]={}}for(const i in r[t]){if(!e.p2st[t][i]){e.p2st[t][i]={tktemplate:[]}}if(o.type==vc.vafs1){for(const s in r[t][i]){const a=r[t][i][s];if(!a.file&&!a.url){return"no file or URL for "+s+" vafs1 of "+t+", "+i}a.type=vc.vafs1;a.patient=t;a.sampletype=i;a.assayname=n;a.id=o.id;a.tkid=Math.random().toString();if(!a.name){a.name=s+" vaf"}e.p2st[t][i].tktemplate.push(a)}continue}let s=[];if(Array.isArray(r[t][i])){s=r[t][i]}else{s.push(r[t][i])}for(const r of s){let s=r;if(!s.file&&!s.url){return"track has no file or url (sample: "+t+", assay: "+n+")"}if(s.name);else if(s.partname){s.name=t+(i==t?"":" "+i)+" "+n+" "+s.partname}else{s.name=t+(i==t?"":" "+i)+" "+n}if(o.isvcf){const[e,t]=Rf({name:s.name,file:s.file,url:s.url});if(e){return"VCF track error: "+e}s=t}else{if(s.type){if(!Sa(s.type)){return'invalid track type "'+s.type+'" (sample: '+t+", assay: "+n+")"}}else{s.type=o.type}}s.patient=t;s.sampletype=i;s.assayname=n;s.id=o.id;s.tkid=Math.random().toString();e.p2st[t][i].tktemplate.push(s);switch(o.type){case vc.bigwig:const e=Yf(s,o);if(e){return"Assay "+n+": "+o.type+" track error: "+e}break;case vc.junction:s.categories=o.categories;s.readcountcutoff=o.readcountcutoff;break}}}}}delete e.assays;{const t=Xf(e);if(t){return"Error: "+t}}if(e.patientannotation){const t=Zf(e);if(t)return t}if(e.browserview){const t=Wf(e);if(t)return t}if(e.e2pca){if(!e.e2pca.list)return".list missing from e2pca";if(!Array.isArray(e.e2pca.list))return"e2pca.list should be an array";if(e.e2pca.list.length==0)return"e2pca.list[] length 0";if(!e.e2pca.label){e.e2pca.label="Expression - PCA"}for(const t of e.e2pca.list){if(!t.vectorfile)return"vectorfile missing from e2pca";if(!t.dbfile)return"dbfile missing from e2pca"}}return}function Jf(e,t,n,r,o,i,s){const a=n.append("div").style("color","#858585");a.text("Loading "+t+" ...");return fetch(r+"/study",{method:"POST",body:JSON.stringify({file:t,jwt:o})}).then((e=>e.json())).then((l=>{if(!l){a.text("Server error!");return}if(l.error){a.text("Error loading study: "+l.error);return}const c=l.cohort;if(!c){a.text(".cohort missing");return}if(!c.genome){a.text("No genome specified in the cohort JSON content");return}const f=e[c.genome];if(!f){a.text("Invalid genome from cohort: "+c.genome);return}c.genome=f;c.jwt=o;if(!l.flagset){a.text(".flagset missing");return}a.text("");c.dsset={};for(const e in l.flagset){const n=l.flagset[e];n.genome=f;ld({flag:n,filename:t,cohort:c,err:e=>Nc(a,e)})}const d=Hf(c);if(d){Nc(a,d)}if(!i){return import("./tp.ui-f01b186b.js").then((function(e){return e.t})).then((async e=>{Vf().catch(console.error);e.default(c,n,r,s);return s}))}}))}function Yf(e,t){if(!t){t={}}if(!e.file&&!e.url){return"no file or url"}if(!e.pcolor){e.pcolor=t.pcolor||"#0066CC"}if(!e.pcolor2){e.pcolor2=t.pcolor2||"#CC0000"}if(!e.ncolor){e.ncolor=t.ncolor||"#FF850A"}if(!e.ncolor2){e.ncolor2=t.ncolor2||"#0A85FF"}if(!e.height){e.height=t.height||50}const n={};if(t.scale){for(const e in t.scale){n[e]=t.scale[e]}}if(e.scale){for(const t in e.scale){n[t]=e.scale[t]}}n.auto=true;if(Number.isFinite(n.min)&&Number.isFinite(n.max)){delete n.auto}else if(Number.isFinite(n.percentile)){delete n.auto}e.scale=n}function Xf(e){const t=[];for(const n in e.p2st){for(const r in e.p2st[n]){const o=e.p2st[n][r].tktemplate;if(!o)continue;for(const e of o){t.push(e)}}}if(e.browserview&&e.browserview.assays){for(const n in e.browserview.assays){const r=e.browserview.assays[n];if(r.combined&&r.combinetk){t.push(r.combinetk)}}}if(!e.genome.tkset){e.genome.tkset=[]}const n={name:e.name,tklst:t};if(e.trackfacets){if(!Array.isArray(e.trackfacets)){return".trackfacets is not an array"}const t=[];for(const n of e.trackfacets){if(!n.samples){return"trackfacets: .samples missing from facet "+n.name}if(!Array.isArray(n.samples)){return"trackfacets: .samples is not array from facet "+n.name}if(!n.assays){return"trackfacets: .assays missing from a facet "+n.name}if(!Array.isArray(n.assays)){return"trackfacets: .assays is not array from a facet "+n.name}t.push(n)}if(t.length){n.facetlst=t}}e.genome.tkset.push(n);return null}function Wf(e){if(e.browserview.position){let t;if(typeof e.browserview.position=="string"){t=Pf(e.browserview.position,e.genome);if(!t){return".browserview.position invalid value"}}else{t=e.browserview.position}const n=Ff(e.genome,t.chr,t.start,t.stop);if(n){return".browserview.position error: "+n}e.browserview.position=t}else{e.browserview.position={chr:e.genome.defaultcoord.chr,start:e.genome.defaultcoord.start,stop:e.genome.defaultcoord.stop}}if(e.browserview.assays){for(const t in e.browserview.assays){if(typeof e.browserview.assays[t]!="object"){e.browserview.assays[t]={}}const n=e.browserview.assays[t];for(const r of e.assaylst){if(r.name==t){n.assayobj=r;break}}if(!n.assayobj){console.log("missing assayobj for assayview of "+t);continue}if(n.sum_view){delete n.sum_view;n.combined=true}if(n.combined){const r={};for(const e in n.assayobj){r[e]=n.assayobj[e]}for(const e in n){if(e=="assayobj")continue;r[e]=n[e]}if(!r.name){r.name=t}r.tracks=[];for(const t in e.p2st){for(const o in e.p2st[t]){for(const i of e.p2st[t][o].tktemplate){if(i.id==n.assayobj.id){i.patient=t;i.sampletype=o;r.tracks.push(i)}}}}if(r.isvcf){r.ds={id2vcf:{},label:r.name};for(const e of r.tracks){for(const t in e.ds.id2vcf){e.__vcfobj=e.ds.id2vcf[t]}r.ds.id2vcf[e.__vcfobj.vcfid]=e.__vcfobj}}n.combinetk=r}}}if(e.browserview.defaultassaytracks){if(!Array.isArray(e.browserview.defaultassaytracks))return".browserview.defaultassaytracks must be array";for(let t=0;t<e.browserview.defaultassaytracks.length;t++){const n=e.browserview.defaultassaytracks[t];if(!n.assay)return".assay missing from .defaultassaytracks #"+(t+1);if(!e[n.assay])return"unknown assay name from .defaultassaytracks #"+(t+1)+": "+n.assay;if(!n.level1)return".level1 missing from .defaultassaytracks #"+(t+1);if(!e[n.assay][n.level1])return"level1 not exist in assay from .defaultassaytracks #"+(t+1)+": "+n.level1;if(n.level2){if(!e[n.assay][n.level1][n.level2])return"level2 not exist in assay from .defaultassaytracks #"+(t+1)+": "+n.level2}}}return null}function Zf(e){if(!e.patientannotation.annotation){return".patientannotation.annotation missing"}if(!e.patientannotation.metadata){return".patientannotation.metadata missing"}if(!Array.isArray(e.patientannotation.metadata)){return".patientannotation.metadata should be an array"}const t={};for(const n of e.patientannotation.metadata){if(n.key==undefined){return"patientannotation: key missing for a metadata term"}if(!n.values){return"patientannotation: values missing for metadata term "+n.key}if(!Array.isArray(n.values)){return"patientannotation: .values not an array for metadata term "+n.key}if(!n.label){n.label=n.key}t[n.key]={label:n.label,values:{}};const e=St(Cs);for(const r of n.values){if(r.key==undefined){return"key missing for an attribute of term "+n.key}if(!r.label){r.label=r.key}if(!r.color){r.color=e(r.key)}t[n.key].values[r.key]=r}}e.patientannotation.mdh=t;return null}const Kf={color:"#ccc"};const Qf={x:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(255,100,100)").style("opacity",.9).style("font-weight",700).style("font-size","18px").style("transform","rotate(-45deg)").style("cursor","pointer").html("⊕").on("click",t.handler),plus:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).style("font-size","18px").html("⊕").on("click",t.handler),combine:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).style("font-size","12px").style("color","rgb(100,100,255)").style("cursor","pointer").html("[]+[]").on("click",t.handler),divide:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).style("font-size","12px").style("color","rgb(100,100,255)").style("cursor","pointer").html("[÷]").on("click",t.handler),expand:(e,t)=>{const n="color"in t?t.color:"rgb(100,100,255)";return e.attr("aria-label",t.title).style("height","auto").style("color",n).style("opacity",.9).style("font-size","fontSize"in t?t.fontSize:"16px").style("padding","padding"in t?t.padding:"0 2px").style("display","display"in t?t.display:"inline-block").style("cursor","pointer").html(`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="${n}" class="bi bi-square" viewBox="0 0 16 16" >\n\t\t\t\t\t <path stroke='${n}' stroke-width='1' d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/>\n\t\t\t\t\t</svg>`).on("click",t.handler)},collapse:(e,t)=>{const n="color"in t?t.color:"rgb(100,100,255)";return e.attr("aria-label",t.title).style("height","auto").style("color",n).style("opacity",.9).style("font-size","fontSize"in t?t.fontSize:"16px").style("padding","padding"in t?t.padding:"0 2px").style("display","display"in t?t.display:"inline-block").style("cursor","pointer").html(`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="${n}" class="bi bi-dash-lg" viewBox="0 0 16 16">\n\t\t\t\t\t <path stroke='${n}' stroke-width='1' fill-rule="evenodd" d="M2 8a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11A.5.5 0 0 1 2 8Z"/>\n\t\t\t\t\t</svg>`).on("click",t.handler)},corner:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color",t.disabled?Kf.color:"rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("cursor","pointer").html("⇱").on("click",t.handler),left:(e,t)=>{const n=t.fill?t.fill:t.disabled?Kf.color:"rgb(100,100,255)";return e.attr("aria-label",t.title).style("padding","0 3px").style("color",t.disabled?Kf.color:"rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding","3px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<path d='M0,6L12,0L12,12Z' style='fill:${n}'></path>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler)},right:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding-top","3px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,0)'>\n\t\t\t\t\t<path d='M0,0L12,6L0,12Z' style='fill:rgb(100,100,255)'></path>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),up:(e,t)=>{const n=t.disabled?Kf.color:"rgb(100,100,255)";return e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).style("font-size","16px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<path d='M6,0L12,12L0,12Z' style='fill:${n}'></path>\n\t\t\t</svg>`).on("click",t.handler)},down:(e,t)=>{const n=t.disabled?Kf.color:"rgb(100,100,255)";return e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).style("font-size","16px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<path d='M0,0L12,0L6,12Z' style='fill:${n}'></path>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler)},updown:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","18px").style("font-weight",800).style("text-decoration","underline").style("cursor","pointer").html("⇵").on("click",t.handler),seHookArrow:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","18px").style("font-weight",800).style("cursor","pointer").html("⤥").on("click",t.handler),swHookArrow:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","18px").style("font-weight",800).style("cursor","pointer").html("⤦").on("click",t.handler),unlock:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("opacity",.9).html(`<svg width='12' height='12'>\n\t\t\t<g transform="scale(0.045)" fill="rgb(100,100,255)">\n\t\t\t\t<path d="m299.02 161.26h-185.84v-46.28c0-41.34 33.635-74.979 74.979-74.979 33.758 0 63.51 22.716 72.36 55.24 2.898 10.657 13.888 16.946 24.547 14.05 10.659-2.898 16.949-13.889 14.05-24.548-13.57-49.896-59.2-84.74-110.96-84.74-63.4 0-114.98 51.58-114.98 114.98v46.715c-9.06 1.902-15.888 9.952-15.888 19.571v175.05c0 11.03 8.972 20 20 20h221.73c11.03 0 20-8.972 20-20v-175.05c0-11.03-8.972-20-20-20"/>\n\t\t\t</g>\n\t\t</svg>`).on("click",t.handler),leftBorder:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding","3px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<path d='M1,6L11,1L11,11Z' style='stroke:rgb(100,100,255); stroke-width:1px; fill:#ececec'></path>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),leftCrossedOut:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding","3px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<path d='M1,6L11,1L11,11Z' style='stroke:rgb(100,100,255); stroke-width:1px; fill:#ececec'></path>\n\t\t\t\t\t<text x='3' y='10' style='font-size:12; fill:#f00; font-weight:bold'>X</text>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),filter:(e,t)=>{e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding","3px").style("cursor","pointer").on("click",t.handler);e.iconPath=e.append("svg").attr("width",16).attr("height",12).append("g").attr("transform","translate(8,1)").append("path").attr("d","M8,0L2,6L2,12L-2,12L-2,6L-8,0Z").style("fill","rgb(100,100,255)");return e},colorScale:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).html(`<svg width='12' height='12'>\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient id='`+t.linearGradientId+`'>\n\t\t\t\t\t\t<stop offset='0' stop-color='red'></stop>\n\t\t\t\t\t\t<stop offset='1' stop-color='blue'></stop>\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<rect x='0' y='1' width='10' height='10' fill='url(#`+t.linearGradientId+`)'></rect>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),bar:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("color","rgb(100,100,255)").style("opacity",.9).style("font-size","16px").style("padding","3px").style("cursor","pointer").html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<rect x='0' y='0' width='3' height='11' fill='rgb(100,100,255)'></rect>\n\t\t\t\t\t<rect x='4' y='6' width='3' height='5' fill='rgb(100,100,255)'></rect>\n\t\t\t\t\t<rect x='8' y='3' width='3' height='8' fill='rgb(100,100,255)'></rect>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),rect:(e,t)=>e.attr("aria-label",t.title).style("padding","0 3px").style("stroke","rgb(100,100,255)").style("fill","fill"in t?t.fill:"none").style("opacity",.9).html(`<svg width='12' height='12'>\n\t\t\t\t<g transform='translate(0,1)'>\n\t\t\t\t\t<rect x="0" y="1" width="10" height="10"></rect>\n\t\t\t\t</g>\n\t\t\t</svg>`).on("click",t.handler),text:(e,t)=>{const n=e.append("div").style("display","none");const r=n.append("input");r.attr("type","text").style("width",t.width+"px").style("margin","0 0 1px 2px").style("border","1px solid #aaa").style("border-spacing",0).style("height","21px").style("padding",0).style("background-color","#fff").style("cursor","pointer").on("change",t.handler).on("click.tphm2",(e=>e.stopPropagation()));n.append("button").style("margin",0).style("border-spacing",0).style("padding","2px").html("add").on("click",t.handler);return{wrapper:n,input:r}},html:(e,t)=>{select(e.node().parentNode).append("span").html(t.html);if(t.styles){for(const t in styles){e.style(t,styles[t])}}return e},restart:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-house-fill" viewBox="0 0 16 16">\n\t\t<path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z"/>\n\t\t<path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z"/>\n\t </svg>`;ed(e,r,n)},zoomIn:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-zoom-in" viewBox="0 0 16 16">\n\t<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>\n\t<path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>\n\t<path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5z"/>\n\t</svg>`;ed(e,r,n)},zoomOut:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-zoom-in" viewBox="0 0 16 16">\n\t\t<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>\n\t\t<path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>\n\t\t<path fill-rule="evenodd" d="M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z"/>\n\t </svg>`;ed(e,r,n)},lasso:(e,t)=>{const n={color:"black",width:18,height:18};const r=!t.enabled?"transparent":"rgb(207, 226, 243)";Object.assign(n,t);const o=`<button style="cursor:pointer;border:none;background-color:${r};"><svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-zoom-in" viewBox="0 0 16 16">\n\t\t<path d="M15.825.12a.5.5 0 0 1 .132.584c-1.53 3.43-4.743 8.17-7.095 10.64a6.067 6.067 0 0 1-2.373 1.534c-.018.227-.06.538-.16.868-.201.659-.667 1.479-1.708 1.74a8.118 8.118 0 0 1-3.078.132 3.659 3.659 0 0 1-.562-.135 1.382 1.382 0 0 1-.466-.247.714.714 0 0 1-.204-.288.622.622 0 0 1 .004-.443c.095-.245.316-.38.461-.452.394-.197.625-.453.867-.826.095-.144.184-.297.287-.472l.117-.198c.151-.255.326-.54.546-.848.528-.739 1.201-.925 1.746-.896.126.007.243.025.348.048.062-.172.142-.38.238-.608.261-.619.658-1.419 1.187-2.069 2.176-2.67 6.18-6.206 9.117-8.104a.5.5 0 0 1 .596.04zM4.705 11.912a1.23 1.23 0 0 0-.419-.1c-.246-.013-.573.05-.879.479-.197.275-.355.532-.5.777l-.105.177c-.106.181-.213.362-.32.528a3.39 3.39 0 0 1-.76.861c.69.112 1.736.111 2.657-.12.559-.139.843-.569.993-1.06a3.122 3.122 0 0 0 .126-.75l-.793-.792zm1.44.026c.12-.04.277-.1.458-.183a5.068 5.068 0 0 0 1.535-1.1c1.9-1.996 4.412-5.57 6.052-8.631-2.59 1.927-5.566 4.66-7.302 6.792-.442.543-.795 1.243-1.042 1.826-.121.288-.214.54-.275.72v.001l.575.575zm-4.973 3.04.007-.005a.031.031 0 0 1-.007.004zm3.582-3.043.002.001h-.002z"/>\n\t\t</svg></button>`;ed(e,o,n)},download:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-download" viewBox="0 0 16 16">\n\t\t<path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/>\n\t\t<path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/>\n\t </svg>`;e.html(r).on("click",t.handler).style("cursor","pointer")},help:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-question-circle" viewBox="0 0 16 16">\n\t\t<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>\n\t\t<path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z"/>\n\t </svg>`;ed(e,r,n)},search:(e,t)=>{const n={color:"black",width:18,height:18};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-search" viewBox="0 0 16 16">\n\t\t<path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/>\n\t </svg>`;ed(e,r,n)},crosshair:(e,t={})=>{const n={color:"black",width:18,height:18,d:2};const r=n.width;const o=n.height;const i=n.d;Object.assign(n,t);const s=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" style='vertical-align: middle'>\n\t\t\x3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --\x3e\n\t\t<path d="M${r/2},${i}L${r/2},${o-i}Z" stroke='${n.color}'/>\n\t\t<path d="M${i},${o/2}L${r-i},${o/2}Z" stroke='${n.color}'/>\n\t\t</svg>`;e.html(s).on("click",t.handler).style("cursor","pointer")},grab:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" viewBox="0 0 448 512">\n\t\t\x3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --\x3e\n\t\t<path transform='${n.transform}' d="M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z"/>\n\t\t</svg>`;e.html(r).style("cursor","pointer");if(t.handler)e.on("click",t.handler)},arrowPointer:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" viewBox="0 0 320 512">\n\t\t\x3c!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --\x3e\n\t\t<path transform='${n.transform}' d="M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z"/>\n\t\t</svg>`;e.html(r).style("cursor","pointer");if(t.handler)e.on("click",t.handler)},compare:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-copy" viewBox="0 0 16 16">\n \t\t<path d="M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/>\n\t\t</svg>`;ed(e,r,n)},table:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-copy" viewBox="0 0 16 16">\n \t\t\t<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z"/>\n\t\t</svg>`;ed(e,r,n)},pdf:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-copy" viewBox="0 0 16 16">\n \t\t\t<path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38.57.57 0 0 1-.238.241.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181.185.183.185.522m1.217-1.333v3.999h1.46q.602 0 .998-.237a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084 0-.63-.196-1.075a1.43 1.43 0 0 0-.589-.68q-.396-.234-1.005-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592 1.1 1.1 0 0 1-.196.422.8.8 0 0 1-.334.252 1.3 1.3 0 0 1-.483.082h-.563zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638z"/>\n\t\t</svg>`;ed(e,r,n)},add:(e,t={})=>{const n={color:"black",width:18,height:18,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-copy" viewBox="0 0 18 18">\n\t\t\t<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>\n\t\t\t<path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/>\n\t\t</svg>`;ed(e,r,n)},burguer:(e,t={})=>{const n={color:"black",width:20,height:20,transform:""};Object.assign(n,t);const r=`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" fill="${n.color}" class="bi bi-copy" viewBox="0 0 16 16">\n \t\t\t\t<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5"/>\n\t\t</svg>`;ed(e,r,n)}};function ed(e,t,n){e.attr("aria-label",n.title);e.html(t).style("cursor","pointer");if(n.handler)e.on("click",n.handler)}function td(e,t){e.classed("sjpp-sandbox-form",true);const n=e.append("div").style("margin","40px 20px 20px 20px").classed("sjpp-sandbox-form-inputDiv",true);const r=n.append("p").classed("sjpp-sandbox-form-gselect",true);r.append("span").html("Genome ");const o=r.append("select");for(const e in t){o.append("option").text(e)}const i=n.append("div").style("margin","20px 0px").classed("sjpp-sandbox-form-fileDiv",true);const s=e.append("div").style("margin","10px 20px").classed("sjpp-sandbox-form-sayDiv",true);const a=e.append("div").style("margin","20px").classed("sjpp-sandbox-form-visualDiv",true);return[n,o.node(),i,s,a]}const nd={};const rd=Math.random().toString().slice(-6)+"-"+(+new Date).toString().slice(-8);let od=0;function id(e,t={}){var n,r;const o=t.beforePlotId?t.beforePlotId in nd?"#"+nd[t.beforePlotId]:`#${t.beforePlotId}`:":first-child";const i=e.insert("div",o).attr("class","sjpp-sandbox");let s;if(t.plotId){s=`sjpp-sandbox-${rd}-${od++}`;i.attr("id",s);nd[t.plotId]=s}const a=i.append("div").attr("class","sjpp-output-sandbox-header").style("width",((n=t.style)===null||n===void 0?void 0:n.width)||"95vw").style("border","1px solid #ccc").style("display","flex").style("align-items","center").style("justify-content","left");const l="blue";const c="black";const f=a.append("div").classed("sjpp-output-sandbox-close-bt",true).style("cursor","pointer").style("vertical-align","middle").on("mouseenter",(()=>{const e=f.select("path");e.attr("stroke",l)})).on("mouseleave",(()=>{const e=f.select("path");e.attr("stroke",c)})).html(`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#000" class="bi bi-x-lg" viewBox="0 0 16 16">\n\t\t <path stroke='#000' d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/>\n\t\t</svg>`).on("mousedown",(e=>{document.body.dispatchEvent(new Event("mousedown"));e.stopPropagation()})).on("click",(()=>{a.on("click",null).on("mousedown",null);i.selectAll("*").remove();if(typeof t.close==="function")t.close()}));const d=a.append("div").classed("sjpp-output-sandbox-collapse-btn",true);const u=a.append("div").classed("sjpp-output-sandbox-expand-btn",true).style("display","none");const p=a.append("div").attr("id","sandbox-header-text").style("display","inline-flex").style("align-items","center").style("justify-content","left").style("padding","5px 10px");const h=i.append("div").attr("class","sjpp-output-sandbox-content sjpp_show_scrollbar").style("width",((r=t.style)===null||r===void 0?void 0:r.width)||"95vw");let m=true;Qf["collapse"](d,{fontSize:"1.5em",padding:"4px 10px",color:"black",handler:g});Qf["expand"](u,{fontSize:"1.5em",padding:"4px 10px",color:"black",display:"none",handler:g});d.on("mouseenter",(()=>{const e=d.select("path");e.attr("stroke",l)})).on("mouseleave",(()=>{const e=d.select("path");e.attr("stroke",c)}));u.on("mouseenter",(()=>{const e=u.select("path");e.attr("stroke",l)})).on("mouseleave",(()=>{const e=u.select("path");e.attr("stroke",c)}));function g(){m=!m;d.style("display",m==true?"inline-block":"none");u.style("display",m==true?"none":"inline-block");h.style("display",m==true?"block":"none")}return{header_row:a,header:p,body:h,app_div:i,id:s}}function sd(e,t,n,r,o,i){let s,a,l,c,f,d;if(o!==undefined)[a,l,c,f,d]=td(o,n);else{[s,a,l,c,f,d]=zc(e,t,n);s.header.text("Load mutation from text files")}a.append("div").style("margin","20px 0px").style("color","#858585").html(`\n\t<p>Choose one file and upload to initiate the display panel.<br>From there you can add additional files.</p>\n\t<div>Supported data types:</div>\n\t<ul>\n\t <li>SNV and indel</li>\n\t <ul>\n\t <li><a href=https://drive.google.com/open?id=1OJ9aXq2_-a3BfIQdKLYCYzrJRTpu4_9i3gephTY-Z38 target=_blank>Format</a>,\n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.snvindel.txt target=_blank>example file</a></li>\n\t </ul>\n\t <li>SV or fusion transcript</li>\n\t <ul>\n\t <li><a href=https://drive.google.com/open?id=1klDZ0MHVkQTW2-lCu_AvpRE4_FcbhdB-yI17wNdPaOM target=_blank>Tabular format</a>,\n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.svfusion.txt target=_blank>example file</a>\n\t\t</li>\n\t\t<li>JSON-format, to come</li>\n\t </ul>\n\t <li>CNV, gene-level</li>\n\t <ul>\n\t <li><a href=https://drive.google.com/open?id=1WHptqOWNf96V0bYEDpj-EsKZGYnbBNc9aQIrhzdEJaU target=_blank>Format</a>, \n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.cnv.txt target=_blank>example file</a>\n\t\t</li>\n\t </ul>\n\t <li>ITD</li>\n\t <ul>\n\t \t<li>Internal tandem duplication, in-frame</li>\n\t <li><a href=https://drive.google.com/open?id=1Bh9awBsraoHbV8iWXv_3oDeXMsjIAHaOKHr973IJyZc target=_blank>Format</a>, \n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.itd.txt target=_blank>example file</a>\n\t\t</li>\n\t </ul>\n\t <li>Intragenic deletion, in-frame</li>\n\t <ul>\n\t <li><a href=https://drive.google.com/open?id=1tWbf3rg3BmVIZPGGPk023P0aBkDw_ry5XuZLGyGodyg target=_blank>Format</a>, \n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.deletion.txt target=_blank>example file</a>\n\t\t</li>\n\t </ul>\n\t <li>Truncation</li>\n\t <ul>\n\t \t<li>Either N-terminus loss or C-terminus loss</li>\n\t <li><a href=https://drive.google.com/open?id=1P1g-Y8r30pSKfan1BhYZcsUtSk7wRb4plaO1S-JCJr4 target=_blank>Format</a>, \n\t <a href=https://proteinpaint.stjude.org/ppdemo/hg19/heatmap/exampleFiles/example.truncation.txt target=_blank>example file</a>\n\t\t</li>\n\t </ul>\n\t</ul>`);const u=()=>{c.selectAll("*").remove();new Of({bulkin:ld,genomes:n,gselect:l,content2flag:ad,flag2tp:h,filediv:c,init_bulk_flag:cf});c.append("span").html("Select data type ");const e=Uc(c).style("margin-right","20px");const t=c.append("input").attr("type","file").on("change",(t=>{const r=cf(n[l.options[l.selectedIndex].innerHTML]);r.geneToUpper=p.property("checked");f.text("");const o=t.target.files[0];if(!o){u();return}if(o.size==0){f.text("Wrong file: "+o.name);u();return}const i=new FileReader;i.onload=t=>{const n=ad(t.target.result,e.node().selectedIndex,r);if(n){f.text("Error: "+n);u();return}h(r,o)};i.onerror=function(){f.text("Error reading file "+o.name);u();return};f.text("Parsing file "+o.name+" ...");i.readAsText(o,"utf8")}));setTimeout((()=>t.node().focus()),1100)};u();c.append("span").html("<br/>Convert gene name to uppercase ");const p=c.append("span").append("input").attr("type","checkbox").property("checked",true);function h(e,t,n=null,i=null){if(typeof e=="string"){f.text(e);u();return}f.text("");u();const l=n?n:Object.assign({genome:e.genome,name:t.name});const c=ld({flag:e,filename:t.name,cohort:l,flag2thisds:i});if(c){f.text("Error with "+t.name+": "+c);return}if(e.good==0){f.text("No mutations can be loaded");return}let p;if(s){kc(s.pane);const e=Ac({x:100,y:100,toshrink:true});e.header.html('<span style="opacity:.5">FILE</span> '+t.name);p=e.body}if(o!==undefined){p=d.append("div").html('<span style="opacity:.5">FILE</span> '+t.name)}a.selectAll("*").remove();import("./tp.ui-f01b186b.js").then((function(e){return e.t})).then((e=>{e.default(l,p,r)}));return l}return function e(t,n){const r=ad(t.content,n,flag);if(r){f.text("Error: "+r);u();return}h(flag,t)}}function ad(e,t,n){if(!n)return"should not happen!";let r;switch(t){case 0:r=fd(e,n);if(r)return r;break;case 1:r=gd(e,n,true);if(r)return r;break;case 2:r=gd(e,n,false);if(r)return r;break;case 3:r=pd(e,n);if(r)return r;break;case 4:r=hd(e,n);if(r)return r;break;case 5:r=md(e,n);if(r)return r;break;case 6:r=ud(e,n);if(r)return r;break;default:return"unknown option array index from file type <select>: "+t}}function ld(e,t=null){const n=e.flag;const r=e.cohort;if(!r.p2st){r.p2st={}}if(!r.dsset){r.dsset={}}if(!r.assaylst){r.assaylst=[]}if(n.variantgene){if(r.variantgene){return"variantgene already set for this cohort"}r.variantgene=n.variantgene}if(n.snv.badlines.length>0){Dc(n.snv.header,n.snv.badlines)}if(n.fusion.badlines.length>0){Dc(n.fusion.header,n.fusion.badlines)}if(n.sv.badlines.length>0){Dc(n.sv.header,n.sv.badlines)}if(n.cnv.badlines.length>0){Dc(n.cnv.header,n.cnv.badlines)}if(n.itd.badlines.length>0){Dc(n.itd.header,n.itd.badlines)}if(n.del.badlines.length>0){Dc(n.del.header,n.del.badlines)}if(n.truncation.badlines.length>0){Dc(n.truncation.header,n.truncation.badlines)}if(n.good==0){return false}const o={};let i=false;if(n.snv.loaded){for(const e of n.snv.header){o[e]=1}if("maf_tumor_v1"in o&&"maf_tumor_v2"in o){i=true}}if(n.cnv.loaded){for(const e of n.cnv.header){o[e]=1}}if(n.fusion.loaded){for(const e of n.fusion.header){o[e]=1}}if(n.sv.loaded){for(const e of n.sv.header){o[e]=1}}if(n.itd.loaded){for(const e of n.itd.header){o[e]=1}}if(n.del.loaded){for(const e of n.del.header){o[e]=1}}if(n.truncation.loaded){for(const e of n.truncation.header){o[e]=1}}const s="sample"in o||"patient"in o;const a="disease"in o;const l="sampletype"in o;let c;if(e.flag2thisds){c=e.flag2thisds;if(s&&!c.hassample){return'"sample" column found in new data but not in existing data'}if(!s&&c.hassample){return'"sample" column found in existing data but not in new data'}if(a&&!c.hasdisease){return'"disease" column found in new data but not in existing data'}if(!a&&c.hasdisease){return'"disease" column found in existing data but not in new data'}if(l&&!c.hasst){return'"sampletype" column found in new data but not in existing data'}if(!l&&c.hasst){return'"sampletype" column found in existing data but not in new data'}for(const e in n.data){const t=c.bulkdata[e];if(t){c.bulkdata[e]=t.concat(n.data[e])}else{c.bulkdata[e]=n.data[e]}}}else{let t=e.filename+(n.tpsetname?"_"+n.tpsetname:"");if(t in n.genome.datasets){let e=1;let r=t+" "+e;while(r in n.genome.datasets){e++;r=t+" "+e}t=r}c={label:t,bulkdata:n.data,hassample:s,hasdisease:a,hastumormaf:i,hasst:l,genome:r.genome,import:{},imported:{},importsilent:n.snv.silent==0?false:n.snv.missense/n.snv.silent>=5?false:true};n.genome.datasets[t]=c;r.dsset[t]=c;if(r.dbexpression){if(r.dbexpression.tidy){try{r.dbexpression.tidy=new Function(...r.dbexpression.tidy)}catch(e){err("invalid JavaScript for dbexpression.tidy");delete r.dbexpression}}c.dbexpression=r.dbexpression}if(a){c.stratify=[{label:"disease",attr1:{k:"disease",label:"disease"}}]}}if(s){for(const e in n.data){for(const t of n.data[e]){let e=t.patient;if(!e){e=t.sample;if(!e){continue}}if(!r.p2st[e]){r.p2st[e]={}}let n=t.sampletype;if(!n){n=e}if(!r.p2st[e][n]){r.p2st[e][n]={dsset:{},tktemplate:[]}}if(!r.p2st[e][n].dsset[c.label]){r.p2st[e][n].dsset[c.label]=[]}r.p2st[e][n].dsset[c.label].push(t)}}}if(t)t();return false}function cd(e){if(!e.name)e.name="Unnamed dataset";let t=e.holder;if(!t){const e=Ac({x:100,y:100});t=e.body}const n=t.append("div");new Promise(((t,n)=>{const r={dsset:{}};for(const t in e){if(t=="snvindel"||t=="svjson"||t=="cnv"||t=="sv"||t=="mutationset"){continue}r[t]=e[t]}t(r)})).then((t=>{if(!e.snvindel&&!e.svjson&&!e.cnv&&!e.sv)return t;const n=cf(t.genome);if(e.snvindel){const t=fd(e.snvindel,n);if(t)throw{message:"error in snvindel data: "+t};delete e.snvindel}if(e.svjson){const t=dd(e.svjson,n);if(t)throw{message:"error in svjson data: "+t};delete e.svjson}if(e.sv){const t=gd(e.sv,n);if(t)throw{message:"error in svjson data: "+t};delete e.sv}if(e.cnv){const t=ud(e.cnv,n);if(t)throw{message:"error in cnv data: "+t};delete e.cnv}const r=ld({flag:n,filename:e.name,cohort:t});if(r)throw{message:"Error parsing data: "+r};return t})).then((t=>{if(!e.mutationset)return t;if(!Array.isArray(e.mutationset))throw{message:"mutationset is not an array"};const n=[];for(const r of e.mutationset){const o=cf(t.genome);const i=[];if(r.snvindel){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.snvindel+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with snvindel file: "+e.error};const t=fd(e.text,o);if(t)throw{message:"error with snvindel file: "+t}}));i.push(n)}if(r.snvindel_url){i.push(Fl("urltextfile",{url:r.snvindel_url}).then((e=>{if(e.error)throw{message:"cannot get snvindel file from url"};const t=fd(e.text,o);if(t)throw{message:"error with snvindel file: "+t}})))}if(r.cnv){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.cnv+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with cnv file: "+e.error};const t=ud(e.text,o);if(t)throw{message:"error with cnv file: "+t}}));i.push(n)}if(r.cnv_url){i.push(Fl("urltextfile",{url:r.cnv_url}).then((e=>{if(e.error)throw{message:"cannot get cnv file from url"};const t=ud(e.text,o);if(t)throw{message:"error with cnv file: "+t}})))}if(r.sv){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.sv+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with sv file: "+e.error};const t=gd(e.text,o,true);if(t)throw{message:"error with sv file: "+t}}));i.push(n)}if(r.sv_url){i.push(Fl("urltextfile",{url:r.sv_url}).then((e=>{if(e.error)throw{message:"cannot get sv file from url"};const t=gd(e.text,o);if(t)throw{message:"error with sv file: "+t}})))}if(r.fusion){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.fusion+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with fusion file: "+e.error};const t=gd(e.text,o,false);if(t)throw{message:"error with fusion file: "+t}}));i.push(n)}if(r.svjson){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.svjson+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with svjson file: "+e.error};const t=dd(e.text,o);if(t)throw{message:"error with svjson file: "+t}}));i.push(n)}if(r.deletion){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.deletion+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with deletion file: "+e.error};const t=hd(e.text,o);if(t)throw{message:"error with deletion file: "+t}}));i.push(n)}if(r.deletion_url){i.push(Fl("urltextfile",{url:r.deletion_url}).then((e=>{if(e.error)throw{message:"cannot get deletion file from url"};const t=hd(e.text,o);if(t)throw{message:"error with deletion file: "+t}})))}if(r.truncation){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.truncation+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with truncation file: "+e.error};const t=md(e.text,o);if(t)throw{message:"error with truncation file: "+t}}));i.push(n)}if(r.truncation_url){i.push(Fl("urltextfile",{url:r.truncation_url}).then((e=>{if(e.error)throw{message:"cannot get truncation file from url"};const t=md(e.text,o);if(t)throw{message:"error with truncation file: "+t}})))}if(r.itd){const t=new Request(e.hostURL+"/textfile",{method:"POST",body:'{"file":"'+r.itd+'"}'});const n=fetch(t).then((e=>e.json())).then((e=>{if(e.error)throw{message:"error with itd file: "+e.error};const t=pd(e.text,o);if(t)throw{message:"error with itd file: "+t}}));i.push(n)}if(r.itd_url){i.push(Fl("urltextfile",{url:r.itd_url}).then((e=>{if(e.error)throw{message:"cannot get itd file from url"};const t=pd(e.text,o);if(t)throw{message:"error with itd file: "+t}})))}const s=Promise.all(i).then((n=>{const i=ld({flag:o,filename:e.name,cohort:t});if(i)throw{message:"Error parsing data from "+r.name+": "+i}}));n.push(s)}return Promise.all(n).then((e=>t))})).then((r=>{const o=Hf(r);if(o)throw{message:"Error parsing study: "+o};n.text("");import("./tp.ui-f01b186b.js").then((function(e){return e.t})).then((n=>{n.default(r,t,e.hostURL)}))})).catch((e=>{n.text(e.message);if(e.stack){console.log(e.stack)}}))}function fd(e,t){const n=e.trim().split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const i=df(r,t);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;uf(e,n[e],t)}}function dd(e,t){const n=e.split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const[i,s]=gf(r);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;bf(e,n[e],t,s)}}function ud(e,t){const n=e.split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const i=vf(r,t);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;wf(e,n[e],t)}}function pd(e,t){const n=e.split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const i=_f(r,t);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;xf(e,n[e],t)}}function hd(e,t){const n=e.split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const i=kf(r,t);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;jf(e,n[e],t)}}function md(e,t){const n=e.split(/\r?\n/);let r=n[0];let o=0;while(r[0]=="#"){o++;r=n[o]}if(!r)return"no header line";const i=Nf(r,t);if(i)return"header error: "+i;for(let e=o+1;e<n.length;e++){if(n[e]=="")continue;if(n[e][0]=="#")continue;Cf(e,n[e],t)}}function gd(e,t,n){const r=e.split(/\r?\n/);let o=r[0];let i=0;while(o[0]=="#"){i++;o=r[i]}if(!o)return"no header line";const s=pf(o,t,n);if(s)return"header error: "+s;for(let e=i+1;e<r.length;e++){if(r[e]=="")continue;if(r[e][0]=="#")continue;hf(e,r[e],t,n)}}function bd(e,t){e.style("opacity",0).style("display",t||"block").transition().style("opacity",1)}function yd(e,t){e.style("opacity",1).transition().style("opacity",0).call((()=>{if(t){e.remove()}else{e.style("display","none").style("opacity",1)}}))}function vd(e,t){let n;if(typeof t=="string"){n=t}else{n=t.message||t.error;if(t.stack)console.log(t.stack)}const r=e.append("div").attr("class","sja_errorbar");r.append("div").text(n);r.append("div").html("✕").on("click",(()=>{yd(r,true)}))}function wd(e){try{throw new Error}catch(t){const n=t.stack.split("\n");const r=n[2].trim();const o=/\s*at\s+(.*)\s+\((.*).proteinpaint.js:(\d+):(\d+)\)/;const i=r.match(o);if(i){const t=i[1];const n=i[2].replace(/^.*\/bin\//,"").replace(/_([^_]+)$/,".$1").replaceAll(/_/g,"/");const r=`${e} [${n} ${t}()]`;throw new Error(r)}else{throw new Error(e)}}}function _d(e,t){if(typeof e=="string")return vd(t,e);if(e.length===0)return;if(e.length===1)return vd(t,e[0]);let n=false;const r=t.append("div").attr("class","sja_errorbar").on("click",(()=>{n=!n;i.style("display",n?"block":"none")}));const o=r.append("div").style("display","inline-block");o.append("div").style("display","inline-block").style("color","white").style("background-color","red").style("border-radius","100px").style("padding","1px 4px").text(e.length);o.append("div").text("errors found.").style("padding","3px").style("display","inline-block");r.append("div").style("display","inline-block").style("float","right").html("✕").on("click",(()=>{yd(r,true)}));const i=r.append("div").style("display","none").style("margin-left","10px");for(const t of e){i.append("div").text(t)}}async function xd(e,t){const n=await Vl("snp",{method:"POST",body:JSON.stringify({byName:true,genome:e.name,lst:[t]})});if(n.error)throw n.error;if(!n.results||n.results.length==0)throw t+": not a SNP";for(const t of n.results){const n=e.chrlookup[t.chrom.toUpperCase()];if(n&&n.major){return{chr:t.chrom,start:t.chromStart,stop:t.chromEnd}}}const r=n.results[0];return{chr:r.chrom,start:r.chromStart,stop:r.chromEnd}}async function kd(e){if(!e.holder)throw"No holder for block.init";if(!e.genome)throw"no genome";if(e.holder instanceof Element)e.holder=ot(e.holder);if(!e.tklst)e.tklst=[];if(e.query){await jd(e);return}if(e.model&&e.allmodels){await Nd(e);return}}async function jd(e){const t=e.holder.append("p").style("font-size","2em").style("color","#858585").text("Searching for "+e.query+" ...");const n=await Vl("genelookup",{body:{deep:1,input:e.query,genome:e.genome.name}});if(!n)throw"querying genes: server error";if(n.error)throw"error querying genes: "+n.error;if(!n.gmlst||n.gmlst.length==0){if(e.genome.hasSNP){try{const n=await xd(e.genome,e.query);t.remove();const r={genome:e.genome,holder:e.holder,chr:n.chr,start:Math.max(0,n.start-300),stop:n.start+300,nobox:true,tklst:e.tklst,debugmode:e.debugmode};ic(e.genome,r.tklst);const o=await import("./block-2f22e7fd.js").then((function(e){return e.c}));const i=new o.Block(r);i.addhlregion(n.chr,n.start,n.stop-1)}catch(n){t.text("Not a gene or SNP: "+e.query)}}else{t.text("No match to gene: "+e.query)}return}t.remove();e.allmodels=n.gmlst;for(const t of e.allmodels){if(t.isoform.toUpperCase()==(n.found_isoform?n.found_isoform.toUpperCase():e.query.toUpperCase())){e.model=t;await Nd(e);return}}const r=[];for(const t of e.allmodels){if(!t.isoform)throw"isoform missing from one gene model: "+JSON.stringify(t);const n=t.isoform.toUpperCase();if(e.genome.isoformcache.has(n)){let r=true;for(const o of e.genome.isoformcache.get(n)){if(o.chr==t.chr&&o.start==t.start&&o.stop==t.stop&&o.strand==t.strand){r=false;break}}if(r){e.genome.isoformcache.get(n).push(t)}}else{e.genome.isoformcache.set(n,[t])}if(t.isoform.toUpperCase()==e.query.toUpperCase()){r.push(t);break}if(t.isdefault){r.push(t)}}if(r.length==1){e.model=r[0]}else if(r.length>1){for(const t of r){if(t.chr=="chrY"){continue}const n=e.genome.chrlookup[t.chr.toUpperCase()];if(!n){continue}if(!n.major){continue}e.model=t;break}if(!e.model){e.model=r[0]}}if(!e.model){e.model=e.allmodels[0]}await Nd(e)}async function Nd(e){if(e.model.genomicseq){r();Cd(e);return}const t={genome:e.genome.name,coord:e.model.chr+":"+(e.model.start+1)+"-"+e.model.stop};const n=await Vl("ntseq",{method:"POST",body:JSON.stringify(t)});if(!n)throw"getting sequence: server error";if(n.error)throw"getting sequence: "+n.error;if(!n.seq)throw"no nt seq???";e.model.genomicseq=n.seq.toUpperCase();e.model.aaseq=Ta(e.model);r();await Cd(e);function r(){if(e.model.aaseq){const t=e.model.aaseq.indexOf(Ea);const n=e.model.cdslen-(e.model.startCodonFrame?3-e.model.startCodonFrame:0);if(t!=-1&&t<n/3-1){vd(e.holder,"Translating "+e.model.isoform+" ends at "+t+" AA, expecting "+n/3)}}}}async function Cd(e){const t=new Map;for(const n of e.allmodels){if(!n.pdomains){n.pdomains=[];n.domain_hidden={};if(!t.has(n.isoform))t.set(n.isoform,[]);t.get(n.isoform).push(n)}}if(t.size==0){await Ad(e);return}const n=await Vl("pdomain",{method:"POST",body:JSON.stringify({genome:e.genome.name,isoforms:[...t.keys()]})});if(n.error)throw"error getting protein domain: "+n.error;if(n.lst){const e=St().range(_c);for(const r of n.lst){for(const e of t.get(r.name)){e.pdomains=r.pdomains}for(const t of r.pdomains){if(!t.color){t.color=e(t.name+t.description)}}}}await Ad(e)}async function Ad(e){let t=e.gmmode;if(!t){if(e.model.cdslen){t=wc.protein}else{t=wc.exononly}}if(e.dataset){if(!Array.isArray(e.dataset))throw"dataset is not array";for(const t of e.dataset){if(e.genome.datasets[t]&&!e.genome.datasets[t].legacyDsIsUninitiated)continue;const n=await Vl(`getDataset?genome=${e.genome.name}&dsname=${t}`);if(n.error)throw`invalid name from dataset[]: ${n.error}`;if(!n.ds)throw".ds missing";const r=e.genome.datasets[n.ds.label];Object.assign(r,n.ds);const o=await import("./legacyDataset-354f1a29.js");o.validate_oldds(r);delete r.legacyDsIsUninitiated}}const n=await import("./block-2f22e7fd.js").then((function(e){return e.c}));e.__blockInstance=new n.Block({genome:e.genome,holder:e.holder,nobox:true,usegm:e.model,gmstackheight:37,allgm:e.allmodels,datasetlst:e.dataset,legacyDsFilter:e.legacyDsFilter,mset:e.mset,hlaachange:e.hlaachange,hlvariants:e.hlvariants,hlregions:e.hlregions,gmmode:t,hidedatasetexpression:e.hidedatasetexpression,hidegenecontrol:e.hidegenecontrol,hidegenelegend:e.hidegenelegend,variantPageCall_snv:e.variantPageCall_snv,datasetqueries:e.datasetqueries,samplecart:e.samplecart,debugmode:e.debugmode,tklst:e.tklst,mclassOverride:e.mclassOverride,hide_dsHandles:e.hide_dsHandles,onloadalltk_always:e.onloadalltk_always})}var Sd=Object.freeze({__proto__:null,default:kd});async function Md(e,t){let n=[],r=[];if(e&&e.includes(","))n=e.split(",");else if(e)n.push(e);else if(t&&t.includes(","))r=t.split(",");else if(t)r.push(t);const o=[];if(n.length){const e=undefined;for(const t of n){o.push(await Od(t,e))}}else if(r.length){const e=undefined;for(const t of r){o.push(await Od(e,t))}}return o}async function Od(e,t){const n=await Id(e,t);Ed(n);const r=Td(n);return r}async function Id(e,t){if(e!==undefined&&e=="")throw".jsonfile missing";if(t!==undefined&&t=="")throw".jsonurl missing";let n;if(e!==undefined)n=await Fl("textfile",{file:e});else if(t!==undefined)n=await Fl("urltextfile",{url:t});if(n.error){throw n.error}return JSON.parse(n.text)}function Ed(e){if(!e)throw"file is missing";if(!e.type)throw"dataset type is missing";const t=e.svcnvfile||e.svcnvurl;const n=e.vcffile||e.vcfurl;if(!t&&!n)throw"vcf or cnv file/url is required";if(Object.keys(e).filter((e=>e.includes("expression"))).length){if(!e.expressionfile&&!e.expressionurl)throw"expression file/url is missing"}if(Object.keys(e).filter((e=>e.includes("rnabam"))).length){if(!e.rnabamfile&&!e.rnabamurl)throw"rnabam file/url is missing"}if(e.sampleset){for(const t of e.sampleset){if(e.sampleset.length!=1&&!t.name)throw"sampleset name is missing";if(!t.samples)throw"sampleset samples[] is missing"}}if(e.sample2assaytrack){for(const[t,n]of Object.entries(e.sample2assaytrack)){if(!n.length)throw"assay[] missing for "+t;for(const e of n){if(!e.name)throw"assay name is missing for "+t;if(!e.type)throw"assay type is missing for "+t}}}if(e.groupsamplebyattr){if(!e.groupsamplebyattr.attrlst)return".attrlst[] missing from groupsamplebyattr";if(e.groupsamplebyattr.attrlst.length==0)return"groupsamplebyattr.attrlst[] empty array";for(const t of e.groupsamplebyattr.attrlst){if(!t.k)return"k missing from one of groupsamplebyattr.attrlst[]"}if(e.groupsamplebyattr.sortgroupby){if(!e.groupsamplebyattr.sortgroupby.key)return".key missing from .sortgroupby";if(!e.groupsamplebyattr.sortgroupby.order)return".order[] missing from .sortgroupby";if(!Array.isArray(e.groupsamplebyattr.sortgroupby.order))return".order must be an array"}if(!e.groupsamplebyattr.attrnamespacer)e.groupsamplebyattr.attrnamespacer=", "}if(e.fixedgeneexpression){for(const t of e.fixedgeneexpression){if(!t.gene)throw"gene missing in fixedgeneexpression array"}}if(e.vcf){if(!e.vcf.hiddenclass)throw"hiddenclasses[] missing from .vcf"}}function Td(e){const t={type:e.type,name:e.name};if(e.isdense=="true"||e.isdense==true||e.isfull===false)t.isdense=true;else if(e.isfull)t.isfull=true;if(e.svcnvfile)t.file=e.svcnvfile;else if(e.svcnvurl)t.url=e.svcnvurl;if(Object.keys(e).filter((e=>e.includes("expression"))).length){t.checkexpressionrank={file:e.expressionfile,url:e.expressionurl}}if(Object.keys(e).filter((e=>e.includes("vcf"))).length){t.checkvcf={file:e.vcffile,url:e.vcfurl}}if(e.vcf){if(e.vcf.hiddenclass){t.vcf=[];t.vcf.hiddenclass=e.vcf.hiddenclass}}if(Object.keys(e).filter((e=>e.includes("rnabam"))).length){t.checkrnabam={file:e.rnabamfile,url:e.rnabamurl}}if(e.sampleset){t.sampleset=e.sampleset}if(e.sample2assaytrack){t.sample2assaytrack=e.sample2assaytrack}if(e.groupsamplebyattr){t.groupsamplebyattr=e.groupsamplebyattr}t.fixedgeneexpression=e.fixedgeneexpression;t.getallsamples=e.getallsamples;t.valueCutoff=e.cnvValueCutoff!==undefined?e.cnvValueCutoff:undefined;t.bplengthUpperLimit=e.cnvLengthUpperLimit!==undefined?e.cnvLengthUpperLimit:undefined;t.segmeanValueCutoff=e.segmeanValueCutoff!==undefined?e.segmeanValueCutoff:undefined;t.lohLengthUpperLimit=e.lohLengthUpperLimit!==undefined?e.lohLengthUpperLimit:undefined;t.multihidelabel_vcf=e.multihidelabel_vcf!==undefined?e.multihidelabel_vcf:undefined;t.multihidelabel_fusion=e.multihidelabel_fusion!==undefined?e.multihidelabel_fusion:undefined;t.multihidelabel_sv=e.multihidelabel_sv!==undefined?e.multihidelabel_sv:undefined;t.legend_vorigin=e.legend_vorigin;return t}async function Ld(e,t){let n={};const r=await Id(e,t);n.mdssamplescatterplot=r;return n}function zd(e){return Number.isFinite(e)||!isNaN(parseFloat(e))}function Rd(e,t,n,r,o){if(r>=1){const t=Math.floor(e*r);if(o)return`${t}${n.charAt(0)}`;return`${t} ${t>1?n+"s":""}`}const i=Math.floor(e*r);const s=Math.ceil(e%(1/r));if(s==0){if(o)return`${i}${n.charAt(0)}`;return`${i} ${i>1?n+"s":""}`}if(o)return`${i}${n.charAt(0)}${s}${t.charAt(0)}`;return`${i} ${i>1?n+"s":n} ${s} ${s>1?t+"s":t}`}function Ud(e="",t=console.warn){const n=e?{search:e}:window.location;const r=new Map;for(const e of n.search.substr(1).split("&")){if(!e)continue;const n=e.split("=");if(n.length==2&&n[0]!=""&&n[1]!=""){let e=decodeURIComponent(n[1]);if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")){try{e=JSON.parse(e)}catch(e){t(e)}}else if(zd(e)){e=Number(e)}r.set(n[0].toLowerCase(),e)}else if(n.length>2){t(`unexpected '=' character in the URL parameter value for '${n[0]}'`)}else{t(`Invalid url parameter: '${e}'`)}}return r}function $d(e,t=""){const n=e.state?.embedder;const r=t=>{if(t.origin!==n.origin)return;if(t.data=="getActiveMassSession"){window.removeEventListener("message",r);o.postMessage({state:e.state},n.origin);if(n.origin!=window.location.origin){setTimeout((()=>{try{window.close()}catch(e){console.log(e);window.open(window.location,"_self").close()}}),500)}}};window.addEventListener("message",r,false);setTimeout((()=>window.removeEventListener("message",r)),8e3);if(n.origin!=window.location.origin){confirm(`Another window will open to recover the saved session. When the next window opens,`+`\n- You may need to allow popups.`+`\n- You may have to refresh it.`+`\n- After the session is recovered, this browser window should automatically close.`);document.body.innerHTML=`\n\t\t\t<div style='margin: 20px; padding: 20px; font-size: 24px'>\n\t\t\t\tPlease close this browser tab. The recovered session should visible in another browser tab.\n\t\t\t</div>\n\t\t`}const o=window.open(n.href,"_blank")}async function Fd(e){const t=Ud();if(t.has("appcard")){const n=await import("./adSandbox-5753745b.js").then((function(e){return e.a}));const r=t.get("appcard");const o=t.get("example");const i=await Dl("/cards/index.json");e.app.drawer.opts.genomes=e.genomes;e.app.drawer.opts.fromApp=true;e.app.drawer.opts.app={cardsPath:"cards"};const s=i.elements.findIndex((e=>e.sandboxJson==r||e.sandboxHtml==r||e.name.toUpperCase().includes(r.toUpperCase())));if(i.elements[s]?.configFeature){const t=JSON.parse(sessionStorage.getItem("optionalFeatures"));if(!t[i.elements[s].configFeature]){vd(e.holder,`This track or app is not enabled on this site.`);return}}if(o){e.app.drawer.opts.example=o}if(s<=0){const t=[...i.elements.filter((e=>e.type=="nestedCard"))];let o,s;t.findIndex((e=>{for(const[t,n]of e.children.entries()){if(n.sandboxJson==r||n.sandboxHtml==r||n.name.toUpperCase().includes(r.toUpperCase())){o=e;s=t}}}));if(!o){vd(e.holder,`Invalid app card.`);return}n.openSandbox(o.children[s],e.app.drawer.opts)}else{n.openSandbox(i.elements[s],e.app.drawer.opts)}return}if(t.has("gdcbamslice")){const n=await import("./bam-4e0df8b6.js");n.bamsliceui({genomes:e.genomes,holder:e.holder,debugmode:e.debugmode,stream2download:t.has("stream2download")});return}if(t.has("gdcmaf")){const t=await import("./maf-10526648.js");t.gdcMAFui({holder:e.holder,debugmode:e.debugmode});return}if(t.has("gdcsinglecell")){const t=await import("./singlecell-281a74a6.js");t.gdcSinglecellUi({holder:e.holder,debugmode:e.debugmode});return}if(t.has("termdb")){const n=t.get("termdb");const r=typeof n==="string"?JSON.parse(n):n;const o={holder:e.holder,state:r};const i=await import("./app-5aa892cb.js");i.appInit(o);return}if(t.has("massnative")){const n=t.get("massnative");const[r,o]=n.split(",");if(!r||!o)throw'value is not "genome,dslabel"';const i={holder:e.holder,genome:e.genomes[r],state:{genome:r,dslabel:o}};if(!i.genome)throw"invalid genome";const s=await import("./app-d9433820.js");s.appInit(i);return}if(t.has("mass")){const n=t.get("mass");const r=typeof n==="string"?JSON.parse(n):n;const o={debug:e.app.debugmode,holder:e.holder,state:r};if(r.genome){o.genome=e.genomes[r.genome]}else if(r?.vocab?.genome){o.genome=e.genomes[r.vocab.genome]}const i=await import("./app-d9433820.js");i.appInit(o);return}if(t.has("mass-session-file")||t.has("mass-session-url")){let n;if(t.has("mass-session-file")){const r=t.get("mass-session-file");const o=await Vl(`/textfile`,{method:"POST",body:JSON.stringify({file:r})});const i=JSON.parse(o.text);n={debug:e.app.debugmode,holder:e.holder,state:i,genome:e.genomes[i.vocab.genome]}}if(t.has("mass-session-url")){const r=t.get("mass-session-url");const o=await Vl("/urltextfile",{method:"POST",body:JSON.stringify({url:r})});const i=JSON.parse(o.text);n={debug:e.app.debugmode,holder:e.holder,state:i,genome:e.genomes[i.vocab.genome]}}const r=await import("./app-d9433820.js");r.appInit(n);return}if(t.has("mass-session-id")){const n=t.get("mass-session-id");const r=t.get("src");let o;if(r=="browser"){const e=localStorage.getItem("savedMassSessions");const t=JSON.parse(e);o={state:t[n]}}else{const e={headers:{},body:{id:n}};if(r=="cred"){const n=t.get("dslabel");const r=t.get("route");e.body.dslabel=n;e.body.route=r;e.body.route=r;const o=localStorage.getItem("jwtByDsRoute")||`{}`;this.jwtByDsRoute=JSON.parse(o);const i=this.jwtByDsRoute[n][r];e.headers.authorization=`Bearer ${btoa(i)}`}o=await Vl(`/massSession`,e);if(o.error)throw o.error}const i=o.state?.embedder;if(i&&i.origin!=window.location.origin){$d(o);return}const s={debug:e.app.debugmode,holder:e.holder,state:o.state,genome:e.genomes[o.state.vocab.genome],sessionDaysLeft:o.sessionDaysLeft,sessionId:n};const a=await import("./app-d9433820.js");a.appInit(s);return}if(t.has("genome")&&e.selectgenome){const n=t.get("genome");const r=[...e.selectgenome.node().childNodes];const o=r.findIndex((e=>e.value==n));if(o==-1){vd(e.holder,`Invalid genome: ${n}. Please provide an available genome from this list: ${r.map((e=>e.value)).join(", ").replace(/,(?=[^,]*$)/,", or")}`);return}e.selectgenome.node().selectedIndex=o;e.selectgenome.node().dispatchEvent(new Event("change"))}if(t.has("hicfile")||t.has("hicurl")){let n,r,o;if(t.has("hicfile")){n=t.get("hicfile");o=n.split("/").pop()}else{r=t.get("hicurl");o=r.split("/").pop()}const i=t.get("genome");if(!i)throw"genome is required for hic";const s=e.genomes[i];if(!s)throw"invalid genome";const a={genome:s,file:n,url:r,name:o,hostURL:e.hostURL,enzyme:t.get("enzyme"),holder:e.holder};const l=await import("./HicApp-fe8682af.js");await l.hicInit(a);return}if(t.has("singlecell")){if(!t.has("genome"))throw'"genome" is required for "singlecell"';const n=t.get("genome");const r=e.genomes[n];if(!r)throw"invalid genome: "+n;const o=await import("./singlecell-1c3bee25.js");o.init({genome:r,jsonfile:t.get("singlecell")},e.holder);return}if(t.has("mavbfile")){if(!t.has("genome"))throw'"genome" is required for "mavb"';const n=t.get("genome");const r=e.genomes[n];if(!r)throw"invalid genome: "+n;const o=await import("./mavb-0d28dd97.js");o.mavbparseinput({genome:r,hostURL:e.hostURL,file:t.get("mavbfile")},(()=>{}),e.holder,e.jwt);return}if(t.has("mavburl")){if(!t.has("genome"))throw'"genome" is required for "mavb"';const n=t.get("genome");const r=e.genomes[n];if(!r)throw"invalid genome: "+n;const o=await import("./mavb-0d28dd97.js");o.mavbparseinput({genome:r,hostURL:e.hostURL,url:t.get("mavburl")},(()=>{}),e.holder,e.jwt);return}if(t.has("scatterplot")){if(!t.has("genome"))throw'"genome" is required for "scatterplot"';const n=t.get("genome");const r=e.genomes[n];if(!r)throw"invalid genome: "+n;let o;if(t.has("mdsjson")||t.has("mdsjsonurl")){const e=t.get("mdsjsonurl");const n=t.get("mdsjson");o=await Ld(n,e)}if(t.has("tsnejson")){const e=t.get("tsnejson");const n=await Fl("textfile",{file:e});if(n.error)throw n.error;else if(n.text){o={mdssamplescatterplot:{analysisdata:JSON.parse(n.text)}}}}o.mdssamplescatterplot.genome=r;const i=await import("./mds.samplescatterplot-5a4ee6b6.js");i.init(o.mdssamplescatterplot,e.holder,false);return}if(t.has("block")){if(!t.has("genome"))throw"missing genome for block";const n=t.get("genome");const r=e.genomes[n];if(!r)throw"invalid genome: "+n;const o={nobox:1,hostURL:e.hostURL,jwt:e.jwt,holder:e.holder,genome:r,dogtag:n,debugmode:e.debugmode};let i=null;let s=null;if(t.has("position")){const e=t.get("position").split(";");if(e[0]){const t=e[0].split(/[:-]/);const n=t[0];const r=Number.parseInt(t[1]);const o=Number.parseInt(t[2]);if(!n)throw"chr missing";if(Number.isNaN(r)||Number.isNaN(o))throw"Invalid start/stop value in position";i={chr:n,start:r,stop:o}}const n=[];for(let t=1;t<e.length;t++){if(!e[t])continue;const r=e[t].split(/[:-]/);const o=r[0];const i=Number.parseInt(r[1]);const s=Number.parseInt(r[2]);if(!o)throw"subpanel chr missing";if(Number.isNaN(i)||Number.isNaN(s))throw"Invalid start/stop value in subpanel position";n.push({chr:o,start:i,stop:s,width:600,leftborder:"rgba(200,0,0,.1)",leftpad:5})}if(n.length){o.subpanels=n}}if(t.has("regions")){s=[];for(const e of t.get("regions").split(",")){const t=e.split(/[:-]/);t[0];const n=Number.parseInt(t[1]);const r=Number.parseInt(t[2]);if(Number.isNaN(n)||Number.isNaN(r))throw"Invalid start/stop value in regions";s.push({chr:t[0],start:n,stop:r})}}if(!i&&!s){if(r.defaultcoord){i={chr:r.defaultcoord.chr,start:r.defaultcoord.start,stop:r.defaultcoord.stop}}}if(i){o.chr=i.chr;o.start=i.start;o.stop=i.stop}else if(s){o.rglst=s}if(t.has("hlregion")){const e=[];for(const n of t.get("hlregion").split(",")){const t=Pf(n,r,true);if(t)e.push(t)}if(e.length)o.hlregions=e}o.datasetqueries=Pd(t);o.tklst=await qd(t,r);ic(e.genomes[n],o.tklst);Dd(t,o.tklst);const a=await import("./block-2f22e7fd.js").then((function(e){return e.c}));new a.Block(o);return}if(t.has("gene")){const n=t.get("gene");if(n.length==0)throw"zero length query string";const r={hostURL:e.hostURL,query:n,holder:e.holder,variantPageCall_snv:e.variantPageCall_snv,samplecart:e.samplecart,debugmode:e.debugmode};{let n;for(let t in e.genomes){if(e.genomes[t].isdefault){n=t;break}}if(t.has("genome")){n=t.get("genome")}if(!n)throw"No genome, and none set as default";r.genome=e.genomes[n];if(!r.genome)throw"invalid genome: "+n}if(t.has("dataset")){r.dataset=t.get("dataset").split(",")}if(t.has("hlaachange")){r.hlaachange=new Map;for(const e of t.get("hlaachange").split(",")){r.hlaachange.set(e,false)}}if(t.has("hlregion")){const e=[];for(const n of t.get("hlregion").split(",")){const t=Pf(n,r.genome,true);if(t)e.push(t)}if(e.length)r.hlregions=e}r.tklst=await qd(t,r.genome);Dd(t,r.tklst);r.datasetqueries=Pd(t);await kd(r);return}if(t.has("disco")){const n=t.get("genome");const r=e.genomes[n];if(!r)throw"genome missing";const o=t.get("dslabel");if(!o)throw"dslabel missing";const i=t.get("sample");if(!i)throw"sample_id missing";const s=(await import("./FilterRxComp-cb149666.js").then((function(e){return e.k}))).vocabInit({state:{genome:n,dslabel:o}});const a=await s.getTermdbConfig();await(await import("./plot.disco-ccdf741c.js")).default(a,o,{sample_id:i},e.holder,r);return}if(t.has("study")){const n=t.get("study");if(n!=""){Jf(e.genomes,n,e.holder,e.hostURL,undefined,false,e.app||{debugmode:e.debugmode,instanceTracker:e.instanceTracker||{},callbacks:e.callbacks||{}})}}}function Pd(e){if(!e.has("mds"))return;const t=e.get("mds").split(",");if(t[0]&&t[1]){const n={dataset:t[0],querykey:t[1]};if(e.has("sample")){n.singlesample={name:e.get("sample")};n.getsampletrackquickfix=true}return[n]}return}async function qd(e,t){const n=[];if(e.has("mds3")){const t=e.get("mds3").split(",");for(const r of t){const t={type:vc.mds3,dslabel:r};if(e.has("token"))t.token=e.get("token");if(e.has("filterobj"))t.filterObj=e.get("filterobj");n.push(t)}}if(e.has("mds3bcffile")){const[t,r]=e.get("mds3bcffile").split(",");if(t&&r){n.push({type:vc.mds3,name:t,bcf:{file:r}})}}if(e.has("mds3bcfurl")){const[t,r,o]=e.get("mds3bcfurl").split(",");if(t&&r){n.push({type:vc.mds3,name:t,bcf:{url:r,indexURL:o}})}}if(e.has("arcfile")){const t=e.get("arcfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.hicstraw,name:t[e],bedfile:t[e+1],mode_hm:false,mode_arc:true})}}}if(e.has("mdsjson")||e.has("mdsjsonurl")){const t=e.get("mdsjsonurl");const r=e.get("mdsjson");const o=await Md(r,t);n.push(...o)}if(e.has("tkjsonfile")){const r=await Fl("textfile",{file:e.get("tkjsonfile")});if(r.error)throw r.error;if(!r.text)throw".text missing";const o=JSON.parse(r.text);for(const e of o){if(e.isfacet){if(!t.tkset)t.tkset=[];if(!e.tracks)throw".tracks[] missing from a facet table";if(!Array.isArray(e.tracks))throw".tracks[] not an array from a facet table";e.tklst=e.tracks;delete e.tracks;for(const t of e.tklst){if(!t.assay)throw".assay missing from a facet track";if(!t.sample)throw".sample missing from a facet track";t.tkid=Math.random().toString()}t.tkset.push(e)}else{n.push(e)}}}if(e.has("bamfile")){const t=e.get("bamfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bam,name:t[e],file:t[e+1]})}}}if(e.has("bamurl")){const t=e.get("bamurl").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bam,name:t[e],url:t[e+1]})}}}if(e.has("bedjfile")){const t=e.get("bedjfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bedj,name:t[e],file:t[e+1]})}}}if(e.has("bedjurl")){const t=e.get("bedjurl").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bedj,name:t[e],url:t[e+1]})}}}if(e.has("hictkfile")||e.has("hictkurl")){const t=e.has("hictkfile");const r=e.get(t?"hictkfile":"hictkurl").split(",");const o=e.has("hictknorm")?e.get("hictknorm").split(","):null;for(let e=0;e<r.length;e+=3){if(r[e]&&r[e+1]&&r[e+2]){const i={type:vc.hicstraw,name:r[e],enzyme:r[e+1],normalizationmethod:o?o[e/3]:null};if(t){i.file=r[e+2]}else{i.url=r[e+2]}n.push(i)}}}if(e.has("ldfile")){const t=e.get("ldfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.ld,name:t[e],file:t[e+1]})}}}if(e.has("bigwigfile")){const t=e.get("bigwigfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bigwig,name:t[e],file:t[e+1],scale:{auto:1}})}}}if(e.has("bigwigurl")){const t=e.get("bigwigurl").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.bigwig,name:t[e],url:t[e+1],scale:{auto:1}})}}}if(e.has("junctionfile")){const t=e.get("junctionfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.junction,name:t[e],tracks:[{file:t[e+1]}]})}}}if(e.has("junctionurl")){const t=e.get("junctionurl").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.junction,name:t[e],tracks:[{url:t[e+1]}]})}}}if(e.has("vcffile")){const t=e.get("vcffile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:"vcf",name:t[e],file:t[e+1]})}}}if(e.has("vcfurl")){const t=e.get("vcfurl").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:"vcf",name:t[e],url:t[e+1]})}}}if(e.has("aicheckfile")){const t=e.get("aicheckfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:"aicheck",name:t[e],file:t[e+1]})}}}if(e.has("bampilefile")){const t=e.get("bampilefile").split(",");let r=null;if(e.has("bampilelink")){r=e.get("bampilelink").split(",").map(decodeURIComponent)}for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){const o={type:vc.bampile,name:t[e],file:t[e+1]};if(r&&r[e/2]){o.link=r[e/2]}n.push(o)}}}if(e.has("svcnvfpkmurl")){const t=e.get("svcnvfpkmurl").split(",");const r=t[0];const o={};for(let e=1;e<t.length;e+=2){o[t[e]]=t[e+1]}if(o.svcnv||o.vcf){const e={type:vc.mdssvcnv,name:r};if(o.svcnv){e.url=o.svcnv}if(o.vcf){e.checkvcf={url:o.vcf,indexURL:o.vcfindex}}if(o.fpkm){e.checkexpressionrank={datatype:"FPKM",url:o.fpkm,indexURL:o.fpkmindex}}n.push(e)}}if(e.has("svcnvfpkmfile")){const t=e.get("svcnvfpkmfile").split(",");const r=t[0];const o={};for(let e=1;e<t.length;e+=2){o[t[e]]=t[e+1]}if(o.svcnv||o.vcf){const e={type:vc.mdssvcnv,name:r};if(o.svcnv){e.file=o.svcnv}if(o.vcf){e.checkvcf={file:o.vcf}}if(o.fpkm){e.checkexpressionrank={datatype:"FPKM",file:o.fpkm}}n.push(e)}}if(e.has("mdsjunctionfile")){const t=e.get("mdsjunctionfile").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:"mdsjunction",name:t[e],file:t[e+1]})}}}if(e.has("junctionmatrix")){const t=e.get("junctionmatrix").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:"mdsjunction",name:t[e],file2:t[e+1]})}}}if(e.has("junctionrnapeg")){const t=e.get("junctionrnapeg").split(",");for(let e=0;e<t.length;e+=2){if(t[e]&&t[e+1]){n.push({type:vc.junction,name:t[e],tracks:[{rnapegfile:t[e+1]}]})}}}for(const e of n){if(e.type=="mds3"&&e.dslabel)continue;e.iscustom=true}if(e.has("isdense")){n.filter((e=>e.type==vc.mdssvcnv)).forEach((e=>{e.isdense=true;e.isfull=false}))}if(e.has("sample")){n.filter((e=>e.type==vc.mdssvcnv)).forEach((t=>{t.singlesample={name:e.get("sample")};t.getsampletrackquickfix=true}))}return n}function Dd(e,t){if(e.has("bedjfilterbyname")){for(const n of t){if(n.type=="bedj")n.filterByName=e.get("bedjfilterbyname")}}}const Gd=new oc({padding:"0px",offsetX:0,offsetY:0});Gd.d.style("z-index",5555);function Bd(e){if(!window.structuredClone)window.structuredClone=e=>JSON.parse(JSON.stringify(e));const t={error0(e){Nc(t.holder0,e)},debugmode:false,callbacks:e.callbacks||{sjcharts:{}},instanceTracker:e.instanceTracker||{sjcharts:{}}};Hd(e,t);if(!t.instanceTracker.sjcharts){t.instanceTracker.sjcharts={}}if(!t.callbacks.sjcharts){t.callbacks.sjcharts={}}if(e.clear){it(".sja_pane").remove();return}t.holder=ot(e.holder?e.holder:document.body).append("div").attr("class","sja_root_holder").attr("data-ppclientversion",`2.78.0`).style("font","1em Arial, sans-serif").style("color","black");t.sandbox_header=e.sandbox_header||undefined;if(e.jwt){sessionStorage.setItem("jwt",e.jwt)}sessionStorage.setItem("suppressErrors",JSON.stringify(e.suppressErrors));if(e.variantPageCall_snv){t.variantPageCall_snv=e.variantPageCall_snv}if(e.samplecart){t.samplecart=e.samplecart}if(e.base_zindex){Ac({setzindex:e.base_zindex})}const n=e.serverData||e.termdb&&e.termdb.serverData;const r=Vl("genomes",{},{serverData:n});return r.then((async n=>{if(n.error)throw{message:"Cannot get genomes: "+n.error};if(!n.genomes)throw{message:"no genome data!?"};if(n.base_zindex){Ac({setzindex:n.base_zindex})}if(n.features){sessionStorage.setItem("optionalFeatures",JSON.stringify(n.features))}t.genomes=n.genomes;t.cardsPath=n.cardsPath;if(n.debugmode){t.debugmode=true;if(!n.features?.disableDevBrowserNotification){import("./notify-91f0bc5d.js").catch((e=>console.warn(`debugmode: server-sent notifications is not setup`,e)))}}Ql({dsAuth:n.dsAuth,holder:t.holder});if(n.commonOverrides||e.commonOverrides){ya(Object.assign(n.commonOverrides||{},e.commonOverrides||{}))}if(n.targetPortal&&n.targetPortal=="gdc")await import("./style.gdc-6b6a2e0c.js");for(const e in t.genomes){const n=wu(t.genomes[e]);if(n){throw{message:"Error with "+e+" genome: "+n}}}if(!e.noheader&&!window.location.search.includes("noheader")&&!window.location.search.includes("mass-session-id")&&!window.location.search.includes("mass-session-file")&&!window.location.search.includes("mass-session-url")){const r=await import("./AppHeader-67cea623.js");const o=new r.AppHeader({headtip:Gd,app:t,data:n,jwt:e.jwt});await o.makeheader()}t.holder0=t.holder.append("div").style("margin","20px");const r=await Jd(e,t);return r||t})).catch((e=>{t.holder.text(e.message||e);if(e.stack)console.log(e.stack)}))}Bd.getStatus=async function e(t=""){return await fetch("/healthcheck").then((e=>e.json())).then((e=>{const n={clientVersion:document.querySelector(".sja_root_holder")?.dataset.ppclientversion,versionInfo:e.versionInfo};if(t=="log")console.info(n);else if(t=="json")return JSON.stringify(n);else return n})).catch(console.error)};const Vd=document&&document.currentScript&&document.currentScript.src||"";function Hd(e,t){if(e.host){t.hostURL=e.host}else if(window.location.hostname=="localhost"){const e=Ud();if(e.has("hosturl"))t.hostURL=e.get("hosturl");else if(window.testHost){t.hostURL=window.testHost}else{const n=e.get("hostname");const r=e.get("hostport");const o=window.location.protocol+"//";if(n&&r)t.hostURL=o+n+":"+r;else if(n)t.hostURL=o+n;else if(r)t.hostURL=o+window.location.hostname+":"+r}}if(!t.hostURL){if(Vd.includes("://")){t.hostURL=Vd.split("://")[0]+"://"+Vd.split("://")[1].split("/")[0]}else{t.hostURL=""}}if(t.hostURL.endsWith("/"))t.hostURL=t.hostURL.slice(0,-1);sessionStorage.setItem("hostURL",t.hostURL)}async function Jd(e,t){if(e.genome&&t.selectgenome){for(let n=0;n<t.selectgenome.node().childNodes.length;n++){if(t.selectgenome.node().childNodes[n].value==e.genome){t.selectgenome.property("selectedIndex",n);break}}}if(e.mclassOverride){if(!e.mclassOverride.mclassName)e.mclassOverride.mclassName="Class";for(const t in e.mclassOverride.classes){const n=Ks[t];if(n){Object.assign(n,e.mclassOverride.classes[t])}}}if(e.singlecell){hu(e.singlecell,t);return t}if(e.fimo){Zd(e.fimo,t);return t}if(e.mdssurvivalplot){if(e.genome)e.mdssurvivalplot.genome=e.genome;Wd(e.mdssurvivalplot,t);return t}if(e.mdssamplescatterplot){if(e.genome)e.mdssamplescatterplot.genome=e.genome;Xd(e.mdssamplescatterplot,t);return t}if(e.samplematrix){e.samplematrix.jwt=e.jwt;Qd(e.samplematrix,t);return t}if(e.hic){e.hic.jwt=e.jwt;Kd(e.hic,t);return t}if(e.block){return tu(e,t)}if(e.study){Jf(t.genomes,e.study,t.holder0,t.hostURL,e.jwt,false,t);return t}if(e.studyview){const n=e.studyview;n.hostURL=e.host;const r=n.genome||e.genome;n.genome=t.genomes[r];n.hostURL=t.hostURL;n.jwt=e.jwt;n.holder=t.holder0;cd(n);return t}if(await Yd(e,t)){return t}if(e.fusioneditor){nu(e,t);return t}if(e.genefusion){bu(e,t);return t}if(e.mavolcanoplot){fu(e,t);return t}if(e.twodmaf){du(e,t);return t}if(e.junctionbymatrix){pu(e,t);return}if(e.selectGenomeWithTklst){await ru(e,t);return}if(e.disco){return await _u(e,t)}if(e.geneSearch4GDCmds3){return await ou(e,t)}if(e.launchGdcMatrix){return await iu(e,t)}if(e.launchGdcHierCluster){return await su(e,t)}if(e.launchGdcMaf){return await lu(e,t)}if(e.launchGdcScRNAseq){return await au(e,t)}if(e.parseurl&&location.search.length){try{await Fd({app:t,genomes:t.genomes,hostURL:t.hostURL,variantPageCall_snv:t.variantPageCall_snv,samplecart:t.samplecart,holder:t.holder,selectgenome:t.selectgenome,genome_browser_btn:t.genome_browser_btn,debugmode:t.debugmode})}catch(e){t.error0(e);console.error(e.stack||e)}}if(e.project){let n=undefined;if(e.project.uionly)n=t.holder0;sd(0,0,t.genomes,t.hostURL,n,t.sandbox_header)}if(e.termdb){await gu(e.termdb,t)}if(e.maftimeline){uu(e,t)}if(e.gdcbamslice){return await cu(e,t)}if(e.mass){return await vu(e,t)}if(e.tkui){mu(e,t)}if(e.massSessionId){const n=await Vl(`/massSession?id=${e.massSessionId}`);if(n.error)throw n.error;const r={debug:t.debugmode,holder:t.holder0,state:n.state,genome:t.genomes[n.state.vocab.genome],massSessionDuration:n.massSessionDuration,getDatasetAccessToken:e.getDatasetAccessToken,addLoginCallback:e.addLoginCallback};const o=await import("./app-d9433820.js");o.appInit(r);return}if(e.massSessionFile||e.massSessionURL){let n;if(e.massSessionFile){const t=e.massSessionFile;const r=await Vl(`/textfile`,{method:"POST",body:JSON.stringify({file:t})});if(r.error)throw r.error;n=JSON.parse(r.text)}else{const t=e.massSessionURL;const r=await Vl(`/urltextfile`,{method:"POST",body:JSON.stringify({url:t})});if(r.error)throw r.error;n=JSON.parse(r.text)}const r={debug:t.debugmode,holder:t.holder0,state:n,genome:t.genomes[n.vocab.genome]};const o=await import("./app-d9433820.js");o.appInit(r);return}if(e.profileHome){const t=await import("./profileHome-121aaddb.js");t.init(e);return}}async function Yd(e,t){if(e.p){e.gene=e.p;delete e.p}if(e.gene2canonicalisoform){if(!e.genome)throw".genome missing for gene2canonicalisoform";const t=await Dl("gene2canonicalisoform?genome="+e.genome+"&gene="+e.gene2canonicalisoform);if(t.error)throw t.error;if(!t.isoform)throw"no canonical isoform for given gene accession";e.gene=t.isoform}if(e.mds3_ssm2canonicalisoform){if(!e.genome)throw".genome missing";if(!e.mds3_ssm2canonicalisoform.ssm_id)throw".ssm_id missing from mds3_ssm2canonicalisoform";if(!e.mds3_ssm2canonicalisoform.dslabel)throw".dslabel missing from mds3_ssm2canonicalisoform";const t=await Dl("mds3?"+"genome="+e.genome+"&dslabel="+e.mds3_ssm2canonicalisoform.dslabel+"&ssm2canonicalisoform=1"+"&ssm_id="+e.mds3_ssm2canonicalisoform.ssm_id);if(t.error)throw t.error;if(!t.isoform)throw"no isoform found for given ssm_id";e.gene=t.isoform;if(e.tracks){const t=e.tracks.find((t=>t.dslabel==e.mds3_ssm2canonicalisoform.dslabel));if(t){t.hlssmid=e.mds3_ssm2canonicalisoform.ssm_id}}}if(e.gene){eu(e,t);return true}return false}async function Xd(e,t){if(!e.genome){t.error0("missing genome for mdssamplescatterplot");return}const n=t.genomes[e.genome];if(!n){t.error0("invalid genome for mdssamplescatterplot");return}e.genome=n;if(e.dataset){e.mds=n.datasets[e.dataset];if(!e.mds){t.error0("invalid dataset for mdssamplescatterplot");return}e.dslabel=e.dataset;delete e.dataset;if(e.mds.mdsIsUninitiated){const t=await Vl(`getDataset?genome=${e.genome.name}&dsname=${e.dslabel}`);if(t.error)throw t.error;if(!t.ds)throw"ds missing";Object.assign(e.mds,t.ds);delete e.mds.mdsIsUninitiated}}else if(e.analysisdata);else if(e.analysisdata_file){try{const t=await Fl("textfile",{file:e.analysisdata_file});if(t.error)throw tmp.error;else if(t.text)e.analysisdata=JSON.parse(t.text)}catch(e){t.error0(e);return}}else{t.error0("neither .dataset or .analysisdata is given");return}import("./mds.samplescatterplot-5a4ee6b6.js").then((n=>{n.init(e,t.holder0,t.debugmode)}))}function Wd(e,t){if(!e.genome){t.error0("missing genome for mdssurvivalplot");return}const n=t.genomes[e.genome];if(!n){t.error0("invalid genome for mdssurvivalplot");return}e.genome=n;if(!e.dataset){t.error0("missing dataset for mdssurvivalplot");return}e.mds=n.datasets[e.dataset];if(!e.mds){t.error0("invalid dataset for mdssurvivalplot");return}delete e.dataset;if(e.plotlist){for(const t of e.plotlist){t.renderplot=1}}import("./mds.survivalplot-b04947ee.js").then((n=>{n.init(e,t.holder0,t.debugmode)}))}function Zd(e,t){if(!e.genome){t.error0("missing genome for fimo");return}const n=t.genomes[e.genome];if(!n){t.error0("invalid genome for fimo");return}e.genome=n;e.div=t.holder0;import("./mds.fimo-929b9e65.js").then((t=>{t.init(e)}))}function Kd(e,t){if(!e.genome){t.error0("missing genome for hic");return}e.genome=t.genomes[e.genome];if(!e.genome){t.error0("invalid genome for hic");return}if(!e.file){t.error0("missing file for hic");return}e.hostURL=t.hostURL;e.holder=t.holder0;import("./HicApp-fe8682af.js").then((async n=>{await n.hicInit(e,t.debugmode)}))}function Qd(e,t){if(!e.genome){t.error0("missing genome for launching samplematrix");return}e.genome=t.genomes[e.genome];if(!e.genome){t.error0("invalid genome for samplematrix");return}e.hostURL=t.hostURL;e.holder=t.holder0;e.debugmode=t.debugmode;import("./samplematrix-2bb2480b.js").then((t=>{new t.Samplematrix(e)}))}async function eu(e,t){if(!e.genome){t.error0("Cannot embed: must specify reference genome");return}if(e.tracks){for(const t of e.tracks){if(t.type=="mds3"&&t.dslabel)continue;t.iscustom=true}}if(e.tkjsonfile){if(!e.tracks)e.tracks=[];const t=new Map([["tkjsonfile",e.tkjsonfile]]);const n=await qd(t,genomeobj);for(const t of n){e.tracks.push(t)}}const n={jwt:e.jwt,hostURL:t.hostURL,query:e.gene,genome:t.genomes[e.genome],holder:t.holder0,variantPageCall_snv:t.variantPageCall_snv,samplecart:t.samplecart,debugmode:t.debugmode,datasetqueries:e.datasetqueries,mset:e.mset,tklst:e.tracks,gmmode:e.gmmode,mclassOverride:e.mclassOverride,hide_dsHandles:e.hide_dsHandles,onloadalltk_always:e.onloadalltk_always};if(e.dataset){n.dataset=e.dataset.split(",");n.legacyDsFilter=e.legacyDsFilter;if(e.hidedatasetexpression){n.hidedatasetexpression=true}}if(e.hidegenecontrol){n.hidegenecontrol=true}if(e.hidegenelegend){n.hidegenelegend=true}let r=null;if(e.hlaachange){r=new Map;if(Array.isArray(e.hlaachange)){for(const t of e.hlaachange){if(t.name){r.set(t.name,t)}}}else{for(const t of e.hlaachange.split(",")){r.set(t,false)}}if(r.size){n.hlaachange=r}}if(e.hlvariants){n.hlvariants=e.hlvariants}await kd(n)}async function tu(e,t){if(!e.genome){t.error0("Cannot embed: must specify reference genome");return}const n=t.genomes[e.genome];if(!n){t.error0("Invalid genome: "+e.genome);return}if(e.study){Jf(t.genomes,e.study,t.holder0,t.hostURL,e.jwt,true,t)}if(e.studyview);if(e.tracks){for(const n of e.tracks){if(n.type==vc.mds3&&n.dslabel)continue;if(n.mdsjsonfile||n.mdsjsonurl){try{const t=await Md(n.mdsjsonfile,n.mdsjsonurl);e.tracks=e.tracks.filter((e=>e!=n));e.tracks.push(...t)}catch(e){vd(t.holder0,e)}}n.iscustom=true}}if(e.tkjsonfile){if(!e.tracks)e.tracks=[];const t=new Map([["tkjsonfile",e.tkjsonfile]]);const r=await qd(t,n);for(const t of r){e.tracks.push(t)}}const r={genome:n,hostURL:t.hostURL,jwt:e.jwt,holder:t.holder0,nativetracks:e.nativetracks,tklst:e.tracks,debugmode:t.debugmode,legendimg:e.legendimg};if(e.width){const n=Number.parseInt(e.width);if(Number.isNaN(n))return t.error0("browser width must be integer");r.width=n}if(e.subpanels){if(!Array.isArray(e.subpanels))return t.error0("subpanels is not array");const n=[];for(const r of e.subpanels){if(!r.chr){t.error0("missing chr in one subpanel");continue}if(!r.start||!r.stop){t.error0("missing start or stop in one subpanel");continue}if(!r.width){r.width=400}if(!r.leftpad){r.leftpad=5}n.push(r)}if(n.length){r.subpanels=n}}if(e.nobox){r.nobox=true}else{r.dogtag=e.dogtag||e.genome}if(e.chr&&Number.isInteger(e.start)){r.chr=e.chr;r.start=e.start;r.stop=Number.isInteger(e.stop)?e.stop:e.start+1}else if(e.position){const t=Pf(e.position,n);if(t){r.chr=t.chr;r.start=t.start;r.stop=t.stop}}else if(e.positionbygene){try{const t=await lf(e.genome,e.positionbygene);if(t&&t[0]){const e=t[0];r.chr=e.chr;r.start=e.start;r.stop=e.stop}}catch(e){t.error0(e)}}if(!r.chr){r.chr=n.defaultcoord.chr;r.start=n.defaultcoord.start;r.stop=n.defaultcoord.stop}if(e.datasetqueries){r.datasetqueries=e.datasetqueries}if(e.hlregions){const t=[];for(const r of e.hlregions){const e=Pf(r,n,true);if(e)t.push(e)}if(t.length)r.hlregions=t}const o=Ud();if(o){if(o.has("position")){const e=Pf(o.get("position"),n);if(e){r.chr=e.chr;r.start=e.start;r.stop=e.stop}}if(o.has("hlregion")){const e=[];for(const t of o.get("hlregion").split(",")){const r=Pf(t,n,true);if(r){e.push(r)}}if(e.length){r.hlregions=e}}if(o.has("bedgraphdotfile")){if(!r.tklst)r.tklst=[];const e=o.get("bedgraphdotfile").split(",");for(let t=0;t<e.length;t+=2){if(e[t]&&e[t+1]){r.tklst.push({type:vc.bedgraphdot,name:e[t],file:e[t+1]})}}}}return import("./block-2f22e7fd.js").then((function(e){return e.c})).then((e=>{t.block=new e.Block(r);return t}))}function nu(e,t){if(e.fusioneditor.uionly){const[n,r,o,i,s]=td(t.holder0,t.genomes);import("./svmr-89b80ea2.js").then((a=>{a.svmrui([null,n,r,o,i,s],t.genomes,t.hostURL,e.jwt)}));return}const n=t.genomes[e.genome];if(!n){t.error0("Invalid genome: "+e.genome);return}import("./svmr-89b80ea2.js").then((r=>{r.svmrparseinput(e.fusioneditor,t.error0,n,t.holder0,t.hostURL,e.jwt)}))}async function ru(e,t){const n=await import("./selectGenomeWithTklst-71344af2.js");await n.init(e,t.holder0,t.genomes)}async function ou(e,t){const n=await import("./lollipop-40c4c5cb.js");return await n.init(e,t.holder0,t.genomes)}async function iu(e,t){const n=await import("./oncomatrix-c29e6de9.js");return await n.init(e,t.holder0,t.genomes)}async function su(e,t){const n=await import("./geneExpClustering-a2cf1bb9.js");return await n.init(e,t.holder0,t.genomes)}async function au(e,t){const n=await import("./singlecell-281a74a6.js");return await n.init(e,t.holder0,t.genomes)}async function lu(e,t){const n=await import("./maf-10526648.js");return await n.gdcMAFui({holder:t.holder0,filter0:e.filter0,callbacks:e.callbacks||{},debugmode:e.debugmode})}function cu(e,t){return import("./bam-4e0df8b6.js").then((n=>n.bamsliceui({genomes:t.genomes,holder:t.holder0,hideTokenInput:e.gdcbamslice.hideTokenInput,callbacks:e.gdcbamslice.callbacks||{},filter0:e.filter0,stream2download:e.gdcbamslice.stream2download,inputValue:e.gdcbamslice.inputValue})))}function fu(e,t){if(e.mavolcanoplot.uionly){import("./mavb-0d28dd97.js").then((n=>{n.mavbui(t.genomes,t.hostURL,e.jwt,t.holder0,t.sandbox_header)}));return}const n=t.genomes[e.genome];if(!n){t.error0("Invalid genome: "+e.genome);return}e.mavolcanoplot.hostURL=t.hostURL;e.mavolcanoplot.genome=n;import("./mavb-0d28dd97.js").then((n=>{n.mavbparseinput(e.mavolcanoplot,t.error0,t.holder0,e.jwt)}))}function du(e,t){if(e.twodmaf.uionly){import("./2dmaf-7dddba15.js").then((e=>{e.d2mafui(t.genomes,t.holder0)}));return}const n=t.genomes[e.genome];if(!n){t.error0("Invalid genome: "+e.genome);return}e.twodmaf.hostURL=t.hostURL;e.twodmaf.genome=n;import("./2dmaf-7dddba15.js").then((n=>{n.d2mafparseinput(e.twodmaf,t.holder0)}))}function uu(e,t){if(e.maftimeline.uionly){import("./maftimeline-a77349ad.js").then((e=>{e.default(t.genomes,t.holder0,t.sandbox_header)}))}}function pu(e,t){if(e.junctionbymatrix.uionly){import("./block.tk.junction.textmatrixui-15bd752c.js").then((n=>{n.default(t.genomes,t.hostURL,e.jwt,t.holder0)}))}}async function hu(e,t){try{const n=t.genomes[e.genome];if(!n)throw"Invalid genome: "+e.genome;e.genome=n;const r=await import("./singlecell-1c3bee25.js");await r.init(e,t.holder0)}catch(e){t.error0("Error launching single cell viewer: "+e);if(e.stack)console.log(e.stack)}}async function mu(e,t){if(e.tkui=="bigwig"){const e=await import("./block.tk.bigwig.ui-fb6401ee.js");e.bigwigUI(t.genomes,t.holder)}if(e.tkui=="databrowser"){const e=await import("./databrowser.ui-8ace51c3.js");e.init_databrowserUI(t.holder,t.debugmode)}if(e.tkui=="genefusion"){const e=await import("./genefusion.ui-e219424a.js");e.init_geneFusionUI(t.holder,t.genomes,t.debugmode)}if(e.tkui=="disco"){const e=await import("./Disco.UI-ea58ee03.js");e.init_discoplotUI(t.holder,t.genomes,t.debugmode)}}async function gu(e,t){if(!e.holder)e.holder=t.holder0;import("./app-5aa892cb.js").then((t=>{t.appInit(e)}))}async function bu(e,t){try{const n=t.genomes[e.genome];if(!n)throw"Invalid genome: "+e.genome;const r=await import("./fusion.parse-7e3a6071.js");const o=await r.parseFusion({line:e.genefusion.text,genome:n,positionType:e.genefusion.positionType});await yu(o.pairlst[0].a,n);await yu(o.pairlst[0].b,n);const i=await import("./svgraph-76e34d5e.js");i.default({pairlst:o.pairlst,genome:n,holder:t.holder})}catch(e){t.error0(e)}}async function yu(e,t){const n=await Vl("genelookup",{body:{genome:t.name,input:e.isoform,deep:1}});if(n.error)throw n.error;if(!Array.isArray(n.gmlst))throw"gmlst not array";const r=n.gmlst.find((t=>t.isoform==e.isoform));if(!r)throw"no match to isoform";e.chr=r.chr;e.name=r.name;e.gm={isoform:r.isoform}}async function vu(e,t){const n=e.mass;if("debugmode"in t)n.debug=t.debugmode;if(!n.holder)n.holder=t.holder0;if(n.state){if(n.state.genome){n.genome=t.genomes[n.state.genome]}else if(n.state?.vocab?.genome){n.genome=t.genomes[n.state.vocab.genome]}}n.getDatasetAccessToken=e.getDatasetAccessToken;n.addLoginCallback=e.addLoginCallback;const r=sessionStorage.getItem("hostURL");if(window.opener&&r!=window.location.origin){n.embeddedSessionState=JSON.parse(sessionStorage.getItem("embeddedSessionState")||`{}`);const e=t=>{if(t.origin!=window.location.origin&&t.origin!==r)return;if(t.data.state){window.removeEventListener("message",e);Object.assign(n.embeddedSessionState,t.data.state);sessionStorage.setItem("embeddedSessionState",JSON.stringify(n.embeddedSessionState))}};window.addEventListener("message",e,false);setTimeout((()=>window.removeEventListener("message",e)),1e3);let t;try{if(window.opener.origin){t=window.opener.origin}else{t=r}}catch(e){t=r}try{window.opener.postMessage("getActiveMassSession",t)}catch(e){console.log(e)}}const o=await import("./app-d9433820.js");return await o.appInit(n)}function wu(e){e.tkset=[];e.isoformcache=new Map;e.junctionframecache=new Map;e.isoformmatch=(t,n,r)=>{if(!t)return null;const o=t.toUpperCase();if(!e.isoformcache.has(o))return null;const i=e.isoformcache.get(o);if(i.length==1)return i[0];if(!n){console.log("no chr provided for matching with "+o);return i[0]}let s=null;for(const e of i){if(e.chr.toUpperCase()==n.toUpperCase()&&e.start<=r&&e.stop>=r){s=e}}if(s)return s;for(const e of i){if(e.chr.toUpperCase()==n.toUpperCase())return e}return null};e.chrlookup={};for(const t in e.majorchr){e.chrlookup[t.toUpperCase()]={name:t,len:e.majorchr[t],major:true}}if(e.minorchr){for(const t in e.minorchr){e.chrlookup[t.toUpperCase()]={name:t,len:e.minorchr[t]}}}if(!e.tracks){e.tracks=[]}for(const t of e.tracks){t.tkid=Math.random().toString()}for(const t in e.datasets){const n=e.datasets[t];if(n.isMds);else if(n.isMds3){if(!n.label)return"ds.label missing"}}return null}async function _u(e,t){if(!e.genome)throw'"genome" parameter missing';const n=t.genomes[e.genome];if(!n)throw"unknown genome";if(e.disco.sample_id){const r=(await import("./FilterRxComp-cb149666.js").then((function(e){return e.k}))).vocabInit({state:{genome:n.name,dslabel:e.disco.dslabel}});const o=await r.getTermdbConfig();await(await import("./plot.disco-ccdf741c.js")).default(o,e.disco.dslabel,{sample_id:e.disco.sample_id},t.holder,n);return}else{const r=await import("./launch.adhoc-98dc0421.js");return await r.launch(e.disco,n,t.holder0)}}export{Wn as $,ba as A,Zs as B,Qa as C,sc as D,Il as E,El as F,ec as G,zd as H,Hr as I,$d as J,bl as K,Qf as L,oc as M,Es as N,_a as O,Sl as P,Us as Q,Ds as R,Ws as S,Ts as T,Rc as U,Rd as V,$r as W,Nl as X,yl as Y,Ac as Z,Yr as _,sf as a,Mc as a$,zo as a0,yr as a1,br as a2,Nt as a3,xt as a4,Cr as a5,Is as a6,Dl as a7,St as a8,ac as a9,za as aA,Hc as aB,Xc as aC,Pc as aD,qc as aE,wc as aF,qf as aG,Sc as aH,zs as aI,Gf as aJ,Ra as aK,_s as aL,Lf as aM,lc as aN,Pa as aO,Hs as aP,Ys as aQ,Js as aR,yd as aS,bd as aT,Rf as aU,Jc as aV,bc as aW,xd as aX,it as aY,Tc as aZ,Rs as a_,Vf as aa,$c as ab,kc as ac,vc as ad,La as ae,Cs as af,Cc as ag,cc as ah,_d as ai,Da as aj,Ps as ak,Sa as al,Aa as am,Qs as an,Ga as ao,Gs as ap,Xs as aq,Vs as ar,Bs as as,qs as at,va as au,ga as av,pa as aw,ha as ax,ma as ay,ia as az,Vl as b,tf as b$,Ic as b0,Ec as b1,Ta as b2,Oc as b3,Lc as b4,Bc as b5,Zc as b6,Kc as b7,qa as b8,uc as b9,mc as bA,ho as bB,ca as bC,da as bD,fa as bE,ra as bF,oa as bG,Uc as bH,cf as bI,ad as bJ,ld as bK,Rn as bL,sl as bM,$n as bN,el as bO,tl as bP,nl as bQ,rl as bR,ol as bS,il as bT,Vc as bU,$s as bV,$a as bW,Fs as bX,Fc as bY,rf as bZ,al as b_,dc as ba,Ha as bb,Df as bc,mf as bd,Va as be,Ba as bf,ta as bg,na as bh,la as bi,pc as bj,hc as bk,gc as bl,Dc as bm,td as bn,zc as bo,lt as bp,jt as bq,vr as br,Vr as bs,ur as bt,Ct as bu,Zn as bv,af as bw,lf as bx,Ns as by,_c as bz,Pf as c,Yc as c0,as as c1,Bd as c2,Sd as c3,ot as d,kd as e,ic as f,qd as g,hl as h,dl as i,Nc as j,Wc as k,Ls as l,pl as m,id as n,ul as o,xc as p,Fl as q,Qt as r,e as s,wd as t,Ud as u,nf as v,ef as w,Ff as x,vd as y,Ks as z};
|